History and importance of Open Source Software in cryptocurrency development

History and importance of Open Source Software in cryptocurrency development
on June 6, 2018

Open Source plays such an important role in the world of cryptocurrencies, that it is almost forgotten and taken for granted by crypto users. It’s as if the transparency and collaborative spirit that it provides had always been there, available to us whenever we needed it. But the truth is far from that. OSS wasn’t always there and it’s the result of the heroic efforts of some of the greatest software programmers in the world. During a long period, open source was considered to be alternative, hippie, incompatible with the markets and so on.

In this article we travel in time, back to when open source did not exist and software was developed in tightly controlled environments. Back then, a source code leak was the worst possible hazard a software project could face. It was quite different from today where source code is not only put out there in the open by default, but the full edit history, since the beginning of time for software projects, is available to anyone. Through the magic of Git, or any other version control system, you can actually replay the construction of software just like the authors did it. If Satoshi Nakamoto’s edit history had been made public along with the first Bitcoin source code, we would be able to “see” him build Bitcoin from the start, just by replaying the edit history. This is not only a spectacular software development learning tool, it is essential for transparency and to be sure that your cryptocurrency wallet or mining software isn’t secretly stealing your coins or doing anything shady on your PC or mobile device. Smart Contracts are only trustworthy if their source code is available. Even if the bytecode can be reverse engineered from the blockchain, having free access to the source code that compiles to the exact published bytecode is basically a sine qua non condition for any serious ICO or decentralized project.

So how did Open Source become what it is today? How was it incorporated into the cryptocurrency culture? It’s a long story that began in the 1970’s.

Before an organized open source movement existed, academics where largely responsible for initiating the peer-reviewed freely traded software culture. Researchers in many fields would trade source code with their peers, usually written in Fortran or some platform-specific assembly language. The openness in the academic environment led to a generation of “good hackers” or “white hat hackers” to embrace the culture they’d learned from their professors early on. The 1960’s formed the first generation of code hackers who would educate those responsible for the popularization of free open source software later in the 70’s and 80’s.

In the 1970’s computing was still done in mainframe computers and dumb terminals. Since these mainframes were very large and expensive equipment, and often subject to national security controls especially concerning exports of computer technology (big computers could be used to make nukes and this was a sensitive subject during the Cold War), computing was then restricted not only to universities, large corporations and other large scale facilities but also to countries with access to the technological advances of the time. This excluded much of the third world and poorer countries and concentrated Computer Science development to the world’s major powers. Although the Soviets were under export sanctions and could not openly buy powerful computer hardware, there are amazing stories of spies who’d manage to copy and pass sensitive source code and hardware blueprints to the Soviets in East Germany and elsewhere. Several well known hacker/spy stories exist about this time and they’ve become part of cyberculture, cyberpunk novels and overall tech Internet culture.

Sharing source code in the era of mainframes and centralized computing was, therefore, not really exciting. Most of it consisted of sending internal mail to fellow students or professors, all operating under the same mainframe machine, just accessing different terminals. There was often no network interaction at all, it all happened under the same UNIX or some other multiuser kernel that managed multiple terminals across a single campus-area physical installation.

It was in this scenario that Richard Stallman, Eric Raymond, Dennis Richie, Bill Joy, Brian Kernighan and others were developing ideas and actual software that would later change the world. Their hardware consisted mostly of Digital Equipment Corporation (DEC) PDP computers. Stallman was studying artificial intelligence, which was considered a higher level application, while Ritchie, Kernighan and others at Bell Labs were developing UNIX and to do that they created the C programming language. This was a boiling pot of cultures and different technical backgrounds. In fact there’s almost nothing in common between Richard Stallman and his movement and Dennis Ritchie and his work at Bell Labs, except for the fact they were all hacking demigods who each individually was building an important piece of the future of open source.

