upend / IF_MS_BUYS_GITHUB_IMMA_OUT

GitHub has sold us out. Time to get out.
3.64k stars 54 forks source link

Any decentralized version idea? #44

Open genacrys opened 6 years ago

genacrys commented 6 years ago

gitchain... maybe?

ghost commented 6 years ago

https://git.scuttlebot.io/%25n92DiQh7ietE%2BR%2BX%2FI403LQoyf2DtR3WQfCkDKlheQU%3D.sha256 is i think what you're looking for????

boxdot commented 6 years ago

I would love to see a federation of self-hosted GitLab instances. The is already an issue on GitLab: https://gitlab.com/gitlab-org/gitlab-ee/issues/4517

covrom commented 6 years ago

try build it based on gogs.io

Bystroushaak commented 6 years ago

Gitchain: That decentralized GitHub story... or "What happens after Microsoft acquires GitHub?"

Serphentas commented 6 years ago

Perhaps we can build a "network" of independently-hosted GitLab (or similar) instances and join those ? Or perhaps collectively contribute for expenses regarding the hosting of one or more community GitLab (or similar) instance(s).

The way Hyperboria handles new users joining (one needs to ask an existing member to enter the network) may be of interest.

revelt commented 6 years ago

I think all open source should be hosted by a non-profit company, like Mozilla-level. It's pity they don't step in.

Bystroushaak commented 6 years ago

@Serphentas I would contribute (with money) to something like gitlab federation.

Bystroushaak commented 6 years ago

@revelt I think it is better idea to make it decentralized in the way email or jabber is decentralized. I would rather have all my data on my server, if it didn't kill discoverability and community spirit (no one will register and login on my forgotten web).

revelt commented 6 years ago

@Bystroushaak logical.

YerkoPalma commented 6 years ago

Hi 👋 Is nice that you are looking at Gitlab, but descentralized github has existed for a long time ago. As @ghost said

Here is a good intro: https://github.com/noffle/git-ssb-intro

0xferit commented 6 years ago

https://zeronet.io/ This project may help for this purpose. A FOSS which makes web apps decentralized.

Serphentas commented 6 years ago

@ferittuncer I wonder how this compares to Hyperboria, though in essence I think the real problem is finding a service that acts like GitHub. The actual way of hosting that service (if community-driven) is yet another issue.

0xferit commented 6 years ago

@Serphentas Nice project, to my understanding Hyperboria is a transport layer solution, help to decentralize the media we transmit our data.

ZeroNet is an application layer solution. It uses WWW at the moment but not restricted to any transport layer afaik.

ZeroNet can help us to build a decentralized GitHub, where each user also hosts the platform. This will guarantee censorship resistance and high-availability.

To build such service, I think we can use git-ssb and we need to build a front-end. We adapt gogs.io front-end to this hypothetical solution as it's open-source.

ghost commented 6 years ago

https://github.com/upend/IF_MS_BUYS_GITHUB_IMMA_OUT/issues/25 We are talking about how to build a decentralized version, that is from the community, for the community.

ghost commented 6 years ago

@ferittuncer @Serphentas There's already a GitHub-like alternative on ZeroNet, called GitCenter (created by @imachug). It uses ZeroNet's merger site concept, which allows users to create their own sites for their repositories, and then the Git Center site aggregates all the merger sites a person has downloaded into one interface.

0xferit commented 6 years ago

@krixano Thanks for heads up, gonna check it.

c-jacquin commented 6 years ago

https://github.com/noffle/git-ssb-intro

millette commented 6 years ago

@ferittuncer in https://github.com/upend/IF_MS_BUYS_GITHUB_IMMA_OUT/issues/44#issuecomment-394717214 mentions ZeroNet, specifically https://github.com/imachug/gitcenter as mentionned in #72.

ralphtheninja commented 6 years ago

Federated git is definitely what we need. Split those servers and enable a user on any server to interact with everyone else!

venikx commented 6 years ago

Don't re-invent the wheel: https://github.com/noffle/git-ssb-intro

millette commented 6 years ago

A few more options out there:

Bystroushaak commented 6 years ago

https://github.com/git-federation/gitpub

Serphentas commented 6 years ago

@AnaRobynn GIT-SSB is already on the comparison spreadsheet. Feel free to contribute there.

@millette @Bystroushaak See above, you can suggest other alternatives over there.

ralphtheninja commented 6 years ago

The scuttlebot column should be removed.

Serphentas commented 6 years ago

@ralphtheninja How so ?

ralphtheninja commented 6 years ago

@Serphentas Because it's not related to git or github at all, git-ssb is an application built on top of scuttlebot.

Serphentas commented 6 years ago

Makes sense, removing it then.

ralphtheninja commented 6 years ago

Just got some news from @noffle

npm i -g hypergit git-remote-hypergit && \
git clone hypergit://6b3752a2c3b04ed25ae2b4d380f3ed4d3d46a9d6b42850a3522e2dd80c332387 \
lisp-code

git over dat :fireworks:

0xferit commented 6 years ago

@ralphtheninja Could you please give more details about git over dat?

vassudanagunta commented 6 years ago

Hey guys. I love the work you've been doing. Not everyone loves mine. Please read Issue 114.

ralphtheninja commented 6 years ago

@ferittuncer Well, afaik (@noffle should really answer the details)

