book/src/development/README.md

2.0 KiB

Development

If you're wanting to help develop Mercury, you've come to the right place! Again, right now we're a heavy work-in-progress. But eventually this will be useful!

Contributor Agreements

By submitting resources to this project (code, art, writing, etc.), you must agree to the following terms:

  1. Resources will be licensed under the CNPLv7+ license
  2. You must follow the Code of Conduct
  3. You should follow the Design Goals and Best Practices when possible

Otherwise, feel free to start contributing!

Best Practices

These are various "best practices" for code written for the Mercury project. They should be followed when reasonable, to the best of your ability/understanding. Feel free to contact a maintainer with questions!

  • No compromises will be made for compatibility. If there is a better, if unusual, way to do things, it should be done that way.
  • Everything must be fully accessible. Everything else can be sacrificed for this.
  • unsafe code should be avoided when possible.
  • Everything should be documented as it is written.
  • Nesting should be avoided as much as possible.
  • cargo fmt must be used before each commit.
  • If something can be excluded from the main kernel, it should be. It's a microkernel!
  • While binary size should be kept down and optimized, it should not be done at the cost of performance.
  • Features should be opt-in rather than opt-out.
  • Releases should ideally contain no compiler or clippy warnings.

Source Code

All of the source code for Mercury is on a self-hosted Gitea, courtesy of Lavender Software. Sign up there, and contact one of the maintainers to get access to the repositories.

The source for this site, and our website is available there as well.