All this centralization changed with the Personal Computer (PC) revolution. This is when a new and very different software movement appears and as usual with new generations who question the ones before, this one was 180 degrees out of phase with the open academic culture we’ve discussed so far. A young Bill Gates and his university friend Paul Allen were convinced that closed source commercial software was the right path to progress. Gates believed that the rewards from commercial software would be the main driving force behind future innovation and development of the PC platform. He was right to a very large extent. Bill Gates built the world’s biggest wealth generating machine since Rockefeller ruled the world of oil. A skinny kid with heavy frame glasses was suddenly wealthier than Warren Buffett, than the Rockefellers and Greek billionaires of the time. It was the late 1970’s to early 1980’s and the future seemed like it’d definitely be closed source.

Gates famously wrote a letter to hobbyists asking them to support the commercial software movement. In this letter, which is now a classic of computer history, Gates argued that software should be paid-for and that for some reason the hobbyist community felt that hardware should be paid for but software, for some reason, was fair to share for free:

Gates’ letter actually had a huge effect on the PC community. If not a practical effect, it did help drive home the concept of commercial software. There were people investing money and time into software and if people enjoyed that software then they should pay for it. The reasoning behind commercial software is much more market friendly than any of the previous free sharing ideas had been. Gates won the sympathy of the markets all around the world and the rest is history.

Microsoft totally revolutionized the world of software. If there was a personal computer available to Linus Torvalds in Finland so that he could develop the Linux kernel, this fact can be largely attributed to Microsoft. IBM, of course, was the main PC hardware manufacturer of the early 1980’s. Although there was some early competition with MS-DOS, Microsoft eventually won the DOS war with IBM (which is a very interesting story in itself) and the PC world’s superpower triad would be born: Microsoft made the operating system, Intel made the chips and IBM made the rest.

The Microsoft vision and market-oriented ideology had gone mainstream. People were no longer aiming for the communal, collaborative and even hippie-like vibes of the academic world. Developers were working on closed source commercial software that would turn several other geeks into billionaires over the 1980’s. Larry Ellison and his Oracle project, Lotus 123, WordPerfect, John McAfee anti-virus (familiar name in the cryptocurrency world), Peter Norton and his own DOS utilities (and later anti-virus as well, unfortunately), not to mention Microsoft’s own ample catalog of closed source software like DOS, Windows, Office and so on. These were very interesting times but the stories coming out of Sillicon Valley were simply brutal. The software and hardware industries were dog eat dog.

Steve Jobs would have a few glasses of wine with Bill Gates and rumors have it that in the very next morning Gates was already incorporating ideas that Jobs had shared with him the night before right into Windows! Apple and Microsoft fought the early battle for PC graphical interfaces, both having “borrowed” ideas from Xerox and their X Windowing system and a little useful gadget we’d come to know as a “mouse”. Yes, my friends, until the 1980’s and 1990’s mice were simply not used on computers. In fact, it took a while for end users to get used to the concept of a mouse.  Those of us who grew up on the pre-GUI computing scene, the mouse was seen as an optional accessory for a very long time, even as graphical interfaces gained popularity.

IBM licensed their hardware architecture to anyone who’d ask while Apple would not. This sparked an immense industry of “IBM clone” computers which were built from parts made in the rising powers of technology, the so called “Asian Tigers”. Taiwan was producing PC hardware cheaper and in larger scale than IBM. This would be the first big hit against commercial hardware: suddenly hardware itself was being “shared” just like software was in Bill Gates letter to hobbyists. IBM lost control of the architecture and the market was flooded with competing brands. Microsoft did not miss this opportunity and provided all these alternative hardware makers with cheap versions of DOS, completely destroying their competition in the operating system market. IBM-style personal computers were being built anywhere but they all had one thing in common: Microsoft software. Bill Gates ruled the world for over 20 years, from the birth of Micro-Soft in 1975 to 1995 Microsoft had not faced a single real and immediate threat to its business model. They crushed everyone in their path, including IBM and Apple. But then the Internet happened and everything changed.

