Thanks for your interest in MAGDA! This document covers how to contribute effectively.
All contributions require signing our Contributor License Agreement (CLA). This grants the maintainer the right to use your contributions under any license, including commercial licenses. The CLA bot will prompt you to sign when you open your first pull request.
Open an issue first. Don't spend time on a PR that might get rejected. Describe what you want to change and why. Wait for a green light before writing code. PRs for features that have been discussed and declined will be closed immediately.
- Bug fixes with a clear reproduction case
- Documentation improvements
- Performance improvements with benchmarks
- Small, focused features that have been discussed and approved via an issue
- Unsolicited large features or integrations
- Changes that add new third-party service dependencies
- PRs that rewrite or restructure existing code without prior discussion
- AI/LLM provider integrations (we maintain these ourselves)
- CMake 3.24+
- C++20 compiler (Clang 15+ or GCC 13+)
- macOS: Xcode Command Line Tools
- Linux: ALSA and X11 development headers
git clone --recursive https://github.com/Conceptual-Machines/magda-core.git
cd magda-core
make debug # Debug build
make release # Release buildmake test- One concern per PR. Don't mix bug fixes with refactoring or features.
- Keep it small. Large PRs are hard to review and will take longer to merge.
- Match the existing style. We use
clang-format— the pre-commit hook enforces this. - Write a clear description. Explain what changed and why. Include before/after if relevant.
- Don't break the build. Make sure
make debugandmake releaseboth pass before pushing.
feat/<description>for featuresfix/<description>for bug fixesdocs/<description>for documentation
- C++20
clang-formatwith the project's.clang-formatconfig- No raw
new/delete— use smart pointers - No blocking operations on the audio thread
By contributing, you agree that your contributions will be licensed under the GNU General Public License v3.0.