TLDR; We can bring back git's decentralised roots with nostr. Nip34, ngit and gitworkshop.dev takes what's great about the email and GitHub models and applies it to nostr. Friction remains for on boarding new repositories. To solve this we need to strip back and decentralise the git server function and enable CI /CD via a DVM style marketplace. View article β†’

Replies (22)

Interesting. Are you planning to use NIP-34 state event to authorise pushes? I've not thought to much about restricting read access as I've focused on FOSS repositories. NIP-98 over HTTP seems interesting.
@Lez did some work on this: I also wrote an incomplete PR to ngit to put git packs on blossom to maximise efficiency. Ultimately we both concluded that using a git server is better. Its super efficient, battle tested, has lots of advanced features that people use (LFS, shallow cloning, etc) and allows backwards compatable integration (eg. with CI /CD).
Even many FOSS repos started out private and go public when the MVP starts really taking shape, or with the first released version. It can just be a draft. It's a containerized, multitenant server that scales horizontally, but I'm not deep enough into the backend to tell you how it all works. I think the MVP is going to be manual administration of lists and later versions will be using the AUTH relay to send/receive events to automanage the repos and the git service. But @ChipTuner it makes sense to "register" a tenant with a repo announcement on the wss://gitcitadel.nostr1.com relay and get the repo maintainers from that announcement. Announcements from npubs who have left the relay subscription could be deleted, which would pause their access to the git server, until they resubscribed and rebroadcast the repo event to the relay. Or something like that. Later GitRepublic versions could auto-update based upon the events, but first we need to get all of the various machines and services setup. That's actually the hard part.
The Git+Nostr combination means that you could have different visibility for the repo and the social interactions surrounding the repo. You can have a repo announcement for a git repo nobody can access, for example.
according to what chatgpt says "🧠 Interpretation This is not a full CI/CD, but can work well for: Static websites Single-page apps Simple deployments nsyte acts like the deploy agent The nbunksec token is your secure auth key (like an API token)"
> But @ChipTuner it makes sense to "register" a tenant with a repo announcement on the wss://gitcitadel.nostr1.com relay and get the repo maintainers from that announcement. Announcements from npubs who have left the relay subscription could be deleted, which would pause their access to the git server, until they resubscribed and rebroadcast the repo event to the relay. Or something like that. Agreed, that was kind of my thoughts we talked about on the pr exactly! As long as we can control/monitor those subscriptions?
↑