This is very alpha though and more a proof of concept than something really mature and super useful. But it has potential.

hackergrrl commented 6 years ago

hypergit is trying to be a primitive to sync git repositories in a peer-to-peer manner. It's not dat, though it does use some of the same underlying technologies. One could build social elements like issues, PRs, and friend graphs on top of this.

I just pushed some new code and you can fetch the hypergit code itself over hypergit now:

npm install -g git-remote-hypergit hypergit
git clone hypergit://ccc0940b5b13937e5b32ed48b412803d2d70caa18c3ec7ba385c77c204d70c94 hypergit
Serphentas commented 6 years ago

@ralphtheninja @noffle Can't really find docs on hypergit. How does this work ?

hackergrrl commented 6 years ago

@Serphentas Good question! I've been mostly coding and haven't taken time to write much about it yet. I'll give it a shot:

just another git remote

hypergit wants to be a special git remote, like https://... or ssh://..., except instead of pointing to a specific (centralized) server somewhere on the internet, it points to a peer-to-peer-friendly database on your own computer. When you 'push' to a hypergit remote, you're writing your changes to a local hyperdb, which mirrors how git would lay itself out on the filesystem.

p2p sync & works offline

hyperdb's special power is the ability to sync itself with other peers over the internet. Creating a hypergit repo (hypergit create) adds a remote called swarm to your .git/config, and creates a new unique id (it's actually a public key) that identifies that new remote. Something like hypergit://ccc0940b5b13937e5b32ed48b412803d2d70caa18c3ec7ba385c77c204d70c94. When someone runs git clone hypergit://... or hypergit seed, the program will connect to a distributed hash table and find other peers who are interested in that identifier. The ID is hashed before you look for it, so users couldn't discover the repo without knowing the original key. Connections are opened to those peers and you exchange hyperdb state so that you both end up with the same resulting state.

From here you could do a git fetch swarm to pull down those latest changes. The cool thing is that since the remote lives on your local filesystem, you can do push and pull and fetch even while offline, and your changes will sync to the rest of the peers involved in this repo once you're online again. You can even peer with just other users on the same local network as you and collaborate in offline environments.

data lives on the peers

This approach differs from federation, where users pick from a set of servers to host their git repositories. With hypergit all of the data lives on peers directly, so everyone with a laptop is a first-class citizen, and doesn't have to choose between hosted services that could go down at some point. By using hypergit seed you can, not unlike bittorrent, re-host git repos you like on servers and provide them greater availability.

Serkan-devel commented 6 years ago

But federation is still somewhat centralized. For example: matrix.org, running the federated matrix protocol, once got DDoSed and almost the whole matrix network went down.

One of the most convincing alternatives so far here is git-ssb for me. It's great to have a pub-sub-model of communication. One already has an offline copy of the repo and issue tracker, signed by everyone involved and only that. One can follow users, orgs or repos by will, creating less spam on the feed and if the or repo goes down, one can download the sigchain from other peers and verify it easily

vassudanagunta commented 6 years ago

reminder this forum is shutting down in 5 hours 20 minutes.

bmiller59 commented 6 years ago

@vassudanagunta Where is the forum being moved to? How can the conversation continue?

vassudanagunta commented 6 years ago

please see #114 as i requested about 24 hours ago. (not being snarky. pointing out there was ample warning)

vassudanagunta commented 6 years ago

Hello,

The GitHub Evacuation Project has moved to GitLab (not an endorsement or even a final home). Your enthusiasm and contribution is still needed. Please check out the new project home, and read the project wiki for info to get restarted.

Thank you!

vas

jpeletier commented 6 years ago

Hello all,

This is Javier Peletier, CTO of Epic Labs.

We are working on "ethergit" (temporary name), which is a fully decentralized GitHub replacement that uses Swarm for storage and ethereum smart contracts for consensus.

You install an ethergit node for your home or company that connects to other nodes via Swarm and cache the repositories interesting to you. The node has an SSH interface so you can connect Git to it and a web interface so you can visualize the repository, engage in discussions or PR comment/workflows. All the interaction with your node is shared with other nodes interested in that repository.

Interaction with the smart contract is reduced to creating a repository or registering into a repository as a user for participating. Reading the repository, e.g., cloning, etc, does not require interacting with the contract. You can also register your SSH key globally and access any node.

Alternatively, the user can install a git-remote plugin that allows them to interact directly against the network, without having to run a node. This works with a syntax like this: git clone ethergit://0x9B5Df74C9e1dE9BC268FCF4809aD61b68195Da06

The smart contract code defines how a repository's governance works. Can anyone commit? Am I the approver of all PRs? Who owns what branch?

We are using golang for the back-end node code and TypeScript / Angular 5 for the front-end. The back-end is segregated in a SSH+HTTP daemon + go library that can be reused by other apps. We also provide a JS/TypeScript library that allows nodejs or web applications to access git objects directly off Swarm, without needing a node.

We started work at the beginning of the year, we expect to make a release and open it to contributions in the coming months. Please stay tuned visiting www.ethergit.io and joining our Gitter: https://gitter.im/ethergit-io/Lobby There is also a mailing list in the website you can subscribe to as well.

Please let me know of any comments or questions!

runvnc commented 5 years ago

https://github.com/axic/mango

tst2005 commented 5 years ago

https://github.com/MichaelMure/git-bug : decentralized issue