Follow the typical Github contribution flow:
- Create an issue about what you want to work on so we can discuss it before you spend a lot of time working on it.
- Fork the repo and create a branch. There's no strict naming scheme on branches.
- Do the work.
- Open a pull request.
Testing: Use cargo test to run the fast unit tests, which finish in under a second. There are also
a few slower integration tests, as well as end-to-end tests that actually run the I405 binaries. To
run these, first do a cargo build to actually generate the I405 debug binaries. Then, use sudo -E cargo test -- --include-ignored --test-threads to run everything. Note that the E2E tests aren't
completely reliable and hence aren't included in CI.
I405-specific policies to be aware of:
- LLM-generated code is permitted if it is clearly marked by a comment. That being said, LLMs were only used to help write tests in the initial I405 implementation, and even then sparingly because LLMs have a tendency to write tests that mirror the implementation. Please carefully read any code generated by an LLM.
- LLM-generated documentation text is NOT permitted. Using LLMs to generate diagrams is permitted, I guess.
- All tests, including E2E tests which you can run as described above, must pass.
- Add tests for important parts of all "pure" behavior. Changes to the "hardware" implementations can be difficult to test (apart from e2e-tests), please describe what you've done to verify your implementation is correct because we don't test the hardware implementations (outside of the end-to-end test).
- I405 is released under the MIT license. By opening a pull request you indicate that you are releasing your contribution under the MIT license also. No copyright assignment is required.