While Bill Gates and the closed source software world was popping champagne bottles, the academics, hippies and hackers from the 1970’s had not simply vanished. They were, in fact, more active than ever. UNIX had become an elegant and simple architecture for large scale computers. This contrasted with the clumsy and bloated server software made by Microsoft. In fact Microsoft took a shot at UNIX with Xenix and they were wiped out of the market in this area. Digital Equipment Corporation ruled the server-side market, with strong competition from IBM and even supercomputer manufacturer Cray. Sun Microsystems also joined the UNIX side and would later become very important players in the world of software as well, especially in the mid 1990’s when the Java programming language was released.

It was in this context that the US Armed Forces had been working on ARPANET since the 1960’s. ARPANET was tested not only in the military, but also in the academic community. There were few nodes, few people, everyone trusted each other. The network was logically not very big but geographically it spanned the whole continental United States. Here’s a 1977 map of ARPANET:

 

As can be seen, ARPANET was largely built on top of Digital Equipment Corporation DEC PDP-11’s and PDP-10’s. These are the computers where the Bell Labs team would develop the C programming language and UNIX itself. ARPANET software had a very interesting architecture: it was layered and allowed for several different physical connections to be used. The main idea behind ARPANET is that it should survive nuclear war, so redundancy of physical paths and communications mediums was essential. If copper wires were destroyed, the signal should reach its destination via air. If air was electronically jammed, then fiber optics should do. If fiber were destroyed, some other physical medium had to work. This required a pluggable architecture that quickly developed into what we today know as TCP/IP.

It was the early 1990’s, by now development of ARPANET had been delegated to civilians and Microsoft rule the world with its new Windows 95 preemptive multitasking system. While UNIX was doing preemptive multitasking over a decade before, the new Microsoft OS promoted the world’s largest marketing campaign ever and to many people the concept of multitasking was an amazing new Microsoft thing. Even a simple button received millions of U$ in marketing money, using the Rolling Stones’ “Start me Up” hit to promote the new “Start Menu” button, touted as a major innovation in Windows 95, when Xerox X-Windows and Apple were doing something similar years before.

Microsoft could not be stopped – if it weren’t for one small detail. Windows did not “speak” TCP/IP and the Internet was quickly becoming all the rage.

The sudden popularity of the WWW and Internet “killer applications” like email caught Microsoft by surprise. A new WWW browser called Netscape Navigator quickly dominated the market and the company behind it made billions of U$ during the dotcom boom. The chief Netscape developer, Mark Andreesen, was seen as the new Bill Gates. Linux was creeping in the background, since 1991 being a cult OS, developed by enthusiasts on mailing groups and led by Linus Torvalds. After Torvalds released the first kernel sources, the project became dependent on the Internet, with hundreds of collaborators around the world working together without having ever met physically. Then came the browser wars, with Microsoft fighting back after lagging behind initially.

The Internet was the main catalyst for open source. Suddenly, people were developing other software in the same style as Linux. The world’s most popular WWW server software, Apache, went on to become a software foundation with hundreds of amazing software projects under its umbrella. Netscape Communications dissolved and released the source code of their flagship Navigator browser and Thunderbird email client to the community. Netscape’s internal codename for Navigator was adopted by the open source community and Mozilla was born. Mozilla turned into Firefox and the rest is history. By now Linux was wiping away market share from Microsoft’s server-side solutions. Firewalls, web servers, ADSL modems and the Internet’s core infrastructure all ran on either Linux or a BSD derivative like OpenBSD or FreeBSD.

Apple also made an incredible comeback in the 2000’s with its stylish PC’s and portable gadgets. Names like iPods and iPhones became mainstream, all running Open Source or derivative software. The Darwin kernel powers Mac OS X, which comes with a full suite of GNU tools and programming compilers.

GNU itself, long thought of as an alternative and cult OS driven by Richard Stallman, had now gone mainstream. GNU was everywhere, powering Linux, Mac OS X, Android phones, a great share of the Internet infrastructure and millions of home PC’s. Universities started using Linux for teaching. Open Source implementations of the Java Virtual Machine began to be used in teaching instead of closed source Fortran and Pascal implementations.

