ideating-tragit.md (4714B)
1 +++ 2 title = "Ideating Tragit" 3 date = 2024-07-30 4 [extra] 5 type = "post" 6 +++ 7 8 There are many, many `git` forges to pick from. I'm going to make 9 another one—but before I do, I'm going to do a little thinking out loud, 10 and outline the what and why of this side project I'm embarking upon. 11 12 <!-- more --> 13 14 Decentralization is hugely important for the long-term health of the 15 internet. Indeed, this quality has been fundamental to the network since 16 its inception. This is easy to forget, and hard to see, now. But email 17 was not always Gmail and `git` was not always GitHub.[^1] 18 19 A big reason that these protocols have become so centralized is because 20 the companies that offer these services have genuinely innovated on 21 form. Google *invented* effective, user-friendly webmail. They pioneered 22 email's contemporary security features and user-facing advancements. 23 They were rewarded for that with users. 24 25 Nowadays, however, these capabilities no longer require the dedicated 26 engineering of whole teams of Google 10x-ers. With the mature and 27 effective tools and languages available to every developer, the 28 evolution of the open-source ecosystem, and the integration of big-corp 29 features into the open standards of the web, self-hosting does not have 30 to mean settling for less. 31 32 This has played out most clearly, again, with email. If you wanted to 33 email people, you used to have two choices: assemble the world's largest 34 house of cards and hope the incantation you crafted from terrifying 35 words that make no sense like [dovecot] and [mailcow]—which represent 36 interconnected services that do things you only sort of 37 understand—actually works with any meaningful consistency, or sell out 38 to the Oligarchs. No longer! Want one open-source binary to take care of 39 sending, receiving, security, accounts, redirects, and everything else? 40 It exists, and it's called [maddy], and I've been using it to host my 41 email for years now with no effort. 42 43 `git`, on the other hand, is very much still in the first stage. You 44 can, of course, use [GitHub]. It is a colossus, practically unavoidable 45 as a developer, and enabled my start as a programmer. The pull request 46 collaboration paradigm they created has totally supplanted the 47 [email-based method] that preceded it. But if you want your code to live 48 outside of Microsoft's proprietary claws, the process is far from 49 simple. 50 51 [My own setup] is representative of this problem, and quite janky. It's 52 a delicate combination of [`stagit`] and the built-in [`git-daemon`], 53 running via Docker Compose, pointed at the home folder of a bespoke 54 `git` user. I push to the server over `ssh`, relying on some weird 55 nested home directory hack that makes me very uncomfortable in order to 56 have a nice destination string. To publish a repo I have to create two 57 separate magic files, `git-daemon-export-ok` and `stagit-export-ok`. 58 Metadata lives in aptly-named files like `description` and `owner`.[^2] 59 I clone and pull with the daemon's `git://` protocol. Any changes mean I 60 have to restart `stagit` so it will generate the relevant pages again. 61 Collaboration is allegedly facilitated over email with a [crabmail] 62 instance, but it's been broken since I first attempted to set it up. 63 The whole thing is rather delicate and rough around the edges, which is 64 maybe the worst combination of characteristics for an important service. 65 66 I think there's a real opportunity here to build something that could 67 have an outsized impact on the self-hosted web. I don't want my git 68 setup to evoke the same feelings as the word "modem." I don't want to 69 compromise. I want big tech capabilities in a small and efficient 70 package. So let's leverage ecosystem advancements, think deeply about 71 how we can [facilitate collaboration], and make something. 72 73 Keep an eye out for some form of [tangible] [deliverable] in this area 74 sometime (hopefully) soon. I'm probably going to call it Tragit. 75 76 --- 77 [^1]: I have met a profoundly depressing amount of young programmers who 78 cannot distinguish the latter two. 79 [^2]: The latter of which, of course, is purely aesthetic and has no 80 bearing on security or access rights. 81 82 [dovecot]: https://www.dovecot.org 83 [mailcow]: https://mailcow.email 84 [maddy]: https://maddy.email 85 [GitHub]: https://github.com 86 [email-based method]: https://git-send-email.io 87 [My own setup]: https://git.figbert.com 88 [`stagit`]: https://codemadness.org/stagit.html 89 [`git-daemon`]: https://git-scm.com/docs/git-daemon 90 [crabmail]: https://crabmail.flounder.online 91 [tangible]: @/posts/tangible-deliverables.md 92 [deliverable]: https://fosstodon.org/@FIGBERT/112734909021642855 93 [facilitate collaboration]: https://pr.pico.sh