10 ms·
Dgit: Git with decentralized remotes
- jedimastert 7y agoI'm a little confused. Isn't git already decentralized? Like, most of the time there one true repo everyone else grabs from, but it doesn't have to be. What am I missing? Edit: oooooh, this takes the centralization away from GitHub. I feel like that's non obvious from the name, but I could be wrong.
- Tyr42 7y agoWith three simple steps you can create a decentralized mirror of your existing github project. All changes will be automatically propogated to the mirror version and the git services you depend on will be there when you need them.
- stingraycharles 7y agoIsn’t this more about replication / mirroring then than about decentralization?
- zonotope 7y agogit is decentralized, but most git remotes are not. This is a decentralized git remote that gets the best of both worlds. It's a _decentralized_ "one true repo".
- tylersmith 7y agoGit is decentralized like the web is decentralized. The architecture supports it but the infrastructure for using it in a truly decentralized way is severely lacking compared to the options for using it in a more centralized way.
- cfstras 7y agoThe description says that my repo is uploaded to the "decentralized service Skynet" -- But I can't seem to figure out how one would participate in hosting this service. Does only Sia, the company, host nodes for Skynet? Or is this a plot to increase the visibility of Siacoin?
- JohnJamesRambo 7y agoIt would be nice for Sia to be useful for something.
- cap10morgan 7y agodgit dev here. Good question. For starters, dgit is not 100% tied to Sia, it's just a great decentralized file hosting service so we started with it as the first default. But to answer your question, anyone can host Sia nodes. Here are their docs on that: https://support.sia.tech/category/0OpBuOHIVD-hosting https://support.sia.tech/category/0OpBuOHIVD-hosting
- cfstras 7y agoThanks for the info. Is there a simple way right now to use another storage backend than Sia? E.g. If I have a group of people that want to participate in hosting, but only want to host data from the people in the group? Essentially, can you use dgit to store a repo decentralised without having to set up git synchronisation tools, but while still having control over the hosting infrastructure?
- bpw 7y agohey cfstras, another dgit dev here. Each repo has a storage adapter specified, so any storage infrastructure is possible, but at this moment we've only written two: sia and on tupelo network. We've had a lot of experience with running IPFS nodes internally, that might be a great option for you in this case? We are in early stages and will add more adapters as feedback informs. Also, its open source and we would love PRs :) - the storage interface is pretty straight forward: https://github.com/go-git/go-git/blob/master/storage/storer.go#L16-L23 https://github.com/go-git/go-git/blob/master/storage/storer.... Here is an example within dgit: https://github.com/quorumcontrol/dgit/blob/master/storage/chaintree/storage.go https://github.com/quorumcontrol/dgit/blob/master/storage/ch...
- cfstras 7y agoThanks for the example, looks easy enough :)
- jakear 7y agoI don’t see any mention of issue/wiki support? Without that my GitHub workflow would be dramatically changed.
- cap10morgan 7y agoAbsolutely. Our strategy is to give you a decentralized on-ramp by starting with GitHub's central value proposition of the "one true git remote" that everyone can share. We made a GitHub action (https://github.com/quorumcontrol/dgit-github-action https://github.com/quorumcontrol/dgit-github-action) to automatically mirror GitHub pushes on dgit so you can continue using GitHub's other tools (like issues and wikis) until dgit offers a compelling alternative for those.
- nottorp 7y agoGitHub is not Git, mmkay? And Git is a Distributed Version Control System, mmkay? Please adjust your title to be less clickbaity and more true.
- nemetroid 7y agoFrom a quick look, I believe "Dgit is a Git remote helper for decentralized [...]" would be a more accurate title.
- oefrha 7y agoNot being able to pull from or push to the git remote is pretty low on the list of problems when GitHub goes down. If that’s the main problem I’ll just set up gitolite on a server (and I do) and call it a day. All the issue/PR discussions and CI/CD are the real problems, and this doesn’t seem to help at all, so good luck collaborating without changing your workflow when GitHub is down.
- michaelmure 7y agoShameless plug regarding the issues: https://github.com/MichaelMure/git-bug https://github.com/MichaelMure/git-bug
- cap10morgan 7y agoCool! We'll look into that.
- cap10morgan 7y agoOur setup process is a much lighter lift than standing up a server and installing gitolite on it. But yes, if GitHub is down, then your workflow is going to change. We're hoping to close that gap down the road, but having a way to continue pushing and pulling with collaborators with a very quick setup seemed compelling to us. Not to mention the benefits that decentralization itself brings. The vast majority of git users tend to agree on one "origin" remote and 99-100% of their pushes and pulls are to/from that remote. So git, in practice, tends to be centralized when it comes time to collaborate with others. We're trying to re-decentralize that aspect while accommodating the convenient workflows we're all used to.
- oefrha 7y ago> Our setup process is a much lighter lift than standing up a server and installing gitolite on it. I think a counter to that is only one person needs to set up the additional git remote, compared to everyone having to install additional software to use dgit.
- lucideer 7y agoAs others have commented, this appears to be a decentralised alternative to GitHUB rather than Git itself (which is already decentralised). For a similar project, see git-ssb https://git.scuttlebot.io/%25n92DiQh7ietE%2BR%2BX%2FI403LQoyf2DtR3WQfCkDKlheQU%3D.sha256 https://git.scuttlebot.io/%25n92DiQh7ietE%2BR%2BX%2FI403LQoy...
- zonotope 7y agoAnother Dgit deve here. You're right. Git is decentralized, but most people use centralized git remotes like GitHub. Dgit makes using a decentralized git remote easier. Eventually we'll build more decentralized alternatives to other GitHub features, but the most important value proposition that GitHub provides now is as a git remote, so that's what we started with. We've provide a GitHub action that allows you to use GitHub's other features until we build more decentralized alternatives
- brian_herman__ 7y agodo you provide advantages to ssb?
- bpw 7y agodgit dev here: first, let me say git-ssb is a great project as well! We see a few distinct advantages: - Using dgit doesn't require running a "node" of any kind (aka an SSB peer). This is possible because of the unique architecture of the Tupelo DLT: https://github.com/quorumcontrol/tupelo https://github.com/quorumcontrol/tupelo. - Because of ^, installing and adding a dgit remote to your existing workflow is super easy. - The storage in dgit is separated from the ownership of the repo. This means you can distribute the actual git objects across any storage system you would like, see my comment to cfstras below. ssb is a few years ahead here - having a web ui and more robust suite of collaboration tools is great, but we're hoping to add those features down the road as well! Another unique advantage is the Tupelo js client (https://github.com/QuorumControl/tupelo-wasm-sdk https://github.com/QuorumControl/tupelo-wasm-sdk) can run fully in the browser, meaning a fully decentralized UI is possible!
- andrewshadura 7y agoA little disappointing they took the name already in use by another project. Dgit is a system exposing the Debian archive as Git, allowing to upload packages with a git push.
- NickBusey 7y agoThis is cool, but is anyone aware of a system that is like GitHub/GitLab, but PR/MRs and commits are actually voted on by the community rather than a handful of maintainers? Something like the way DAOs are supposed to work, but applied to code?
- zonotope 7y agoYeah, it's still early days, but that's part of the eventual plan for dgit. We're starting with decentralized git remotes, but we will eventually enable DAO like functionality like paying in to repos to support them, voting on things like feature/pull requests, and automatic payouts when an independent dev gets one of their pull requests merged.
- dang 7y agoA thread from 2016: https://news.ycombinator.com/item?id=11430009 https://news.ycombinator.com/item?id=11430009
- kyberias 7y agoIt is very hard to understand what dgit really does when its using terminology (decentralized git) clearly incorrectly.
- stagas 7y agoHow do you maintain identity in dgit? i.e how do I claim my user/org name in this decentralized manner? It isn't clear how it works, can you elaborate on this part a little bit?
- victorheld 7y agoYou could just use pgp to sign your commits as a starting point
- zonotope 7y agoSure. First, a little background. The Tupelo distributed ledger manages repo identities and permissions, while Sia persists the actual git objects. Tupelo validates transactions against individual ChainTrees, and you can think of a ChainTree as an independent ledger (or blockchain) that represents the state of one independent real world (or digital) object. In this case, that object is a git repository. Tupelo only allows the "owner" of a ChainTree to make modifications to that ChainTree (such as updating the current HEAD), and ownership is determined by control of a private key. Each ChainTree has a unique DID (decentralized identifier) that is uniquely determined by the key that first created it, and the controller of that key is the initial owner. Tupelo also has a transaction type that allows the current owner to transfer a ChainTree to a different key maintained by the new owner, but its DID stays the same after that transfer. Tupelo uses a strategy similar to the WarpWallet[1] to manage identities. We can deterministically create a private key from a string like a repo name, and use that private key to create a ChainTree with a DID derived from that key (and hence, the DID is derived from the string). This gives us a mapping from repos to Tupelo ChainTrees. Since the initial "private" key is deterministically derived from the repo name, that initial private key is insecure. The second step of the repo registration process is to submit a ChainTree transaction to transfer ownership of the repo ChainTree to a secure private key. That way, only the controller of the secure private key can make changes to the repo ChainTree, even if anyone can reproduce the original key from the repo name. [1]: https://keybase.io/warp/warp_1.0.9_SHA256_a2067491ab582bde779f4505055807c2479354633a2216b22cf1e92d1a6e4a87.html https://keybase.io/warp/warp_1.0.9_SHA256_a2067491ab582bde77...
- stagas 7y ago
- X6S1x6Okd1st 7y agoSo Sia's Skynet is used for hosting the blobs and Tupelo is used for pointers to the blobs & metadata?
- zonotope 7y agoExactly
- Etheryte 7y agoThe author has a very unique understanding of online security given the readme starts out with "just try it by running this unknown binary".
- unqueued 7y agoI actually do p2p syncing of git repos almost every day, with git-annex's sync feature[1]. It is pretty clever, when you sync, it will push the current branch to every eligible remote into an unchecked out branch (master -> remote/synced/master), which gets merged when that peer syncs (or there can be a daemon that does it for you on the remote). I use git for filesets and wikis, so true p2p is really helpful. I love seeing new stuff that can be done with git. [1]: https://git-annex.branchable.com/walkthrough/syncing/ https://git-annex.branchable.com/walkthrough/syncing/
- fariel3456 7y agoLooks like many commenters are clearly struggling with "decentralized like bitcoin" vs. "decentralized like git" distinction
- theamk 7y agoSo who pays for this? It says it uses Sia as backend, but I know sia costs money. Is this currently being paid for by some org?
- dejj 7y agoWhat problem/threat is dgit meant to solve/guard against? Is it: a) the people problem of coworkers not knowing the difference between a repository (e.g. on github), a remote (the name "origin") or even a branch (the label "master") b) github.com turning evil or going away forever c) myhost.example.com failing for hours or days