fedimovies/CONTRIBUTING.md
2022-12-27 21:07:34 +00:00

1.8 KiB

Contributing

General

Mitra is developed according to these principles:

  • Resilience. The primary function of Mitra is delivery of messages from publisher to the audience. It should be able to perform this task even in adversarial conditions.
  • Self-hosting. If some feature depends on other service (such as blockchain node), that service must be free / open source software and it must be able to run on affordable hardware. No dependecies on proprietary services allowed.
  • Low system requirements. The default configuration should work smoothly on a low-end VPS.
  • Privacy. In its default configuration, Mitra shouldn't require any personal info (other than username / public key) or collect usage statistics. It also shouldn't reveal more information about the user then necessary.

Before you start

If you want to propose a change, please create an issue first and explain what you want to do (unless it's something trivial).

Code

Simplicity is more important than minor performance improvements.

Avoid advanced language features unless there's a good reason to use them. The code should be comprehensible even to a Rust beginner.

MSRV

The MSRV must not be greater than the version of rustc package in Debian testing.

Dependencies

Try to minimize the number of dependencies.

Prefer libraries maintained by volunteers over those developed by for-profit companies.

Code style

Run cargo clippy to check code automatically. Try to follow the existing style when adding new features.

Commits

Commits should be atomic (the tests should pass) and not too big. Commit messages should be informative.

For any notable change there should be an entry in CHANGELOG.md.