The world had gone Open Source and by the year 2018 Microsoft had already adopted OSS as well. While Windows and other strategic software haven’t been open sourced, many of Microsoft’s flagship products have been made available for Linux and more are in the horizon.

In January of 2009 the first implementation of Bitcoin was made public and the very first transactions went live on the blockchain. Bitcoin consisted of a small program written in the C++ programming language, using the Qt framework for its graphic user interface. The implementation, although a bit quirky according to some, was clean and had a scalable design. Like with most open source software, a community of enthusiasts quickly formed around Bitcoin – this group would later be called the Core developers. The concept of a core team spread to many other cryptocurrencies which initially forked Bitcoin.

One of open source’s most versatile concepts is that of forking another project. If you feel like experimenting a new feature, you may fork any open source project and test your ideas on it. If your experiments are successful, you may present your results to the original project managers and they may decide to incorporate your improvements to the main tree. This is how many developers have become contributors to critical projects like the Bitcoin Core code. Forking the source tree is also how many first generation cryptos were developed. Dogecoin, Litecoin and tons of others were forked off the main Bitcoin development tree sometime during 2013 and then had their own mining algorithm adapted.

Most inter-developer communication in cryptocurrency development, and open source in general, is carried out by mailing lists and private emails. Although some new and modern communication platforms like Slack have grown in popularity, especially since the ICO boom, old school communication tools still prevail. Especially in the cipherpunk community, such as the folks originally behind Bitcoin, email-based mailing lists are king. The Bitcoin Core team, for example, discusses all BIP’s and technical aspects of Bitcoin development at the Bitcoin-dev mailing list.

Ironically, Windows seems to be a popular platform for cryptocurrency development, even when the end result is 100% open source and licensed under a OSI approved license. Cardano ADA, for instance, has had a Windows wallet for months but still has not released at Linux version at the time of this writing. Bitcoin itself was initially released for Windows and the build system contained in the Satoshi Nakamoto source code release was built for Windows. The community then quickly ported the code to other platforms. Observing many new crypto projects also reveals telltale traces of Windows being used like paths using backlashes instead of forward slashes.

Bitcoin development and improvement processes follow the community-driven methodology similar to those used in projects like Java and the Linux kernel. There’s usually a “request for comments”-like interface where anyone in the community can submit ideas as RFC’s. The better ideas are chosen for discussion on mailing lists and social media. Community feedback is received, technical discussions are held and if the idea seems viable, the source may be forked so the RFC can be tested. When approved, the community may have a voting system to decide whether to pull the changes onto the main tree. In Bitcoin the “RFC’s” are called BIP‘s. Bitcoin-dev mailing list actively discusses several BIPs being considered for inclusion into the main Bitcoin source in the future.

The community is also able to communicate with the main developers of open source projects via bug tracking systems. The best bug tracking systems available today are open source and have been extracted into autonomous systems from insider previous open source projects. Bugzilla, for example, is written in the Perl programming language and has been upgrade to a top level project from being just a development tool in the original Mozilla browser development effort. Most of the maintenance work in open source projects happens inside a bug tracking system.

Another factor in requiring open source software for cryptocurrency implementation is the fact that source code is cryptocurrency regulation. In Bitcoin, source code is the law. There is no other official documentation of Bitcoin rules other than the official Bitcoin Core source code in C++. All the monetary policy rules, network difficulty system, consensus system, improvements like SegWit, block reward payouts and everything else in the Bitcoin system is coded in C++. In Bitcoin, C++ is the legal language and the laws governing the system are encoded in this language. Without open source software, this would be impossible and would require trusting some centralized party that the rules have been correctly implemented.

