Decentralized Git Hub

There is the recent discussion about github.com and Iranian developers.

@muneeb suggested that blockstack would be a good place to start with and lots of people responded to that tweet. To me it is not clear what the challenges are and what parts are already solved.

So, I try to write it down here and look forward to bring together blockstack developers that want that want to solve this issue together with Microsoft’s Daniel.

  • Social Graph, following users, starring repos

  • Storing code

    • git is already decentralized
  • Creating and reviewing PR

  • Creating forks

  • UI for all these

I forked react-github and published it with blockstack auth and some dummy data: https://admiring-haibt-c64561.netlify.com/

3 Likes

I wasnt able to login, I get a fetch error. thx

Can you link the tweet? From what I can tell it is because Github is an American company and there are certain trade sanctions going on.

(please nobody make this thread political – problems like this will inevitably come about and making a solution is more productive then trying to prevent the problem in the first place)

It could be possible with a custom Gaia hub or a Hestia hub with a plugin – but there are a couple issues with this:

  • Who would do this because of monetization? While you could limit the client side through username/subdomains (i.e. only usable if you own “{username}.mygitapp.id” or whatever), that can be hacked.

  • If you had logic server side, then you have to host it – and if you host it, then you can be sued by the gov’t in situations like this

  • If you had logic on your own stacks blockchain, this would work better (it’s quite hard to ban a blockchain) – but then you have to have the stacks to burn to do the logic (even the “free” users), which means you have to own bitcoin, which is a huge hurdle in itself, but I digress as this seems to be the best way to do things.

Of course the Stacks chain isn’t really usable right now, so…

Couldn’t login

Some ideas on this:

The no-brainer way to do it:

The really interesting way to do it IMHO:

I don’t think we need to bring the git protocol to blockstack, git is decentralized enough. It is the centralized parts of github that I would like to solve.

Here is Daniel’s tweet: https://twitter.com/csuwildcat/status/1155512512919437313
Here is Muneeb’s tweet: https://twitter.com/muneeb/status/1155524704540737537

I forgot the cors headers (and had my cors plugin enabled while testing, sorry). New version is deploying right now.

The issue that Iranian developers might have now (it is just my best guess) is that it is much harder to send pull requests, to build a public reputation, to review and merge pull requests and to create forks.

Working with the code still works as usual as you can use any git server (or work just locally).

Some projects that were mentioned in this context.

I have published an update at app.gitix.org

Users can add repositories and follow other users.

I get a blank screen when I sign in :frowning: Using Chromium.

Got the following errors in the console:

react-dom.production.min.js:4408 TypeError: Cannot read property '0' of undefined
    at e.value (Avatar.js:15)
    at Va (react-dom.production.min.js:4978)
    at qa (react-dom.production.min.js:5123)
    at react-dom.production.min.js:5975
    at Object.e.unstable_runWithPriority (scheduler.production.min.js:274)
    at Cs (react-dom.production.min.js:5974)
    at Ms (react-dom.production.min.js:5958)
    at As (react-dom.production.min.js:5925)
    at ks (react-dom.production.min.js:5860)
    at Ja (react-dom.production.min.js:5787)
    at Fs (react-dom.production.min.js:6077)
    at Ns (react-dom.production.min.js:6085)
    at Ls.render (react-dom.production.min.js:6276)
    at react-dom.production.min.js:6360
    at Bs (react-dom.production.min.js:6007)
    at Hs (react-dom.production.min.js:6359)
    at Object.render (react-dom.production.min.js:6390)
    at Module.610 (index.js:7)
    at f ((index):1)
    at Object.269 (main.de169042.chunk.js:1)
    at f ((index):1)
    at a ((index):1)
    at Array.e [as push] ((index):1)
    at main.de169042.chunk.js:1
react-dom.production.min.js:4408 TypeError: Cannot read property '0' of undefined
    at e.value (App-Container.js:81)
    at Va (react-dom.production.min.js:4978)
    at qa (react-dom.production.min.js:5123)
    at react-dom.production.min.js:5975
    at Object.e.unstable_runWithPriority (scheduler.production.min.js:274)
    at Cs (react-dom.production.min.js:5974)
    at Ms (react-dom.production.min.js:5958)
    at As (react-dom.production.min.js:5925)
    at ks (react-dom.production.min.js:5860)
    at Ja (react-dom.production.min.js:5787)
    at Fs (react-dom.production.min.js:6077)
    at Ns (react-dom.production.min.js:6085)
    at Ls.render (react-dom.production.min.js:6276)
    at react-dom.production.min.js:6360
    at Bs (react-dom.production.min.js:6007)
    at Hs (react-dom.production.min.js:6359)
    at Object.render (react-dom.production.min.js:6390)
    at Module.610 (index.js:7)
    at f ((index):1)
    at Object.269 (main.de169042.chunk.js:1)
    at f ((index):1)
    at a ((index):1)
    at Array.e [as push] ((index):1)
    at main.de169042.chunk.js:1
react-dom.production.min.js:5940 Uncaught TypeError: Cannot read property '0' of undefined
    at e.value (Avatar.js:15)
    at Va (react-dom.production.min.js:4978)
    at qa (react-dom.production.min.js:5123)
    at react-dom.production.min.js:5975
    at Object.e.unstable_runWithPriority (scheduler.production.min.js:274)
    at Cs (react-dom.production.min.js:5974)
    at Ms (react-dom.production.min.js:5958)
    at As (react-dom.production.min.js:5925)
    at ks (react-dom.production.min.js:5860)
    at Ja (react-dom.production.min.js:5787)
    at Fs (react-dom.production.min.js:6077)
    at Ns (react-dom.production.min.js:6085)
    at Ls.render (react-dom.production.min.js:6276)
    at react-dom.production.min.js:6360
    at Bs (react-dom.production.min.js:6007)
    at Hs (react-dom.production.min.js:6359)
    at Object.render (react-dom.production.min.js:6390)
    at Module.610 (index.js:7)
    at f ((index):1)
    at Object.269 (main.de169042.chunk.js:1)
    at f ((index):1)
    at a ((index):1)
    at Array.e [as push] ((index):1)
    at main.de169042.chunk.js:1

@jude oh, thanks for reporting. Images are missed in the profile. Fix comes later today.

2 Likes

Looks like its working for me now!

1 Like

new version published with fallback to github repos from the blockstack profile. Check your profile like
https://app.gitix.org/#/u/friedger.id

I have started a launch page: https://friedger.wixsite.com/gitix Any feedback? Or better content?

gitlix use links to git, but maybe will be better change git and upload code to blockstack storage ?
or am I missing something ?

@Kailuas git is a good decentralized protocol for version control, therefore, I think it does not help if gitix becomes another git service provider. There are other features of github that needs decentralization. gitix starts with the profile page of developers. Other features, like pull requests (across git service provider) and code review or activity streams, could be added next.

A git service provider based on the gaia protocol would need either a customized git client or a centralized git server, both are not a good project to start with.

And we have now also a decentralized git hub provider: https://githuman.com

Please subscribe for updates at www.gitix.org. We will launch on product hunt soon.