A decentralized Git cloud that never goes down
(and keeps the history for the whole of eternity)
UPDATE: If I will be able to raise $15,000 that will buy me up to two extra months worth of work. I would like to spend this time on two major items: private encrypted repositories and more thorough testing.
If you wish to participate, but only with Bitcoins, you can do this by sending your contribution to 1DnadnpM96wrWFooRVKe1mTrBAp2MAGYee and dropping me an email to email@example.com mentioning your txid and reward level chosen.
Repository available on GitHub
I have spent the last year in the role of CTO at a Bitcoin startup and now that I have time, I want to apply some of the innovations from the Bitcoin space to other problems.
What is it?
Gitchain is an application of the exciting ideas behind Bitcoin, Namecoin and DHT applied to Git hosting. Once you install it, it acts as a local proxy to the entire Gitchain P2P network.
What will it look like?
After installation, all you have to do is to set up your keypair, create a repo and start using it!
Why is this important?
To quote from git's own description:
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Except that in practice, git is not really that distributed anymore. Most of our projects are hosted on one of a handful of Git hosting providers. Whenever that service is down, you can't do anything with your dependencies but wait!
What features will it provide?
- Decentralized redundant storage (DHT)
- Encrypted storage for private projects
- Tamper-proof history
- Proof-of-work/contribution/storage rewards
What is the scope of this project?
The very first mandatory thing I need to accomplish during this project is a complete paper/specification of the system. I am planning to engage the developers & thinkers community to bounce different thoughts to make sure the best ideas make into the system.
As we all know, software projects are rarely if ever "finished" but the goal of this specific project is to have a first working version of the Gitchain with these capabilities (as a plan minimum):
- Repository name allocation
- Decentralized redundant object storage
- Push permission management
- Repository name prefix allocations
- Launch testnet network.
Time and funding permitting, some of these items might also make it into the first big "iteration" scope or can become a part of the stretch plan:
- Encrypted private repositories
- Repository transfers
- Group management
- Classic git seeds
- Incentives & rewards system
How long will it take?
The plan is to finish the first version by the end of the summer. I'll keep backers updated on a regular basis to make sure the progress is well communicated.
Where is it at right now?
I am currently writing a paper and a first implementation of the tool. The prototype is not fully functional yet but is evolving very quickly and you can track the progress on GitHub. Since the design of the system is not yet finalized, you are more than welcome to join a public working group or just provide your feedback — there's a mailing list for Gitchain or join #gitchain IRC channel on Freenode.
What if you will raise more than the goal?
There's a couple of ways extra money can be used: involving somebody else to join me to work on this project; bootstrapping the P2P network (renting servers); pushing hard for the stretched goal after delivering the originally planned first version.
Anything else I didn't cover?
Let me know if you have any questions! Will be happy to include them into the FAQ.
The time for true clouds has come!
Risks and challenges
As a project of this kind that has an incomplete design, there's obviously a risk of running an unforeseen challenge. I have access to at least a few smart people who happen to understand things like Bitcoin, DHT and many other things. Also, as I want to communicate with backers very actively, you always have a chance to contribute to the success of the project with your awesome brainpower!Learn about accountability on Kickstarter
Yes! You can find it on GitHub: https://github.com/gitchain/gitchain, licensed under the terms of Apache 2.0 license.
Yes, it uses Bitcoin's blockchain for the purposes of obtaining consensus. This (recent) change hasn't made to the publicly available code yet. There's also an ongoing research on incorporating Permacoin ideas (PoW+PoS) into Gitchain.
The object data is not going to be stored on the blockchain, only meta information about objects, refs and repositories will go on a permanent record. The rest will be sparsely distributed across nodes (DHT)
Not really, so far all transaction types in Gitchain are of non-monetary nature (name allocation, object announcements, etc.).
That said, it is planned to equate certain provable actions (proof of storage, etc.) to imaginary units that can be used to acquire limited resources. Aligning incentives is a delicate and important aspect of this project and any input is appreciated.
Not really, you can read more about this here: https://medium.com/p/6878558984ac
As with any decisions of this scale, there are always pros and cons. Given all the factors and goals I have for my own project, I have made a decision to "waste my time" and do it the way I believe has the right set of tradeoffs.
Particularly, these considerations were taken into an account:
* Less moving parts. Sometimes our tech stacks are beyond reason (just look at web development) and become a bloat. I am personally coming to a viewpoint that there are cases when self-contained systems are essentially simpler.
* Less reliance on platforms that are yet to become big. Platforms are great if they survive, otherwise they are a baggage to carry around (another opportunity to fail).
* The nodes enforcing the network rules should be aware of the DHT object storage and vice versa
* The node software that enforces the network rules should be able to play well with
"external" concepts, such as certain interworking of git structures, etc. (pure contract-type implementations might be a challenge)
* Clean and simple licensing base (no GPL or semi-commercial platforms)
Support this project
- (30 days)