#[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.

Reply to this note

Please Login to reply.

Discussion

#[3]​, I know you may not pigeonhole the offer. But you might want to spec it out a bit, ppl get scared of very open ended projects.

Feel free to make PR or reply here and we can update the site https://github.com/coinkite/bountsr.org.pub/blob/main/2023-01-19-nostr-based-github.md

i don’t have a GitHub account 😬

commit 4134343b3b3a63a4d2ff0c6542704b80505458ec (HEAD -> main)

Author: jack

Date: Sat Mar 4 14:14:01 2023 -0600

cleaning up and pointing to fiatjaf's post

diff --git a/2023-01-19-nostr-based-github.md b/2023-01-19-nostr-based-github.md

index d8ffb2b..f88ba16 100644

--- a/2023-01-19-nostr-based-github.md

+++ b/2023-01-19-nostr-based-github.md

@@ -4,28 +4,18 @@ title: "Nostr-based GitHub replacement"

date: 2023-01-19 10:43:00 -0500

categories: code

author: jack

-value: 10.5

+value: 10.05

currency: BTC

-contact: nostr:note17gfm0k0ssw4qctpge32dp3nulu975mjpdl9nqmrs78msp622d90qvdral4

+contact: nostr:npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m

status: New

---

-"will pay 120,000,000 sat (at least) bounty for best nostr-based GitHub replacement. “Best” as determined by this community."

+Create a "complete" Nostr-based suite of git tools, such that projects like bitcoin-core are sufficiently confident to move away from GitHub. Best thread on this is here:

-https://brb.io/n/0b2642fe0cf4a3c4daf315bedd5382266747b92d909c60f753f9160cba3d21f5

+https://snort.social/e/note1qj84ua9mklntsqvk2khytfpwj0jtq297x84u7k4de6nq9rz060kq9zt84j

---

"Eric pledges another 5,000,000 sats if the best product is selected."

https://t.me/takechiyoe

-

----

-

-2023-03-03 update:

-

-Still believe it’s critical we have a credible permissionless alternative to GutHub (ideally based on nostr). One that bitcoin-core and all nostr devs would trust.

-

-Moving my bounty up from 120 million sats to 1 billion sats.

-

-note17gfm0k0ssw4qctpge32dp3nulu975mjpdl9nqmrs78msp622d90qvdral4

Just download, commit locally and drop the commit here. Or give me

Some text and I will put it there.

I think I did that?

That was what you did indeed. We think?

Poly wants a cracker.

⛈️

Measurable and reasonable with a natural finite nature which life has by design, and taxing revenues which time to intelligence to justify temporal mechanical approaches suggestion as a solution to the general dynamical problems.

Don’t see any changes. But I’m mobile

Feel free to add this mockup if it aligned with Jack and Jaf vision #[6].

Its git-ticket level LN bounties that anyone can add to:

https://excalidraw.com/#room=f878b7668632c870c078,ovilXHkJHgmVkFUEXAVAQg

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.

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.

Thanks for responding in a language I understand

So what is probably needed then is a contract/protocol for disparate git related micro apps to inter-act.

That’s what the mentioned NIP proposal is trying to do. Define the contract/protocol for sharing git context.

Yes, that's the icing on the cake!

Does the author of that bounty really know how git works and realize that git is already decentralized?

Emailing patches is one of the main features that Linus wanted when he wrote git. Replacing email with nostr is already being done with git-nostr.

The problem of who gets to decide what to merge into Bitcoin core is not going to be solved by putting it on nostr.

It’s the seamless experience that is capturing. Why do so many people use GitHub? I would argue it’s because of the friction it removes from the many git related tasks. Emailing patches is fine but not something everyone is comfortable with due to the “extra” steps needed to compare/diff, and discuss the patch. There’s user friction involved. GitHub and other git context providers have greatly reduced the friction for these processes as well as consolidated them into one place with other tooling. This value add cannot be understated. I can email you a patch, but that does not provide visibility into any CI/CD I’m running. Nor does it connect the patch to an outstanding issue.

Link to git-nostr?

Yeah this is just a hack though. I think to fulfill the bounty it would need a really good UX, pull request support, code review, etc. web UI for managing issues for users, cli clients for devs. Lots of work to do! I’m tempted to do it but want to give other people a shot first. If I’m not happy with the solutions I will consider it.

