Skip to main content

Contributing

Cordice is one repository. The server, the web client, the client library and this site all live in it, which means an API change and the client change that follows it land together rather than in two repositories that drift.

The full guide is CONTRIBUTING.md. The short version:

  • Commit messages follow Conventional Commits. This is not a style preference — the release workflow reads them to decide the next version number.
  • One pull request, one change. A branch carrying three unrelated things gets stuck on whichever one is contentious.
  • Run the formatter. cargo fmt for Rust, pnpm fmt for everything else.
  • Sign off your commits (DCO).

Rules the build enforces

Several things you might expect to be review conventions are checked mechanically instead, because a rule that depends on someone remembering it is a rule that eventually stops being true.

WhatWhere
Crates may only depend downwards, and self-contained ones on nothingarchitecture.toml
Every component carries the same versiondocs/versioning.md
The published permission table matches the crate that enforces itscripts/permissions-doc.py

If one of these fails on your branch, the message says what to run.

Design notes

  • Architecture — how the pieces are separated and why.
  • Versioning — one number, propagated by script, and how platform parity is measured.
  • Authorization — the specification for sign-in, verification and account recovery.

Where Cordice came from

Cordice is a fork of Stoat, which was formerly Revolt, and is licensed under the AGPL-3.0 like its upstream. UPSTREAM.md records the exact commit each component was forked from, which is a more honest account of the lineage than a version number would be.