5 <title>Game of Trees (Got): Goals</title>
6 <meta name="description" content="Game of Trees (Got) Goals">
7 <meta name="viewport" content="width=device-width, initial-scale=1">
8 <link rel="stylesheet" type="text/css" href="openbsd.css">
9 <link rel="canonical" href="https://stsp.name/got/goals.html">
13 <i>Game of Trees</i></a>
21 Work with a handful of developers who want to regularly use Got for their
22 work on OpenBSD. Improve version control operation based on their feedback.
24 <h3>Project guidelines</h3>
27 Follow <a href="https://www.openbsd.org">OpenBSD</a>'s security practices
30 <li>Use a development process based on code review in email.
32 <a href="https://man.openbsd.org/pledge">pledge(2)</a> and
33 <a href="https://man.openbsd.org/unveil">unveil(2)</a> across the code base.
34 <li>Use privilege-separation when parsing repository data from network or disk.
37 Keep the entire code base BSD-licenced.
41 <h3>Long-term goals</h3>
44 Remain on-disk compatible with bare
45 <a href="https://git-scm.com">Git</a> repositories.
47 <li>Don't bother with Git-compatibility beyond this requirement.
49 <li>Provide a complete version control tool suite for OpenBSD.
51 <li>Intuitive command line interface for required version control operations
52 (<a href="got.1.html">got</a>).
53 <li>Interactive repository browser for history analysis and review of
54 committed changes (<a href="tog.1.html">tog</a>).
55 <li>CGI script repository browser for web servers.
56 <li>Repository administration tooling with a strong focus on backup and recovery.
57 <li>Repository server for hosting a central repository and synchronizing
58 changes to a cascade of public and private mirrors.
61 Consider workflow requirements of OpenBSD developers.
63 <li>Strong built-in support for a centralized repository model.
64 <li>Keep things easy for developers who don't need branches.
65 <li>Support local branches for developers who need them.
66 <li>Support "-stable" release branches.
67 <li>Support features required by the OpenBSD project's build infrastructure.
69 <li>Implement authenticated and encrypted network communications.
71 <li>Provide <a href="https://openssh.com">SSH</a> and optional
72 <a href="https://libressl.org">TLS</a> support for cloning repositories
74 <li>Exclusively rely on SSH for pushing changes.
75 <li>Do not implement any support for plaintext network communications.