Thank you for your interest in contributing to the Metaplex Aura Network! This document outlines our development process and guidelines.
We follow the GitFlow branching model for our development process. This provides a robust framework for managing larger projects.
main
- Production-ready code. This branch contains the latest released version.develop
- Main development branch. Features and fixes are merged here before release.
-
Feature Branches
- Branch from:
develop
- Merge back into:
develop
- Naming convention:
feature/description-of-feature
- Example:
feature/add-compression-support
- Branch from:
-
Release Branches
- Branch from:
develop
- Merge back into:
main
anddevelop
- Naming convention:
release/version-number
- Example:
release/1.2.0
- Branch from:
-
Hotfix Branches
- Branch from:
main
- Merge back into:
main
anddevelop
- Naming convention:
hotfix/description
- Example:
hotfix/fix-critical-security-issue
- Branch from:
-
Starting a New Feature
git checkout develop git pull origin develop git checkout -b feature/your-feature-name
-
Working on Your Feature
- Make your changes
- Commit regularly with meaningful messages
- Keep your branch up to date with develop:
git checkout develop git pull origin develop git checkout feature/your-feature-name git rebase develop
-
Completing a Feature
- Ensure all tests pass
- Create a pull request to merge into
develop
- Request code review
- Address review comments
- Merge only after approval
-
Creating a Release
git checkout develop git pull origin develop git checkout -b release/x.y.z # Make release-specific changes (version numbers, etc.)
- Test thoroughly
- Merge into
main
anddevelop
- Tag the release in
main
-
Hotfix Process
git checkout main git pull origin main git checkout -b hotfix/issue-description
- Fix the issue
- Merge into both
main
anddevelop
- Tag the new version in
main
We follow Conventional Commits specification for our commit messages. This leads to more readable messages that are easy to follow when looking through the project history and enables automatic generation of changelogs.
Each commit message should be structured as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Common types:
feat
: A new featurefix
: A bug fixdocs
: Documentation only changesstyle
: Changes that do not affect the meaning of the coderefactor
: A code change that neither fixes a bug nor adds a featureperf
: A code change that improves performancetest
: Adding missing tests or correcting existing testschore
: Changes to the build process or auxiliary tools
Example:
feat(api): add pagination to assets endpoint
- Implement cursor-based pagination
- Add limit parameter
- Update API documentation
Closes #123
Additionally, follow these guidelines for the message content:
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
Example:
Add compression support for NFT metadata
- Implement ZSTD compression for metadata storage
- Add decompression utilities
- Update tests to cover compression/decompression
- Fixes #123
All branches must pass our CI pipeline before being merged. The CI pipeline includes:
- Code style checks
- Unit tests
- Integration tests
- Build verification
CI is automatically triggered for:
- All pull requests targeting
develop
ormain
- Release branches
- Hotfix branches
Note: Direct pushes to develop
and main
branches are prohibited. All changes must go through pull requests.
- Update the README.md or relevant documentation with details of changes if needed
- Add tests for new functionality
- Ensure the test suite passes
- Get approval from at least two code reviewers
- Update your branch with the latest
develop
before merging - All CI checks must pass before merging
When reviewing code:
- Check for technical correctness
- Verify test coverage
- Validate documentation updates
- Consider performance implications
- Look for security considerations
- Write clean, maintainable, and testable code
- Follow the existing code style and patterns
- Document new features or significant changes
- Include tests for new functionality
- Keep pull requests focused and reasonably sized
Feel free to reach out to the maintainers or open an issue if you have questions about the contribution process.