Contributing to mesa-frames π¶
Thank you for taking the time to contribute to mesa-frames! Since the project is still in its early stages, we warmly welcome contributions that will help shape its development. π
For a more general and comprehensive guide, please refer to mesa's main contribution guidelines. π
Project Roadmap πΊοΈ¶
Before contributing, we recommend reviewing our roadmap file to understand the project's current priorities, upcoming features, and long-term vision. This will help ensure your contributions align with the project's direction.
How to Contribute π‘¶
1. Prerequisite Installations βοΈ¶
Before you begin contributing, ensure that you have the necessary tools installed:
- Install Python (at least the version specified in
requires-pythonofpyproject.toml). π
-- We recommend using a virtual environment manager like:
- [Astral's UV](https://docs.astral.sh/uv/#installation) π
- [Hatch](https://hatch.pypa.io/latest/install/) ποΈ
-
Install pre-commit to enforce code quality standards before pushing changes:
- More about pre-commit hooks
-- If using VS Code, consider installing these extensions to automatically enforce formatting:
- [Ruff](https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff) β Python linting & formatting πΎ
- [Markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) β Markdown linting (for documentation) βοΈ
- [Git Hooks](https://marketplace.visualstudio.com/items?itemName=lakshmikanthayyadevara.githooks) β Automatically runs & visualizes pre-commit hooks π
2. Contribution Process π οΈ¶
Step 1: Choose an Issue π¶
- Pick an existing issue or create a new one if necessary.
- Ensure that your contribution aligns with the project's goals.
Step 2: Set Up Your Local Repository π»¶
- Fork the repository on GitHub.
- Clone your fork to your local machine:
- Create a new branch with a descriptive name:
- Prevent merge commit clutter by setting rebase mode:
Step 3: Install Dependencies π¦¶
We manage the development environment with uv:
This creates .venv/ and installs mesa-frames with the development extras.
Step 4: Make and Commit Changes ⨶
- Make necessary edits and save the code.
- Add and commit your changes with meaningful commit messages:
- Keep commits small and focused on a single logical change.
- Follow Tim Popeβs commit message guidelines. π
Step 5: Code Quality and Testing β ¶
- Run pre-commit hooks to enforce code quality standards:
- Run tests to ensure your contribution does not break functionality:
-- Optional: Runtime Type Checking (beartype) π
You can enable stricter runtime validation of function arguments/returns with beartype during local development:
Quick facts:
- Automatically enabled in: Hatch dev env (
hatch shell dev), VS Code debugger, and VS Code test runs. - Enable manually by exporting
MESA_FRAMES_RUNTIME_TYPECHECKING=1(any of 1/true/yes). - Use only for development/debugging; adds overheadβdisable for performance measurements or large simulations.
- Unset with your shell (e.g.
unset/Remove-Item Env:depending on shell) to turn it off.
Example for a one-off test run:
Step 6: Documentation Updates (If Needed) π¶
- If you add a new feature, update the documentation accordingly.
- We use MKDocs for documentation:
- Modify or create markdown files in the
docs/folder. -
Preview your changes by running:
-
Open
http://127.0.0.1:8000in your browser to verify documentation updates.
Step 7: Push Changes and Open a Pull Request (PR) π¶
- Push your changes to your fork:
- Open a pull request (PR):
- Follow GitHubβs PR guide.
- Link the issue you are solving in the PR description.
Thank you again for your contribution! π