I would extend the feature set from just sending patches to pull requests (git endpoint + branch + target branch). git has this for email but it’s pretty janky and nostr apps could do it better.
#[3]
I think the way this bounty is stated is put is not the ideal. I think most people will read this and think we need a big website that is just like GitHub but using Nostr somehow. I think that is not what we should see (and hopefully that's not what #[1] wants either).
What I would want to see are multiple apps that can interoperate and are able to perform separate functions:
- browse code
- comment on code (referenced by a commit)
- create issues and comment on issues
- send patches
- comment on patches
And how these should be done? I am not sure, but here's what I have in mind:
- most of the comment things should probably be kind:1 events, I don't know, with some extra tags (so they could be interacted with from the normal "social" Nostr clients? or not?)
- code should probably be hosted by standalone dedicated git servers -- and there could be centralized providers offering these services but they should interoperate seamlessly between themselves and with standalone personal servers
- sending patches should probably be done using something like this approach by #[0]: http://git.jb55.com/git-nostr-tools/file/README.txt.html
#[2] has opened a discussion on this topic on the NIPs repository that could possibly be used to coordinate the efforts: https://github.com/nostr-protocol/nips/pull/223
I think we could have multiple different smallish webapps, native apps and specially command-line tools that implement one or multiple of the separate functions described above, and with that we can achieve a much better result both in terms of quality and of decentralization than if someone or some big team decides to tackle the entire cake and come up with some centralizing architecture on their own.
Discussion
Linus wrote git to be distributed (decentralized) and his workflow with email patches was a core design feature.
Github projected a centralized workflow onto git (branch permissions and all that jazz are not a part of git). This has its place especially in the enterprise world. So why do we want branch permissions for open source projects?
I think it comes down to trusted reviewers. There are those rare combinations of talent, common sense and OCD that make excellent master branch guardians.
So all I think we need is
1. the feature of broadcasting merge requests on nostr
2. the feature of trusted reviewers signing their approval to this request
3. the feature of cryptographically coming up with a deterministic merge outcome and commit hash so every distributed client would have an identical merge
4. a git client/client extension to automatically merge based on preconfigured sign events
Every developer could still hold the code local, plus there could be X public repository servers.
Yes emailed patches are a core workflow for Linus/linux as it makes it easy to contribute code without needing a public repo and branch. You would still probably want git-request-pull like functionality for maintainers.
The reason I mention this is that bitcoin-core doesn’t support patch workflows that well, as they rely on a signed chain of commit hashes and ACKs on specific commits.