Thank you for your interest in helping Morph! ❤️
🔍 If you're looking for Morph's documentation, you can find it here.
This guide is for people who want to contribute code to Morph. There are also other ways to contribute, such as reporting bugs, creating feature requests, helping other users in our discussion board, Stack Overflow, etc., or just being an awesome member of the community!
Open issues for bugs, docs improvements or errors.
If your problem relates to sensitive or private information, please don't post any of your data in an issue. We suggest creating a small test dataset that can reproduce the problem without revealing any private info, and posting that data in the issue. If that's not possible, please reach out to morph@queue-inc.com.
To request a feature, a new data source, or ask for help, create a GitHub discussion.
- Python v3.9.0+
- Node.js v18+
Morph uses Poetry for Python dependency management. In the root of the repository, run the following command to install the dependencies for the Python code.
poetry install
pre-commit
takes care of running all code-checks for formatting and linting. By the following command, pre-commit
will be installed and ensure your changes are formatted and linted automatically when you commit your changes.
pre-commit install
Run the following command to install the package in editable mode so you can make changes to the code and test them immediately.
pip install --editable .'[morph-data]'
Pull requests are welcome! We review pull requests as they are submitted and will reach out to you with any questions or comments.
Follow these steps to submit a pull request for your changes:
- Create a fork of the morph repo
- Before committing your changes, please run
pre-commit install
to automatically format your code and help prevent linting errors. - Commit your changes to your fork
- Test your changes to make sure all results are as expected
- Open a pull request againt the develop branch of the morph repo
This project follows a GitFlow-inspired branching model adapted to accommodate weekly patch releases and monthly minor releases. All new branches are created by the maintainers.
- Weekly patch releases (patch): Small, frequent updates to fix critical bugs or minor issues.
- Monthly minor releases (minor): Bundles of new features and improvements.
Our adaptions to GitFlow:
develop
holds the code for the next monthly minor release.- Weekly patch branches (e.g.,
release/v0.0.x
) are branched off frommain
to quickly address bugs. - Release branches for the monthly minor (e.g.,
release/v0.1.0
) are branched offdevelop
when we finalize which features/fixes go into that release. By the time it merges intomain
, the release branch should be tested and ready to be released.
- Contains: The production-ready code of the latest official release.
- Weekly patches (urgent bug fixes) branch off here.
- Merged into: When a release (patch or minor) is finalized, it merges back into
main
with an associated tag.
- Contains: The next monthly minor release in active development.
- Merged into: Feature branches get merged back into
develop
. - Branched from: A release branch (e.g.,
release/v0.1.0
) is created fromdevelop
when we’re ready for final QA and testing.
We have two kinds of release branches:
-
Monthly Minor Release
- Named like
release/v0.1.0
. - Created from
develop
. - Final testing/bugfixes happen here.
- Once ready, merged into
main
(release goes live), then back intodevelop
. - If you find any bugs during testing, please create a new PR to merge into release branch to fix the bug.
- Named like
-
Weekly Patch Release
- Named like
release/v0.0.x
. - Created from
main
. - Used to quickly fix bugs in the currently released version.
- Once merged into
main
, also merged intodevelop
to ensure the patch carries forward.
- Named like
These branches are where developers actually write and commit their changes. All of them branch off from develop
or release/<version>
, and once the work is complete, they are merged back into them via pull requests. Each branch type automatically triggers the creation of release notes from the PR, so please adhere to these naming conventions:
-
feature/<name>
- Purpose: Introduce a completely new functionality or a significant feature.
- Examples:
feature/user-auth
,feature/payment-integration
.
-
fix/<name>
- Purpose: Resolve bugs or errors discovered in the codebase.
- Examples:
fix/login-crash
,fix/cart-update-error
.
-
enhancement/<name>
- Purpose: Improve or extend existing functionality without introducing entirely new features.
- Examples:
enhancement/profile-page-ui
,enhancement/api-responses
.
-
optimization/<name>
- Purpose: Improve performance, memory usage, or efficiency of existing code without changing functionality.
- Examples:
optimization/query-speed
,optimization/asset-loading
.
-
refactor/<name>
- Purpose: Restructure or reorganize code (improving readability, maintainability, etc.) without changing external behavior.
- Examples:
refactor/order-service
,refactor/database-layer
.
-
chore/<name>
- Purpose: Maintenance tasks, project cleanup, and changes that do not impact the code’s behavior (e.g., updating dependencies, adjusting configurations).
- Examples:
chore/dependency-updates
,chore/ci-setup
.
If you're passionate about what we're building at Morph and want to join our team, reach out to us at morph@queue-inc.com.