6 ms·
Game of Trees: A Version Control System for OpenBSD
- mulander 7y agoUndeadly provides more context: https://undeadly.org/cgi?action=article;sid=20190810123007 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_under https://lobste.rs/s/sxpmar/game_trees_version_control_system...
- UI_at_80x24 7y ago>its target audience are OpenBSD developers 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.
- enneff 7y agoShows the value of having consistent goals and values in software development. Their focus on simplicity and clarity is inspiring.
- hsaliak 7y agoThe article states that Got will use unveil and pledge [1] to harden to codebase. This is not supported in linux, so it's unlikely that ports with similar guarantees will be straightforward. It will not replace git in general. [1] https://www.openbsd.org/papers/BeckPledgeUnveilBSDCan2018.pdf https://www.openbsd.org/papers/BeckPledgeUnveilBSDCan2018.pd...
- tom_mellior 7y agoNewbie question: For porting to Linux, can't you just remove (#ifdef out, or something) the pledge and unveil calls? You would no longer get the guarantees, but aren't these similar to assertions in that once you have a well-tested program you can have some certainty that you wouldn't violate the pledges?
- hsaliak 7y agoThe goal of something like pledge/unveil is to harden a carefully written program from being exploited, so it has a role to play at runtime. Asserts are used for program invariants, so checking them at runtime is less important. 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.
- wahern 7y agoseccomp doesn't support file paths, while pledge and unveil do. That makes a huge difference.
- mruts 7y agoI love the OpenBSD philosophy of simplicity and correctness. Plus the devs are one of the few people who actually treat incomplete or incorrect documentation as a bug. The OS is one of the easiest to set up, use, and modify. I ran OpenBSD for a long-time on my desktop and it always was a joy to use. I eventually switched back to Arch Linux due to lack of software support and subpar performance. 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.
- znpy 7y ago> I eventually switched back to Arch Linux due to lack of software support and subpar performance. > 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.
- misterdoubt 7y agoI don't quite understand the aim, or why it overlaps with OpenBSD. This is to provide a different, simplified CLI to git?
- UI_at_80x24 7y agoI'm not a developer, (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..) [1] https://www.openbsd.org/policy.html https://www.openbsd.org/policy.html
- microcolonel 7y ago> OpenBSD does not use GPL code 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.
- koenigdavidmj 7y agoYou’re correct, but they also have a strong desire to replace these if possible. There was an old effort to replace gcc with the old pcc before they eventually settled on clang.
- brynet 7y ago> a lot of GPLv2 code "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 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.
- secretvrdev 7y agoThe logo is the best!
- tomxor 7y agoIs this essentially a new CLI front-end to git? I'm excited to see the result. 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.
- Bluerise 7y agoNo, it‘s a completely new implementation. The whole backend and frontend is written from the ground up.
- yepguy 7y agoLooking at the man page, it also seems like you won't be able to share work trees between git and got. If you want to use both to operate on a repository you need a separate checkout for each tool.
- tomxor 7y agoFair enough, but since it actually uses git repositories as the storage format it uses the most interesting part of git, so my point stands about everything in between the repo and the user.
- Someone 7y agoNo, it’s a BSD-licensed reimplementation of part of git (it currently supports local version control operations only)
- raimue 7y agoAlthough others have already answered that got is a BSD implementation, you might want to have a look at Gitless. "A simple version control system built on top of Git". Basically it just runs git commands, but with a command line interface that is meant to be consistent and more user-friendly. https://gitless.com/ https://gitless.com/
- 7y ago
- knorker 7y agoThis is great. I've contributed a bit to the OpenBSD kernel and core user space, but CVS is so much trouble (especially for those of us who are not core developers with access) that's it kept me away from fixing more things because of all the extra CVS-created work. 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.
- ksherlock 7y agoThe man page(1) provides a good overview. Imagine a git backend with a cvs/svn front-end (which ought to make Linus Torvalds kill himself(2) just so he can roll over in his grave). got checkout, for example, can limit itself to a subdirectory of the repository. 1. https://gameoftrees.org/got.1.html 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."