Friday, June 21, 2013

Open Communication Leads to Open Source Software

The Internet may be the most significant innovation since movable type. It certainly has changed the way in which people across the world communicate with each other. As early as 1994, when “the Web” was still in its infancy, Harley Hahn and Rick Stout recognized the impact the Internet would have on open communication:
When we connect computers we invariably create something that is much more than the sum of its parts. As we said, the Internet consists of millions of computers and millions of people, but the computers are not important: we use them only to run our programs … What is important is something that we cannot yet understand, the answer to the question: What happens when millions of people gather in a safe place to talk and to share? That is what the Internet is all about and that is what we are just beginning to find out.
In the same way that movable type led to a revolution in printed communication, the Internet started a revolution in open communication. With open communication, we break down barriers, allowing people to collaborate as never before. Thomas Friedman describes the Internet and the World Wide Web as a “flattener,” enabling people around the world to easily communicate with each other:
But if we were really going to make the most of this breakthrough [PC-Windows era], we needed a breakthrough in connectivity—one that would allow each of us to take our digital content and send it anywhere at very little cost, so that others could share it and work on it with us. The “event” that made that happen was actually a coincidence of events that took place in the space of just a few years in the 1990s—the emergence of the Internet … the World Wide Web … and, finally, the spread of the commercial Web browser … This sudden revolution in connectivity constituted a major flattening force.
Speaking at TED2012, entrepreneur and X Prize Foundation creator Peter Diamandis said the Internet bids goodbye to linear thinking. The Internet has moved us from local thinking and linear growth to global communication and exponential expansion. Similarly, technology turns scarcity into abundance. With an Internet made up of peers, everyone is now on equal footing. People of different backgrounds can work together via social networking sites, over email, or with other open communication. And the Internet continues to expand its reach. In less than ten years, Diamandis estimates three billion new minds will participate in a global conversation via the Internet:
But here, here is the biggest force for bringing about a world of abundance. I call it the rising billion. … We just passed the seven billion mark on Earth. And by the way, the biggest protection against a population explosion is making the world educated and healthy. In 2010, we had just short of two billion people online, connected. By 2020, that's going from two billion to five billion Internet users. Three billion new minds who have never been heard from before are connecting to the global conversation.
The open communication afforded by the Internet makes it a Great Innovation Equalizer which enables other technology innovations, such as “open source software.” Generally, open source means that the program’s source code—the computer instructions that define how the program operates—is available for anyone to view and edit. In open source software, developers from around the world come together to work on a computer program, which they then make available for anyone to use, for free. Developers may access the source code, and can modify the code to fix problems or extend the software to do new things. This access to the program’s source code allows programmers to exchange ideas and information, which in turn enables rapid development of enhancements and bug fixes. As open source software advocate Eric S. Raymond comments, “given enough eyeballs, all bugs are shallow.”

By working collaboratively in this model, open source developers resolve issues that a single programmer might find impossible. An open source program can quickly grow from an interesting proof of concept used by only a few developers to a mature, stable application that benefits many general users. Today, many popular computer programs are written under an “open source software” or “free software” license, or based on open source software projects. For example, the Google Chrome and Firefox web browsers are based on the open source Chromium and Mozilla projects, respectively. The Calibre ebook library program is completely open source software, as is the OpenOffice desktop suite, the WordPress blogging platform, and the 7-Zip file archiver.

The open source software community is fond of using the comparison of cathedrals versus bazaars to demonstrate the differences in how proprietary software (“cathedrals”) and open source software (“bazaars”) is developed. This model was coined by open source software evangelist Eric S. Raymond in his 1996 essay, “The Cathedral and the Bazaar.” Raymond’s comparison is simple:
Linux overturned much of what I thought I knew. I had been preaching the Unix gospel of small tools, rapid prototyping and evolutionary programming for years. But I also believed there was a certain critical complexity above which a more centralized, a priori approach was required. I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time. Linus Torvalds’s style of development—release early and often, delegate everything you can, be open to the point of promiscuity—came as a surprise. No quiet, reverent cathedral-building here—rather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches … out of which a coherent and stable system could seemingly emerge only by a succession of miracles.
Raymond’s is a very concise description of the open source software development model. It also begins to touch on the meritocracy of open source software development: everyone can contribute, but the best ideas and the most talented developers tend to rise to the top. The cathedral/bazaar comparison is interesting because it demonstrates three facets:

  1. It is simple enough to propagate.
  2. It is easy enough for non-technical people to understand.
  3. It is catchy.