Some cryptocurrency software is closed source. Mining programs which claim to be faster than pen source alternatives, for instance, attempt to hide their implementation details in the form of compiled closed source compilations. Not surprisingly, some of these programs have been known to scam their users, steal coins and even embezzle of crypto funds during their operation. At least one such mining program has been known to charge hidden fees (steal) from miners during operation. For any cryptocurrency project to be successful, being open source is mandatory. Most closed source projects are taken with extreme skepticism in the cryptocurrency community.

Git has been the preferred open source version control system (VCS) employed in cryptocurrency projects. It was originally developed by Linus Torvalds for the development of the Linux kernel. Git’s first large scale project was, for that matter, none less than one of the most closely guarded source code repositories in the world: Linux. Any vulnerabilities in Git could lead to the compromise of the Linux source code base. Nonetheless, Linus took on the challenge to create a VCS that suited his view of the development process. Git brought many improvements over CVS and other version control systems used at the time. Git bases its decisions on the contents of files and files can be any format they wish, Git can detect changes and update its repository accordingly. Branching and forking in Git are extremely fast because of how it manages such operations (it must moves pointers around and avoids moving data as much as possible). Because Git was fast and secure, it ended up being widely adopted for any kind of software development. Today, Github is one of the world’s most popular open source development websites, and is entirely based on Git on the back-end. The recent acquisition of Github by Microsoft is one more sign that the previously closed source giant is moving in the direction of OSS.

Peer review, just like it was in the 1960’s, is one of the most valuable advantages of open source development. Bugs are found quickly, can be fixed quickly and new releases can be pushed to users in a matter of minutes. Some modern software development methodologies take the concept of peer review to another level, promoting real time peer review as the code is being developed. Extreme programming (XP) uses this approach by encouraging pair-programming. In pair programming, one person does the coding the another developer sits besides them constantly watching what’s being done. Any obvious mistakes can be caught early like this real time peer review. In active projects like Bitcoin, as soon as any change is pushed to the main repository, developers will pull the updated history to their local development machines and will scrutinize every byte that’s been changed. Git and other modern version control systems allow developers to run complex comparison routines and visualize changes in graphically pleasing screens. Any attempts to push malicious or buggy code to the main repository is very likely to be caught during these early reviews.

Open source compilers have also been crucial to the success of cryptocurrencies. The GNU C compiler suite is by far the most widely used compiler used in crypto development, although projects like Cardano ADA use the GHC suite of Haskell compiliers, Ethereum uses Node.js, Go and C++, all of which are also open source. Having a trustworthy compiler is crucial in cryptographic work. In 1984 Bell Labs and C language / UNIX pioneer Ken Thompson demonstrated how a compromised compiler can inject malicious code into compiled programs and is able to perpetuate itself in an environment as secure as Bell Labs for months without being detected. In fact, compromising the compiler means nothing at all in the project can be trusted. Backdoors and other surreptitious channels can easily be inserted into software, even if the target code is open source, a closed source and malicious compiler can still inject code that is invisible on the source tree. Therefore the availability of open source compilers like GCC is crucial to the success of cryptocurrencies.

As the reader can see, the most crucial aspects of cryptocurrency development are backed by open source software. OSS pioneers like Richard Stallman have given an enormous contribution to the development of cryptos and their legacy will live on in the most successful crypto projects of the future. Open source operating systems, compilers, version control systems, bug tracking and communications and messaging systems all guarantee the transparency and trust placed by the community in the end resulting binary code. Many closed source cryptocurrency applications have surreptitious and malicious code in them, showing how important it is to have OSS be the standard for all crypto programs.

We hope you’ve enjoyed this overview of the importance of open source to the development and evolution of cryptocurrency software. The transparency and accountability made possible by cryptocurrencies could not be complete without full transparency of the underlying software. This wealth of OSS tools is available to us thanks to the hard work and technical know-how of thousands of programmers, engineers, hackers and even cyberactivists who have lent their valuable time to give us the powerful free and open source tools we have today.


OSI Logo Credit: Creative Commons Attribution 2.5 License.
Trademark (TM): The OSI Keyhole Logo is a recognized trademark: Benelux, United States Patent Office