Code of Conduct
Please review and adhere to our Code of Conduct to maintain a respectful and collaborative environment.Our Standards
We value:- Respectfulness - Being considerate of differing opinions and experiences
- Empathy - Showing understanding towards other community members
- Collaboration - Working together constructively
- Professionalism - Maintaining professional conduct in all interactions
- Responsibility - Taking ownership of actions and their impact
Getting Started
Set Up Development Environment
Follow the Building from Source guide to set up your development environment with all necessary dependencies.
Explore the Codebase
Familiarize yourself with the project structure:
node/- Node implementationruntime/- Blockchain runtimepallets/- Custom pallets (dactr, mandate, system, vector)base/- Core utilitiese2e/- End-to-end tests
Find an Issue
Browse open issues to find something to work on, or create a new issue for bugs or feature requests.
Reporting Issues
If you encounter a bug or have a feature request, please create an issue using the appropriate template.Bug Reports
When reporting bugs, include:- Description - Clear description of the issue
- Steps to reproduce - Detailed steps to recreate the bug
- Expected behavior - What should happen
- Actual behavior - What actually happens
- Environment - OS, Rust version, node version
- Logs - Relevant error messages or logs
Feature Requests
When requesting features, include:- Use case - Why this feature is needed
- Proposed solution - How it could be implemented
- Alternatives - Other approaches considered
- Impact - Who would benefit from this feature
Making Changes
Fork and Clone
Fork the Repository
Create a fork of the Avail repository to your GitHub account.
Create a Branch
Create a descriptive branch for your changes:Use clear branch names that describe the change, such as:
feature/add-new-rpc-endpointfix/resolve-memory-leakrefactor/improve-error-handlingdocs/update-installation-guide
Make Your Changes
Implement your changes following our coding standards:Testing Your Changes
Thoroughly test your changes before submitting: See the Testing Guide for detailed information.Code Quality Standards
Formatting
All code must be formatted withrustfmt:
Linting
Code must pass Clippy without warnings:Cargo.toml under [workspace.lints.clippy].
Documentation
Add documentation for:- Public APIs
- Complex logic
- Runtime pallets
- RPC methods
Committing Changes
Commit Messages
Write clear, descriptive commit messages:Commit Guidelines
- Keep commits focused and atomic
- One logical change per commit
- Reference issue numbers when applicable:
Fix #123: Resolve node crash on startup - Provide context in the commit body for complex changes
Submitting a Pull Request
Fill Out PR Template
Complete the pull request template with:
- Type: Feature, Bugfix, Refactor, Documentation, Testing, etc.
- Description: Summarize changes and motivation
- Related Issues: Link to related issues (e.g., “Closes #123”)
- Testing Performed: Describe testing approach
- Checklist: Verify all items are completed
Pull Request Checklist
Before submitting, ensure:- Code is formatted:
cargo fmt - Tests pass:
cargo test --release --workspace - Clippy passes:
cargo clippy - Builds successfully:
cargo build --release - Builds with features:
cargo build --release --features runtime-benchmarks - Self-review completed
- Documentation updated (if needed)
- Commit messages are clear
We prioritize substantial contributions over minor changes. For larger contributions, consider reaching out through Discord to discuss your plans.
Review Process
What to Expect
- Initial Review - A maintainer will review your PR within a few days
- Feedback - You may receive requests for changes or clarifications
- Iteration - Address feedback and push updates
- Approval - Once approved, your PR will be merged
Review Criteria
Reviewers check for:- Code quality and style
- Test coverage
- Performance implications
- Security considerations
- Documentation completeness
- Breaking changes
Types of Contributions
Code Contributions
Features
New functionality, pallets, RPC endpoints, or capabilities
Bug Fixes
Corrections for issues, crashes, or incorrect behavior
Performance
Optimizations and efficiency improvements
Refactoring
Code structure improvements without changing functionality
Non-Code Contributions
Documentation
Guides, API docs, examples, and tutorials
Testing
Additional test coverage and test infrastructure
Issue Triage
Helping categorize and respond to issues
Community Support
Answering questions on Discord and GitHub
Development Workflow
Keeping Your Fork Updated
Regularly sync with the upstream repository:Handling Merge Conflicts
If conflicts arise:Security
For security vulnerabilities:Documentation Contributions
For documentation updates:- Documentation website code: availproject.github.io
- Code documentation: In-line comments and doc comments in this repository
- Wiki: GitHub Wiki
Getting Help
If you need assistance:- Discord - Join our Discord community
- GitHub Discussions - Ask questions in GitHub Discussions
- Documentation - Check the project wiki
Recognition
Contributors are recognized in:- Git commit history
- Release notes
- Community highlights
Additional Resources
Building from Source
Complete guide to building the Avail node
Running Tests
Testing infrastructure and best practices
GitHub Repository
Visit the main repository
Project Wiki
Additional documentation and guides