Git Decentralizes Better Than Bitcoin
Git and Bitcoin were envisioned as decentralized alternatives to existing centralized systems. Git followed through. Bitcoin did not.
In 2005, BitKeeper, a source code manager the corporate world loved, revoked its free-of-charge status. The Linux kernel, developed with the tool, needed a new version control system to continue development. Linus knew about SVN and CVS, but refused to adopt either. Instead, Linus Torvalds and the Linux kernel developers began to develop a source code management program with scalability, efficiency, and a distributed model named Git. Not long after in 2008, an unknown developer published a paper under the name Satoshi Nakamoto titled Bitcoin: A Peer-to-Peer Electronic Cash System. It described a radical challenge to the centralized banking system, complete with cryptographic algorithms and network protocols to solve the double-spending problem.
In the years since, both Git and Bitcoin have revolutionized their respective fields, with more than 90% of developers use Git as a version control system for software development and Bitcoin achieving a market capitalization of over a trillion dollars as of June 2024. Both were designed as decentralized alternatives to centralized systems, but while Git went on to replace existing source code managers, Bitcoin hasn't replaced the banking system in a similar capacity. Despite similar motivations, Git conquered the software development world, and Bitcoin, sizeable as it may be, couldn't break more than a percent of the world's financial assets in value. I believe the reason for Git's success and Bitcoin's failure is that Git committed to a decentralized and distributed model of source code management, while Bitcoin needed to stray far from it to survive.
Git uses a distributed model for source code management. Creating a repository doesn't monopolize control of the source code. Anyone can clone the repository and anyone can push to and pull from the clone just like the original. This decentralizes the management of the source code. Unfortunately, if you only want to submit a change to one file, you need to clone the entire repo. To submit code, make an edit, commit, then push your changes. If the repository is 100 GB in size, to commit a change, you need to clone all 100 GB at least. This cost doesn't seem to bother developers, who've responded by boosting Git's popularity.
Bitcoin claims decentralization as a feature. To run a node, you clone the official Bitcoin node software repository, connect your computer to the Internet, and run the node. At this point, the node will contact a specified set of IP addresses and download the blockchain, a record of every transaction ever made on the Bitcoin network. Downloading this file lets you check the history of every transaction ever made and lets you operate your own Bitcoin node in the network. Your node listens for any incoming transactions and adds them to its copy of the blockchain, like how every other node does. This distributed model ensures the system stays secure.
Despite similar distributed models, Git and Bitcoin went different paths. Git lets you become your own hub after you clone a repository. The original repo can operate no different than before. If you use your Bitcoin node to split off the main network and form your own, you create your own cryptocurrency. This hurts Bitcoin's value, which discourages miners from mining and traders from using Bitcoin. This treatment of forks divides Bitcoin's and Git's decentralization. Git allows and encourages diversity of direction, while Bitcoin punishes it.
In a Google talk in 2007, Linus Torvalds was asked whether the ease of creating branches will result in creating "80 billion flavors of the Linux kernel" in an attempt to invalidate the ease of branch creation in Git. While possibly in bad faith, the question exposes a genuine concern with branch management, especially with corporate software development, common at Google: how do teams manage branches efficiently? Linus' answer is to ignore the branches you don't want and accept the branches you do. He refuses to comment on whether or not the immense number of branches is good or bad, but I suspect that Git was specifically created to encourage branching. The audience member's skepticism reflects sentiments in corporate software development that encourage speed, efficiency, and tight control of project direction.
To answer objections to Bitcoin about the value of the currency, Andreas Antonopolous, a developer of Bitcoin node software, tells the audience in a talk in 2016 to ignore "Bitcoin the money" and instead look at "Bitcoin the technology, the invention, and the network". He fails to account for any scalability issues Bitcoin poses, but most importantly, ignores why the currency valuation fluctuates: political decisions affecting Bitcoin's network. Forking Bitcoin to accept more transactions per block, like the Bitcoin Cash team did, affects Bitcoin's value. For the Bitcoin currency to be used as a stable currency, the project's members must maintain uniformity in direction and disallow diversity, unlike Git.
While Git and Bitcoin both use distributed and decentralized models, they differ in their implementations. Git decentralizes source code management with a distributed model, and Bitcoin distributes the management of a payment system with a decentralized model. Git allows diversity in project direction, and has been adopted as the source code manager of choice by proprietary and free and open source (FOSS) developers alike. Bitcoin, on the other hand, requires unity in project direction, and instead of replacing the banking system, has spawned many new cryptocurrencies and decreased Bitcoin's market cap to half of that of the total cryptocurrency market cap. Bitcoin's model discourages diversity, while Git's encourages it.
Git proves that truly disruptive technologies enable and encourage diversity, while non-disruptive technology doesn't. Cryptocurrency doesn't disrupt the banking industry, but distributes the management of the currency and poses multiple financial privacy and security risks in the process. Git disrupted source code management because of its FOSS-oriented design that allows people to take a project in any direction. The future is never easy to predict, but I doubt Bitcoin, or cryptocurrency at large, will ever disrupt banking in the same way Git disrupted SCM. Despite both projects' main code's availability under FOSS licenses, only Git stays true to FOSS principles, and Bitcoin only serves the status quo.
References #
- Pro Git by Scott Chacon and Ben Straub: Pro Git
- Mastering Bitcoin by Andreas Antonopolous: Mastering Bitcoin
- Linus Torvalds on Git: Linus Torvalds & git
- Andreas Antonopolous on Bitcoin: What is Bitcoin? An entertaining non-technical explainer on what bitcoin is and why it matters.
- Bitcoin Market Capitalization: Bitcoin Price
- Git Popularity: Beyond Git: The other version control systems developers use
- Global Financial Assets: Assets of global financial institutions 2022
License #
This work is licensed under CC BY-ND 4.0.