What is “open source” and why is it important for cryptocurrency and open blockchain projects?
Open source software development is essential to building trust and safety into blockchain networks. Here's why it matters from a policy perspective.
The computer code undergirding each major cryptocurrency and open blockchain project is developed as open source software. Regulators and policymakers looking into cryptocurrencies but unfamiliar with open source software may have an incorrect mental model: one wherein software-based systems are (and must be) developed by one or a handful of for-profit companies. While plenty of important software projects are developed in this way (e.g. Microsoft’s Windows or Oracle’s RDBMS), open source projects are different and that difference can and should help shape public policy.
Open source software is collaboratively produced, shared freely, published transparently, and developed to be a community good rather than the property or business of a single company or person. When a project is developed open source there isn’t a single chokepoint in the development process, no company or individual that makes, owns, and sells the software. Just as there is no single company that powers the Bitcoin network, neither is there one company that makes the software that, when run on internet connected computers, creates that network. This decentralization in technology production has several profound benefits and can be difficult to grasp for those not familiar with software development.
To better understand the power and nature of open source, it is helpful to first understand a bit about one particularly successful piece of open source software: Linux, the open source operating system.
Open Source is Everywhere
You use Linux more times during the day than can easily be counted. Linux is the operating system that undergirds the substantial majority of servers on the internet. Whenever you visit Facebook, Google, Pinterest, Wikipedia or thousands of other major websites, the services the site provides for you (whether it's social networking, search results, photographs, or encyclopedic articles) are coming from a computer, and that computer is probably running an operating system called Linux. Linux isn’t only at the other end of your web surfing either; it’s probably at your fingertips. If you use an Android phone, the phone’s operating system is based on Linux. If you use a Chromebook, you are using a Linux-powered laptop. Moreover, Linux is increasingly the operating system that’s baked into televisions, thermostats, airline entertainment systems, cars, and more.
Why is this interesting? It’s interesting because Linux is not the product of one or even a handful of programmers, and (unlike Apple’s MacOS or Microsoft’s Windows) it’s not been developed by one or even a handful of corporations. Instead, Linux has thousands of individual co-authors. As the Linux Foundation (a nonprofit association dedicated to promoting the open development of the operating system) reported in 2015, “some 14,000 individual developers from over 1,300 different companies have contributed to the kernel.” In that year alone, 2,355 developers made their first ever contributions to the Linux source code. So, by extrapolation, we can guess that by this year (2017) around 18,000 people have contributed to the code, and counting!
As Eric Raymond, author of The Cathedral and the Bazaar wrote in 1996, “Who would have thought even five years ago (1991) that a world-class operating system could coalesce as if by magic out of part-time hacking by several thousand developers scattered all over the planet, connected only by the tenuous strands of the Internet?”
Open Source Advantages
Raymond’s book describes how open source represents a revolutionary mode of technology production. Linux, with thousands of unaffiliated developers working in public collaboration, exemplifies the open source model. Cryptocurrencies follow this model as well, but more on that in a moment.
Raymond identified several advantages to the open source model. Key for our purposes are the following:
- “Every good work of software starts by scratching a developer's personal itch.” The majority of developers in an open source project are motivated primarily because they want to use the product they are making. They aren’t under contract to build something for someone else; they have a personal need and they are addressing it. This leads to greater motivation and it brings intimate personal knowledge about the problem to bear.
- “Good programmers know what to write. Great ones know what to rewrite (and reuse).” When development happens in the open, redundancy can be avoided, and troublesome, complicated, or redundant code can be identified and simplified.
- “When you lose interest in a program, your last duty to it is to hand it off to a competent successor.” People come and go within an open source project depending on their interests and expertise. No one gets stuck working on projects they no longer care about and fresh minds appear to offer different perspectives on longstanding problems or new avenues for development.
- “Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.” Many of the people who use the open source code will also be able to identify and flag issues, and may even be able to offer solutions. The line between a consumer and a producer of open source software blurs because production happens transparently in full view of the public and participation in production is available to all.
- “Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.” This has come to be known as Linus’s Law after Linus Torvalds, the original creator and longtime principal developer of Linux. When development is not open, all developers may share a certain blind spot or fail to notice a certain error. Wider development amongst sophisticated users with idiosyncratic perspectives increases the likelihood that bugs are discovered and addressed, thus making open source software more resilient and secure.
The result of open source software development is highly resilient code made by its users to serve its users. The goal isn’t to produce something that enriches a company that makes and sells the product, but—rather—to produce something that solves a problem common enough that a large community of talented programmers is happy to dedicate their efforts to the task. The non-programming public benefits immensely from this model. Free software effectively materializes out of thin air, anyone is free to use it, and it remains updated as long as an expert class of users (even including corporations) remains interested in using the software as well.
Law and Open Source
Legal arrangements support and, in some cases, encourage open source development. Open source software, like all software, is copyrighted, but its authors release the code under a permissive license that allows anyone to use and modify it without seeking specific permission or making any payment to the original creators (e.g. the MIT license). Some licenses even place a simple condition on future uses and modifications, requiring, for example, that new derivative works be in turn released, themselves, under the same non-proprietary licenses, thus growing and spreading the open source code base. This is known as a viral or copyleft software license (e.g. the LGPL-3).
Open Source in Cryptocurrencies and Token Projects
Linux is probably the largest and most important example of the open source model, but several others exist. Among them are all of the major cryptocurrencies and open blockchain projects. All of these projects create computer networks that allow connected participants to reach agreement over shared data (the blockchain of the cryptocurrency). The software that allows any particular participant to connect to the network is called a client, and that client software is released and developed open source. Often, these clients are developed by several unaffiliated participants as a plain vanilla version of the network software (i.e. a reference client) from which specific mining, wallet, exchange, or other network-compatible software can be built.
The Bitcoin Core reference client is the product of over 15,000 unique code contributions from over 450 unaffiliated individual developers. The software is available for free use and modification under the permissive MIT copyright license, and the full history of that development is visible within a public software repository hosted by Github, a cloud-services provider that allows anyone to sign-up for an account, upload new code, and track changes. If the code repository you create is open to the public for viewing, comment, and suggested modification, then you don’t even need to pay for a Github account.
The public repository also keeps track of so-called “forks” of the code in the reference client. A “fork” creates a clone of the original software that can then be modified for some specific purpose without altering the original repository. Developers freely fork the Bitcoin Core Github repository to either (a) build purpose-specific bitcoin-compatible applications (e.g. a wallet app for smartphones) or (b) build a new cryptocurrency that ceases to be compatible with the bitcoin network and thereby creates a new cryptocurrency network (e.g. Litecoin or Zcash). To date the Bitcoin Core reference client has been forked over 10,000 times, and the new repositories for those forks show the ongoing open development state of those derivative projects.
The Ethereum project is currently made up of at least 121 separate software repositories each focusing on different aspects of the project (e.g. programming languages for writing smart contracts, end-user graphical browsers for interacting with the Ethereum network, and compatible clients for participating in the network). There are no fewer than eight software projects to develop Ethereum compatible clients and the more popular clients (go-ethereum and Parity) have hundreds of independent developers contributing to the code. The Ethereum project’s code (and the complete history of that code) is, like Bitcoin’s, publicly available within Github and other online repositories, and all code is released under the LGPL-3, a viral copyleft license that requires all future derivative works to be released under the same non-proprietary licensing.
Even recent projects spearheaded by privately funded start-ups show a deep commitment to this open-source ethos. The Zcash Company develops the Zcash protocol openly and permissively through a public repository, several major contributors are not employed by the company, and a non-profit public charity has been created to shepherd a transition from company-focused to community-focused development over the longer term. The Zcash codebase is released under the permissive MIT copyright license. Protocol labs, developer of Filecoin, intends to pursue a similar open model and has previously exemplified the open source model of development with its IPFS project, developing that code in public repositories and releasing it under the MIT license.
Why Open Matters
Cryptocurrencies and open blockchain networks may provide functionality that would be regulated if it was provided by a single corporation. A centralized issuer of digital currency like Liberty Reserve or E-gold is a money services business and must register with FinCEN and be licensed to transmit money in every state. If that issuer decides to market her tokens as an investment then they may be securities and she may need to register with the SEC. These regulations make sense because centralized services carry the risk that the party in the middle will fail to uphold her promises or adequately test and secure her products.
But technologies like Bitcoin can create the same functional result with an open and unowned network, rather than a corporation, at the center. Users join these networks and open source software aligns their incentives toward cooperation and, ultimately, agreement over every scrap of data needed to make a currency. That decentralization is built on two things open consensus mechanisms (which we’ll leave for a later backgrounder) and open source software. If the code wasn’t open source, how would participants (complete strangers on the internet) ever be able to understand and trust the system they are joining? Indeed, token projects based on proprietary code may simply be centralized service-providers hiding behind jargon and blockchain nonsense.
For genuine projects in this space, however, the code that builds the decentralized network, that allows participants to trust each other, aligns their incentives, and punishes fraud is itself decentralized. It’s developed in the open, free for the world to use and modify, wholly independent from one or even a handful of corporate interests, and by hundreds of passionate users.