The previous code generally converted between a higher and a lower type
by putting the type conversion functions on the lower type.
This introduced cycles in the code dependency graph, and made it more
difficult to follow the code flow.
Refactor the code so that types generally have a `from(...)` static
factory method that can create an instance from a lower type, and if
appropriate a `to...()` method that can also create an instance of that
lower type.
Add `docs/code-style.md` which explains the rationale for this change
in more detail so that future contributors can write code in the same
style.
The separation between the `develop` and `main` branches was inherited
from Tusky and isn't helpful, complicating the release process and
causing CI to repeatedly run the same actions on the same code.
Deprecate the `develop` branch by removing references to it in the
documentation and updating the CI configuration as necessary.
Separately, the GitHub settings will be changed to set `main` as the
default branch, and the `develop` branch will be deleted.
Instead of a single `CONTRIBUTING.md`, create an initial set of more
detailed documentation for the different types of contribution.
Start with `code.md` and `translate.md`, the processes for submitting
code and translations respectively.
Commit to documenting how to contribute documentation, project
management, user support, and social presence in the next week.
Ensure that project decisions are clear and transparent to potential
contributors by documenting them in `docs/decisions`, starting with
the decision to use conventional commits.
Use the MADR format (https://adr.github.io/madr/).