Put in its most basic terms, open source software is any software where the users can see the source code. There are remarkably few rules that govern the conditions under which the users can see the code. The Open Source Initiative has attempted to document ten rules that make up the “Open Source Definition.”  While Free Software Foundation founder Richard M. Stallman may disagree with the “open source” terminology in favor of his own “Free Software Definition,” there isn’t a practical, significant difference between the two. The gist of both terms is that anyone may view the source code, and that both the program and its source code may be shared with others. Generally, the Internet community agrees that any software that provides the source code is “open source software.” For the purposes of this article, consider the term “open source software” in this more general definition.

In order for open source software to thrive, it requires excellent and open communication among all its participants. Open communication breaks down barriers, allowing people to collaborate as peers. And communication in several forms is critical to the success of open source software. Through this interchange of ideas, developers work together for rapid and continual improvement. Linux creator Linus Torvalds describes this dependency as a peer-review:
It’s a wrinkle on how academic research has been conducted for years, but one that makes sense on a number of fronts … The theory behind open source is simple … With teams of contributors working in parallel, the results can happen far more speedily and successfully than if the work were being conducted behind closed doors. That’s what we experienced with Linux. Imagine: Instead of a tiny cloistered development team working in secret, you have a monster on your side. Potentially millions of the brightest minds are contributing to a project, and are supported a peer-review process that has no, er, peer.
Most open source software projects use an email list for developer communication. Email is asynchronous communication, where the recipient may not read your message and reply to it for several days. However, email is ubiquitous, and as such is a necessary component in communication that spans the globe.

Aside from email, open source software projects must equip its co-developers or user-developers with a method of collaboration. Developers may discuss possible new features via email, but eventually they will need to contribute those improvements in such a way that other developers can make use of them. This function is generally not performed over email, but rather via a software versioning and revision control system such as Github, Subversion, or the Concurrent Versions System (CVS). Through a revision control system, developers can “check in” new changes to a database, and other developers can merge those edits into their own working versions.

The third communication method in open source software is a bug tracking database. As in traditional software development, no open source software project is perfect, without errors. Geoffrey James pithily summarizes this concept as one humorous tenet in his “Tao of Programming”:
The highest sounds are the hardest to hear.
Going forward is a way to retreat.
Greater talent shows itself late in life.
Even a perfect program still has bugs.
A bug tracking database is often the most effective way for developers to identify broken behavior and prioritize new features. An open source software project cannot improve itself if it cannot identify what it wrong in the software. But to support effective communication between developers, the bug tracking database must support two critical features:

  1. The bug tracking system must be easy to use: entering new bugs, and following existing bugs. If your system is too difficult to use, no one will want to enter new bugs, and problems in your software will remain unfixed.
  2. The bug tracking system must have a strong query capability. If your users and developers cannot look up existing bugs, you'll find your project will get flooded with lots of duplicate bugs.

Email lists, software versioning and revision control systems, and bug tracking databases provide an online method for developers to work together for rapid and continual improvement. Through open communication, everyone can contribute on a level playing field, allowing people to collaborate as never before.  This changes the software development model; change becomes rapid and user-driven.

But the level of interaction necessary to become a driving force, a tipping point in the collaborative model, was impossible before the invention of the Internet. In this way, the Internet becomes a Great Innovation Equalizer. The open communication afforded by the Internet encourages participation and open communication, which fosters innovation. By working collaboratively in the open source software model, developers engage in Raymond’s babbling bazaar of differing agendas and approaches, and fitfully produce a coherent and stable system. Open source software development encourages participation and open communication. But none of this would be possible without the Internet and its ability to connect people and ideas.

No comments:

Post a Comment