Project guidelines
-
Follow OpenBSD's security practices
and coding style.
- Use a development process based on code review in email.
- Consistently use
pledge(2) and
unveil(2) across the code base.
- Use privilege-separation when parsing repository data from network or disk.
-
Keep the entire code base BSD-licenced.
Long-term goals
-
Remain on-disk compatible with bare
Git repositories.
- Don't insist on Git-compatibility beyond this requirement.
- Provide a complete version control tool suite for OpenBSD.
- Intuitive command line interface for required version control operations
(got).
- Interactive repository browser for history analysis and review of
committed changes (tog).
- Repository browser for web servers (gotwebd).
- Repository administration tooling with a strong focus on backup and recovery (gotadmin).
- Repository server for hosting a central repository and synchronizing
changes to a cascade of public and private mirrors (gotd).
-
Consider workflow requirements of OpenBSD developers.
- Strong built-in support for a centralized repository model
(ideas about pull/push).
- Keep things easy for developers who don't need branches.
- Support local branches for developers who need them.
- Support "-stable" release branches.
- Support features required by the OpenBSD project's build infrastructure.
- Implement authenticated and encrypted network communications.
- Provide SSH and optional
TLS support for cloning repositories
and pulling changes.
- Exclusively rely on SSH for pushing changes.
- Do not implement server-side support for plaintext network communications.