Thank you for your interest in contributing to finch-buck2! This project aims to make CMake to Buck2 migration seamless and accessible to everyone, and we welcome contributions from developers of all backgrounds and experience levels.
We appreciate all forms of contribution:
- 🐛 Bug Reports - Help us identify and fix issues
- 💡 Feature Requests - Suggest new capabilities or improvements
- 📝 Documentation - Improve guides, examples, and API docs
- 🧪 Testing - Test migrations with different project configurations
- 💻 Code - Implement new features or fix bugs
- 🎯 Migration Examples - Share real-world migration cases
- 🗣️ Community - Help others in discussions and issues
- C++17 compatible compiler (GCC 7+, Clang 5+, MSVC 2017+)
- CMake 3.15+ (for building the project itself)
- Buck2 (for testing migrations)
- Git for version control
-
Fork and Clone
git clone https://github.com/YOUR_USERNAME/finch-buck2.git cd finch-buck2 -
Build the Project
mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Debug make -j$(nproc)
-
Run Tests
ctest --verbose
finch-buck2/
├── include/finch/ # Public API headers
├── src/ # Implementation (.cpp files)
├── test/ # Unit and integration tests
├── examples/ # Example migrations and test cases
├── docs/ # Documentation and guides
├── tools/ # Utility scripts
└── .github/ # GitHub templates and workflows
We follow modern C++17 best practices:
- Formatting: Use
clang-formatwith the project's.clang-formatconfig - Naming:
- Classes:
PascalCase(e.g.,MigrationEngine) - Functions/variables:
snake_case(e.g.,parse_cmake_file) - Constants:
UPPER_SNAKE_CASE(e.g.,MAX_DEPTH)
- Classes:
- Headers: Use
#pragma oncefor header guards - Includes: Group system headers, then third-party, then project headers
- Documentation: Use Doxygen-style comments for public APIs
- Write unit tests for new functionality
- Ensure all tests pass before submitting
- Keep functions focused and single-purpose
- Use RAII and smart pointers appropriately
- Handle errors gracefully with clear error messages
Use conventional commit format:
type(scope): brief description
Detailed explanation if needed
Fixes #123
Types:
feat: New featurefix: Bug fixdocs: Documentation changestest: Adding or modifying testsrefactor: Code refactoringperf: Performance improvementschore: Maintenance tasks
Examples:
feat(parser): add support for CMake target_link_libraries
fix(migration): handle CPM dependencies with version ranges
docs(readme): update installation instructions
- Create a feature branch from
main - Write tests for your changes
- Update documentation if needed
- Run the full test suite and ensure it passes
- Format your code with
clang-format
- Tests added/updated and passing
- Documentation updated if needed
- Code follows project style guidelines
- Commit messages follow conventional format
- PR description explains the change and motivation
- Related issues are referenced
- Automated checks must pass (CI, tests, formatting)
- Code review by maintainers
- Integration testing with various CMake projects
- Merge once approved
When reporting bugs, please include:
- finch-buck2 version you're using
- Operating system and version
- CMake version of the source project
- Buck2 version for the target
- Minimal reproduction case (CMakeLists.txt snippet)
- Expected vs actual behavior
- Error messages or logs
For feature requests, please describe:
- Use case: What problem does this solve?
- Proposed solution: How should it work?
- Alternatives considered: Other approaches you've thought about
- Examples: Concrete examples of the feature in use
If finch-buck2 fails to migrate your project:
- Share the CMakeLists.txt (or simplified version)
- Describe the build setup (dependencies, special configurations)
- Include error output from finch-buck2
- Expected Buck2 output if you know what it should be
We are committed to providing a welcoming and inclusive environment for all contributors. Please be respectful and constructive in all interactions.
- Be respectful of differing viewpoints and experiences
- Be collaborative and help others learn and grow
- Be inclusive and welcoming to newcomers
- Focus on what's best for the community and project
- Harassment, discrimination, or inappropriate language
- Personal attacks or trolling
- Publishing others' private information
- Any conduct that would be inappropriate in a professional setting
- GitHub Discussions - For general questions and ideas
- Issues - For bug reports and feature requests
- Documentation - Check the
docs/directory - Examples - Look in
examples/for usage patterns
Contributors are recognized in our README.md and release notes. We appreciate everyone who helps make finch-buck2 better!
Thank you for contributing to finch-buck2! Together, we're making C++ build system migration easier for everyone. 🐦✨