Gitchain: Decentralized P2P Git Repos aka "Git meets Bitcoin"
kickstarter.com
kickstarter.com
I like more-decentralized Git, but I don't think this is necessarily the way to do it. The main problems today include plumbing around decentralized issue tracking and wikis, good Git web interfaces, etc.. Better P2P might make forking easier without centralization (Gittorrent?), but most serious projects probably won't find it difficult to obtain a VPS; data integrity and distributed authority, things the blockchain provides, are not really necessary at all.
Technically it's much much different of course, but if you commit some private keys/etc to Github, you have to invalidate everything used and assume that someone saw it, Google saw it, and it's cached in multiple places. Right?
These are new things we can do with the logical/mathematical system. As of now, the best application may not have been found. Saying how these new discoveries are 'not useful' sort of confuses the spirit of exploration.
I really feel like this is a misapplication of a blockchain. Block chains are already heavyweight, when you suddenly add arbitrary data like git repos you go from 17GB to hundreds of gigabytes and potentially much more.
Pushing also becomes a slower affair, you need to get your data into a block and then get confirmations.
I don't want to crush innovation, especially in the cryptocurrency space, but I really think this is an example of using the wrong tool for the job.
You'd need to make sure that repo's are safe against attack - if not every node has all the data you are moving into highly innovative territory. I'd be interested to know what sorts of solutions you are considering.
Also, in this thread you say "There are proof of storage techniques" - I have seen others talk about this (paying people to store data: StorJ, maidsafe) and it seems flawed - you can never know how many copies of your data are truly floating around. If you give me a financial incentive to store "multiple copies of data" I will do it in the cheapest possible way, which means storing it on 1 machine and lying about it.
There is a big difference between storing 20 copies of a file on 1 hard drive vs 1 copy x 20 hard drives, but there is no algorithm that can tell me (the file owner) which is occurring. How do you plan on monetizing "store other people's data" fairly?
1. Add the ability to git push over git:// to any git repository, which results in a patch being presented to the repository owner in some useful way Ie, reverse github pull requests, that work anywhere. http://joeyh.name/blog/entry/idea:_git_push_requests/
2. True P2P git pull/push over telehash. Something I plan to implement as soon as there's a working telehash implementation. Will allow peers to collaborate from anywhere without a central point of control, and with built-in encryption too. http://telehash.org/
(To be clear, telehash has a DHT, but it's used to find routes to peers, not for distributed data storage.)
I think one of the most important aspects of the work I am doing is about establishing a tamper-proof record of history, decentralizing availability and proof of storage. If you have any further thoughts or questions, I am all ears!
The git objects themselves are content-addressable (the key is the hash of the value) but you still need a unique ID that references the HEAD of this chain of objects. This id needs to be updateable.
At 7 years and counting, you can't be sure that anything is around the corner.