We trace the rise of free open source software—code that can be freely modified and shared—from philosophical outlier to modern powerhouse Credit: Thinkstock Underlying every piece of software you use is source code that issues the commands and handles the data that allow the software to do what it does. The question of who should have the right to look at, alter, or redistribute that source code has long been one of fundamental ideological divides within the world of computing. Proponents of open source software, as the name implies, come down on the side of openness; they feel that people should have the right to access the source code of the software they use. As we’ll see, though, in practice there’s a lot of variety that falls under that label. Various kinds of open source software exist in just about every niche you can think of—in fact, open source dominates many of them. What is open source software, what is free software—and are they different? A succinct definition of open source software is that it’s software whose underlying code can be examined, altered, and redistributed. (There’s a longer and more official definition that we’ll get to in a bit.) The “altered and redistributed” parts are really key to the open source philosophy. Despite what the name might imply, simply opening up your source code so people can look at it doesn’t make it open source. In some ways, the term “open source software” is a retronym: In the early decades of computer science, software’s source code was available as a matter of course and freely exchanged between researchers and industry scientists. Computers were few and far between and were expected to be extensively modified by their users, so people needed access to the code. In many ways software was seen as an add-on to computer hardware; not until 1974 was it even legally established that software was subject to copyright. But as the microcomputer era dawned in the late 1970s, the industry began to shift to the position that software was something that had monetary value in and of itself, and that access to the underlying code could and should be restricted in order to protect software creators’ rights. Bill Gates’ famous 1976 open letter to hobbyists complaining about the widespread piracy of Microsoft’s first product, the Altair BASIC interpreter, is a watershed document of this shift. While these new ideas were quickly taken up by the rapidly growing software industry, some people pushed back against them. One of the earliest opponents was Richard Stallman, who founded the Free Software Foundation (FSF) in 1985. The “free” in free software is meant to denote users’ freedom to alter and distribute code as they like; there’s no rule against charging money for free software in this sense. The distinction is often drawn between “free as in free beer” and “free as in free speech,” with free software being in the latter camp. Still, the idea of free software made many people in private industry, who were, after all, not fans of giving things away, nervous. In 1998 Christine Peterson coined the phrase “open source” in part as an attempt to make the idea more accessible to newcomers, particularly those working at for-profit companies. Though Stallman has resisted the term open source, saying that it turns away from the original political and philosophical ideas of free software, it has come to be the dominant phrase describing this concept. The Venn diagram of free and open source software overlaps enough that sometimes the two are combined under the acronym FOSS (free and open source software). In general, all free software is open source, though a small portion of open source software has license terms that means it’s not free (more on open source licensing in a moment). The concept of free and open source software gave rise to another retronym definition: “proprietary software,” any software that isn’t open source. Open source software licenses All the rights and responsibilities involved in open source software are established by the licenses under which the software is distributed. As the legal doctrine that software was subject to copyright became established, software licenses began to be written to provide a contract between the copyright owner and the user, giving the user permission to execute the software on a personal computer. Software licenses originally existed to restrict user behavior and protect the rights of the software manufacturer. But free software advocates realized that they could invert licenses’ original purpose: A software package’s license could instead require that the underlying code be available to anyone using the software, and that users had the right to edit and redistribute that code. The first open source software license (though it predates the term) is probably the GNU Emacs copying permission notice, released in 1985 for the version of the Emacs text editor written by FSF’s Stallman. Since then the number of free and open source licenses has proliferated, each setting slightly different terms for the use of the licensed code; Wikipedia maintains a pretty good chart with details on the most important licenses. By definition, any of these open source licenses grant users the three fundamental freedoms of being able to read, edit, and redistribute source code; the main area where they differ is in the terms they impose on redistribution: Permissive licenses allow you to redistribute any source code however you see fit. You could, for instance, take source code released under a permissive license, incorporate it into your own software, then release that software under a proprietary license. The BSD license is one of the most famous permissive licenses. Copyleft licenses require any redistributed code that incorporates the licensed code to also be released under a similar license. The various versions of the GNU Public License (GPL) from the FSF are copyleft licenses, and their goal is to require developers to pay it forward by sharing the benefits they received from incorporating open source code in their project. It’s interesting to note that the ideas behind these licenses have spread beyond the software world. The Creative Commons is a legal infrastructure for applying similar terms to written or visual artistic works. The Open Source Definition and the Open Source Initiative Open source is by its very nature not controlled by any single entity or organization. In 1998, a group of prominent developers including Bruce Perens and Eric S. Raymond founded the Open Source Initiative (OSI), a nonprofit dedicated to advocacy for open source within the larger software industry. The OSI tried and failed to trademark the term open source in 1999; nevertheless, their formal Open Source Definition is, by consensus, the framework all licenses that call themselves open source follow. In addition to the freedom to examine, modify, and redistribute code that we’ve already discussed, the Open Source Definition forbids licenses that discriminate against specific groups or people, that prevent the code from being used for a specific purpose or field of endeavor, or from running on a specific device or type of device. Open source development and open source projects Development using open source code takes place in all kind of environments, from universities to big corporations, and often follows the same patterns as any other kind of software development. But there’s a specific kind of open, community development process that’s associated with open source. In his influential essay “The Cathedral and the Bazaar,” Eric S. Raymond outlined his vision for this process, where anyone can access the code, and updates are added to the codebase from a widely distributed group of developers who dip in and out as their interest dictates. Open source development of this type is organized around open source projects. These sometimes work on a single piece of software and sometimes a whole related set of applications. Version control software keeps everyone’s contributions in line. GitHub is probably the most popular. Sometimes begun by a single person, open source projects are generally self-organized, small internet communities, and though anyone can contribute to any project, most are usually worked on by a relatively small set of developers. Sometimes a project may be sponsored by a for-profit company that plans to use the software it produces, even going so far as to put the project’s most prominent developers on the payroll. Open source examples Open source software is in fact omnipresent and creates much of the foundation of the modern Internet. Perhaps the most famous open source project is Linux, the open source Unix variant that powers millions of servers. Other prominent and extremely crucial projects include the Apache web server, the MySQL database, and WordPress. Numerous development frameworks are released as open source, from Ruby on Rails to Microsoft’s .Net Core. Open source has been less successful in producing home computer software intended for ordinary users. Despite the high cost of proprietary software packages such as Microsoft Word and Adobe Photoshop, open source counterparts like OpenOffice and GIMP never managed to find a niche beyond diehard enthusiasts, in large part because the open source community has traditionally prioritized features and flexibility over ease of use. (File format lock-in from proprietary vendors hasn’t helped.) Even Linux, whose advocates have been claiming since the late 1990s that the open source OS is only a year away from dominating the desktop, has never really managed to jump to the consumer space. In general, open source is used for infrastructure far more than for end user software. But the movement from monolithic software you run locally to SaaS apps has been a boon to open source, as cloud-based infrastructures are largely based on stacks dominated by open source. Remember what we said about for-profit companies supporting open source? Often those projects are produced under a permissive license, so those companies can put open source code at the core of their proprietary offerings while maintaining a separate open source codebase in parallel as a community project. For instance, the Android mobile OS has Linux at its core; all of Apple’s mobile and desktop OSes are based on Darwin, an open source operating system originally derived from BSD Unix. Even Google’s Chrome is based on an open source browser called Chromium. The open source community and the open source movement Open source is more than just a development process; it’s a philosophy that people are passionate about, and it’s a social community that anyone with programming skills can join. In fact, it’s a whole series of communities, as the Linux Foundation puts it. (The existence of nonprofits such as the Linux Foundation and the OSI is an important aspect of that community.) Florian Effenberger has a great essay on how the open source community enriched his life. You’ll often hear people talk about the open source or free software movement, which has a connotation of politics and advocacy. Plenty of people in the open source community have pushed for widespread adoption of open source software for a variety of reasons: They think open source produces inherently better code, or they think access to source code is a fundamental right that computer users ought to enjoy, or some combination of the two. This aspect of the community seems a little less visible today, but maybe that’s because, in many ways, open source has won. Back in 2001, then-Microsoft-CEO Steve Ballmer said that, due to its open source license, Linux was “a cancer that attaches itself in an intellectual property sense to everything it touches.” Today, Microsoft is an extensive user and producer of open source software. That’s the last two decades of open source history in a nutshell. Open source software download Want to get started browsing and tinkering with open source projects? Check out opensource.com’s Projects and Applications page, GitHub’s Explore tab, or the Open Source Development Network’s Software Map. There’s plenty for curious folks of any skill level. Related content feature 14 great preprocessors for developers who love to code Sometimes it seems like the rules of programming are designed to make coding a chore. Here are 14 ways preprocessors can help make software development fun again. By Peter Wayner Nov 18, 2024 10 mins Development Tools Software Development feature Designing the APIs that accidentally power businesses Well-designed APIs, even those often-neglected internal APIs, make developers more productive and businesses more agile. By Jean Yang Nov 18, 2024 6 mins APIs Software Development news Spin 3.0 supports polyglot development using Wasm components Fermyon’s open source framework for building server-side WebAssembly apps allows developers to compose apps from components created with different languages. By Paul Krill Nov 18, 2024 2 mins Microservices Serverless Computing Development Libraries and Frameworks news Go language evolving for future hardware, AI workloads The Go team is working to adapt Go to large multicore systems, the latest hardware instructions, and the needs of developers of large-scale AI systems. By Paul Krill Nov 15, 2024 3 mins Google Go Generative AI Programming Languages Resources Videos