Thank you for your interest in contributing to AOF! We welcome contributions from everyone. This document provides guidelines and instructions for contributing.
We are committed to providing a welcoming and inclusive environment for all contributors. Please be respectful and constructive in all interactions.
- Report Bugs: Use GitHub Issues to report bugs with clear descriptions
- Suggest Features: Share your ideas for new features via GitHub Discussions
- Improve Documentation: Fix typos, add examples, or clarify existing docs
- Submit Code: Fix bugs, add features, or improve performance
- Testing: Help test new features and report edge cases
- Rust 1.75 or later
- Cargo
- Git
- Make (optional, for convenience)
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/aof.git cd aof -
Add upstream remote:
git remote add upstream https://github.com/agenticdevops/aof.git
-
Create a development branch:
git checkout -b feature/your-feature-name
-
Build the project:
cargo build
-
Run tests:
cargo test
- Check if an issue exists for what you want to work on
- Discuss significant changes in an issue or discussion first
- Keep changes focused and manageable in scope
- Write tests for new functionality
- Follow Rust conventions and use
cargo fmt - Keep commits atomic and with clear messages
- Reference related issues in commit messages
- Update documentation if you changed functionality
- Run tests:
cargo test - Check formatting:
cargo fmt - Lint your code:
cargo clippy - Update CHANGELOG if applicable
- Push your branch to your fork
- Create a Pull Request against the
devbranch (not main) - Provide a clear description of changes
- Reference related issues
- Ensure CI checks pass
- Request review from maintainers
- Title: Clear, descriptive, follows conventional commits
- Examples:
feat: add interactive REPL mode,fix: correct binary naming
- Examples:
- Description: Explain what changed and why
- Testing: Show how you tested the changes
- Documentation: Update docs if behavior changed
We follow Conventional Commits format:
type(scope): subject
body
footer
Types: feat, fix, docs, style, refactor, test, chore
Examples:
feat(cli): add interactive REPL modefix(install): correct binary download URLdocs: update getting started guide
- Run
cargo fmtto format code - Run
cargo clippyto check for common mistakes - Follow Rust naming conventions
- Add comments for complex logic
- Keep functions focused and modular
- Write tests for new features
- Ensure existing tests pass
- Test edge cases
- Include integration tests where appropriate
# Run all tests
cargo test
# Run tests with output
cargo test -- --nocapture
# Run specific test
cargo test test_name- Update relevant
.mdfiles indocusaurus-site/docs/ - Add examples where helpful
- Keep documentation up-to-date with code changes
- Use clear, accessible language
Releases follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backwards compatible)
- PATCH: Bug fixes (backwards compatible)
The maintainers handle the release process, including version bumping and publishing.
- Questions: Ask in GitHub Discussions
- Bug Reports: Use GitHub Issues with details
- Chat: Join our community discussions
- Documentation: Check the docs at https://aof.sh
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.
Feel free to reach out:
- Open an issue with questions
- Start a discussion in GitHub Discussions
- Check existing documentation
Thank you for contributing! 🎉