Game of Trees: A Version Control System for OpenBSD
gameoftrees.org
gameoftrees.org
I'm a huge fan of OpenBSD and all of their efforts but the single point that makes me most in awe of them is the effort and willingness to dogfood. That is the heart and soul and the essence of what makes FOSS powerful. Make what you want to use.
While some may argue about re-inventing the wheel, the OpenBSD team has time after time shown that their implementation of $thing is better then the original it intends to replace.
Please continue fighting the good fight, I appreciate it.
Going back was really painful, Linux, to put it bluntly, is a hot mess. Documentation is terrible, systemd is annoying, and the gnu userland is bloated. It’s often unclear what the kernel supports and does not support. With OpenBSD it is very clear, every driver has a man page and you don’t have to guess what hardware the OS supports.
> Going back was really painful, Linux, to put it bluntly, is a hot mess.
You basically answered yourself. This is the trade-off: quality vs quantity.
This is not a flame-starter, its an observation of mere facts.
So the big problem with ifdefing them out is that you no longer get these guarantees. Linux has seccomp that is similar in functionality, so the guarantees can be ported over - it's just going to take effort.
If they switch to something from this millennium (which they now seem to be doing!) then I could help do more. This may tip me over to running OpenBSD full time on my upcoming laptop.
The name though. Game of Trees? Sigh. Pop culture reference, really? This will not age well. I guess they can just drop the expansion, but then we'll have great sentences like "I got got running for my project this weekend".
Naming things: It's hard, but that's no excuse to skip the hard work and cause decades of annoyance.
got checkout, for example, can limit itself to a subdirectory of the repository.
1. https://gameoftrees.org/got.1.html
2. "I credit CVS in a very very negative way. Because I, in many ways, when I designed git, it's "what would Jesus do" except that it's "what would CVS never ever do"-kind of approach to source control management. I've never actually used CVS for the kernel. For the first 10 years of kernel maintenance, we literally used tarballs and patches, which is a much superior source control management system than CVS is, but I did end up using CVS for 7 years at a commercial company, and I hate it with a passion.
"When I say I hate CVS with a passion, I have to also say that if there any SVN users (Subversion users) in the audience, you might want to leave. Because my hatred of CVS has meant that I see Subversion as being the most pointless project ever started, because the whole slogan for the Subversion for a while was 'CVS done right' or something like that. And if you start with that kind of slogan, there is nowhere you can go. It's like, there is no way to do CVS right."
https://undeadly.org/cgi?action=article;sid=20190810123007
Including a link to the lobste.rs with comments from stsp@ (main developer on got):
https://lobste.rs/s/sxpmar/game_trees_version_control_system...
As a big fan and user of git i'm fairly unhindered by it's CLI design, however i'm quite aware of it's issues through helping many people learning from the outside-in - who's problems are often rooted in misconceptions caused by an exposure to git's porcelain without any understanding of the underlying graph they are manipulating... Perhaps OpenBSD can make a more honest CLI that might eliminate this confusion.
Basically it just runs git commands, but with a command line interface that is meant to be consistent and more user-friendly.
I've worked with stsp for a number of years on SVN. He is a thoughtful developer. I am not sure what got him started on this but I hope this comes together for him.
(1) GIT is GPL licensed. OpenBSD does not use GPL code.[1]
(2) The developers saw something about git that they thought they could improve. (usually based on security/code-correctness, see: OpenSSL, OpenSSH, unwind, openrsync, etc..)
OpenBSD has used a lot of GPLv2 code, until recently their platform compiler was a heavily-patched version of the last GPLv2 version of GCC.
There are git implementations under permissive licenses as well. And it seems like GOT is yet another such implementation.
"A lot" is quite the exaggeration for "at most 5".
GPLv2 licenced software:
• cvs
• texinfo (for software lacking proper mdoc(7) manuals)
• mkhybrid
• readline
• gcc/gdb/bintuils, supporting libraries libstdc++/libiberty*
The amount of GPL licensed software the resides in OpenBSD base is trivial compared to the entirety of software comprising a complete Unix operating system. Including its own implementation of a wide variety of network protocols, and being the home of OpenSSH, and tmux and many more.
https://www.openbsd.org/innovations.html
* On architectures that have transitioned to a LLVM toolchain, we already have a reference platform (arm64) which doesn't build or install gcc/binutils or supporting libraries, this will happen on other platforms as well, where they're currently installed alongside clang. OpenBSD has already transitioned to clang, lld, libc++/libc++abi on i386/amd64/armv7/octeon.
You know, I had forgotten that they failed to bring OpenCVS to bear. Isn't it kinda silly to be concerned about replacing a GPLv2-licensed SCM with another one?
CVS is GPL. OpenCVS is BSDL.
Git is GPL. Got is BSDL.
I got nothing against GPL, but I am pro diversification (competition = good, monoculture = bad). Furthermore, these projects add more than just different license. Mainly, better security.
PS: Got, trendy name. Got got?
Funny-because-confusing open source project names stopped being funny in the 90s.
By all means, if OpenCVS or Got were actually brought to a useful state, that'd be great, but there's no great crisis of new GPLv2 reliance in using Git.
I, for one, would welcome a git clone (hah!) built to the core OpenBSD quality standard, but it seems unlikely that anyone cares enough to do that.
In the mean time, justifying not using Git for OpenBSD on the basis of license falls flat, when you realize you're using GNU CVS anyway.
That would be got(1). Since yesterday version 0.3, 0.4 and then 0.5 was "released". It's still in early development but good enough for a casual user like me to import the OpenBSD src and start using it. Created some commits, branches, performed rebases. Looks great, but still some rough edges. Also tog(1) is great.
But note that they also tend to consider usability to be part of security and correctness; if the tool is technically correct but nobody can use it without shooting their own foot, then the tool is bad. Hence things like signify - yes gpg or openssl(1) can do what it does, generally, but you'd struggle to use them and be sure that you'd done it right.
My eyes were rolling pretty hard until I remembered that git was basically born out of a license disagreement with BitKeeper. Kudos to the OpenBSD folks (and/or this developer) for sticking to their principles.