Skip to content

Contribute

Contributions follow the usual procedure: open an issue if the change is big, fork and make a branch, pass the checks and open a pull request. This part explains how the project is built, so that you can understand it, fix something or add something.

It is written for people who program and do not know the project yet. Some technical terms are used (operation, hybrid logical clock, conformance), but each one is explained the first time it appears, and it is always said why things were done that way.

  1. The parts and how they fit together: the app, the domain, the specification, the server and what happens when a book is added.
  2. Setting up the environment: the app: Rust, Node, Android and the checks.
  3. Setting up the environment: the server: Docker, the databases, the fixtures and make check.
  4. How to contribute: style, tests and commits: the rules that matter and how to add a field or an entity.
  5. Glossary: what each thing is called in Spanish and in the code.
  1. The sync engine, explained: how several devices reach the same result without anyone in charge.
  2. The operations: the specification and the conformance cases: the format, the rules, and how to write a compatible client or server.
  3. Security: the threat model: who it protects against, with which pieces, and what it does not protect.
  4. How we audit, so you can repeat it yourself: the method, not the reports.
  5. Report a security problem: how to do it in private.
  1. The data model: the entities of the catalog and of sharing, and why the work and the edition are kept apart.
  2. Accounts and sign-in: sign-up, Google, the second factor and the device as a session.
  3. The cloud: the API and the access rules: a map of the routes and of who reaches which library.
  1. Publishing a release: the number, the what’s-new notes, the licences and the signed Android package.
  2. Adding a data source: a new catalogue in the app, and on the server if needed.
  3. Adding a language: the app’s texts, the what’s-new notes, the server’s emails and the documentation.