35 lines
2.0 KiB
Markdown
35 lines
2.0 KiB
Markdown
|
# 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+](https://thufie.lain.haus/NPL.html) license
|
||
|
2. You *must* follow the [Code of Conduct](conduct.md)
|
||
|
3. You should follow the [Design Goals](/development/design/index.md) and [Best Practices](#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](https://mercury.the-system.eu.org/contribute/) 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](https://git.lavender.software/mercury), courtesy of [Lavender Software](https://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](https://mercury.the-system.eu.org) is available there as well.
|