Thanks for your interest in the Millennium Project. Here's how to contribute.
- Fork the repository and clone your fork
- Create a branch from
mainfor your changes - Make your changes and ensure tests pass:
cd host && make test - Push your branch and open a pull request
- C89 (
-std=c89) for most host files — no mixed declarations and code - C99 (
-std=c99) only where block-scoped declarations are necessary (simulator, jukebox) - Compile with
-Wall -Wextraand fix all warnings - Avoid unnecessary comments — code should be self-documenting
- Use
snake_casefor functions and variables,UPPER_CASEfor macros and constants
All changes to the host software should pass existing tests:
cd host
make testThis builds and runs both unit tests and scenario tests. If you add new functionality, add corresponding tests:
- Unit tests: Add to
host/tests/unit_tests.c - Scenario tests: Add a
.scenariofile inhost/tests/
- Keep PRs focused on a single issue or feature
- Reference the issue number in the PR description (e.g., "Closes #12")
- Ensure
make testpasses before submitting - Describe what changed and why in the PR body
Open an issue with:
- What you expected to happen
- What actually happened
- Steps to reproduce
- Hardware details if relevant (Pi model, Arduino board, etc.)