I think we need to define the desired outcome.

You could for example create a constraint that a branch is a pubkey, and only the private (or aggregate private, Schnorr, MuSig, etc) can merge to it (git already has signed commit hashes). That would allow replicating branch permissions.

^^ I think we should discuss and jack should settle on a design outcome like this.

Since git works with hashes, it's not hard to reference specific lines, commits, branches, etc and that's all that would be needed to add review notes.

Like you said, clients would then aggregate those notes into a concise view.

Thinking more about it, I think hash-chain branches are step 1 that is needed.

Extend git to support hash-chain branches, where the branch is a pubkey (can have a readable alias), every client can check every merge into the branch is signed by the privkey.

- where the privkey can be an aggregate key (schnorr, MuSig, etc)

- where the merge transaction can be signed and broadcast (on nostr) allowing every client that has all the commits in it's repo to reproduce a deterministic merge (same outcome everwhere)

👀

#[0]

💯

Yes I def know it’s already decentralized and how it works.

However, bitcoin core has a current dependency on GitHub collection of tools and interfaces. This seems fixable. I think fiatjaf lays out the most critical needs much better than I did.

When you just wake up, your client doesn’t pull the profile name and you type an answer referring to “the author” and then find out it’s Jack 😅

Anyways thinking about it further I think one interesting component would be hash-chained signed branches with multi-sig keys.

#[7]

#[6]

Micro tools I'd be up for that... the whole github thing is way too much for my plate!

here i wrote the specification for you of all the features that the command line needs:

https://cli.github.com/manual/

there's obviously no need for repo hosting, git is already decentralized enough, and part of the NIP could be to specify one or more repo URLS to use

in fact, now that im thinking of it, the UX can imply sync across a set of git urls. that way you can clone any url in the set, make a fork, push it anywhere, submit a PR, reference a branch, include a comment and title, and that branch should be "assumed sync"

i think that's key to keeping it simple.

💯

I was lazy with my description and overly used GitHub as a shortcut.

Either approach works (many small apps to achieve tool set, or one cohesive project). I’m a fan of the former as well, as each can probably be used for other things too, and it would move faster.

Many small apps seems more robust.

Moving Bitcoin Core development off GitHub sounds really hard to do independent of how it’s done.

But it would be awesome.

I contributed on nostr-based github replacement and we"ll continue for other nostr-apps.

Link to source?

Hey #[5]​ I would love to read what’s your vision and some use cases for asking this instead of going over the specs. This is what I think every time I read nostr-GitHub

note19j7avfhnjun4q5t9r9enr8fqnkwylayl7840dcq7p5tuc7h7rfcqah7j7g

Hey Jack, we created a NIP for that https://github.com/nostr-protocol/nips/pull/358(Currently also implementing 2 clients(CLI & web) and would like to know what community thinks by having your repost lol

For some clients: "(" is not splitted from url so you would need to delete that manually 😐

Clarity in the bounty description is key to avoiding disputes and controversy when developers seek to claim a bounty.

And resolvr.io is a nostr- and bitcoin-native bounty marketplace with dispute resolution tools designed to resolve disputes when they do arise.

That looks cool!

#[4]

How about integrating a NOSTR integrated variant of Gitlab (Lets call it NOSTRGIT ) hosted by individuals or companies

Posting the updates, comments, commits, edits , deletes etc to nostr with a special tag attached

So any other NOSTRGIT client be it gitlab or any other compatible client can be used to interact with the NOSTRGIT contents, edits, deletes, commits etc @jack

@jb55

How to incentivise people to build UBER type apps on top of nostr platform with the NOSTRGIT

People can tip each git project - and the tips can be distributed across the developers and designers based on their number of commits or weightages assigned to each other between the team members. For example each core team member can assign the weightage for each other core team member and each core team members can assign the weightages for people working under them etc.

So finally each tip will be distributed between the team members in the proportion of the weightage

This means as the project becomes more and more popular tips keep flowing to the developer account like royalty

#nostr is like a protocol for building a decentralized kind of “transformer” (a.k.a. client):

- not answering to a central command

- borderless communication

- unique mixture of interoperable nips

- repairable and upgradable

- customizable look & feel

#[1]

#[4]

What about this kind of thing note1vekuzs0f40j7xgzwz73hentvl8ulsp8th8nul7rcp6vugydcceaqrk4yjk nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6