I periodically receive queries on open source software (OSS), particularly the complicated GPL license from my developer friends. Understanding the OSS licenses is as important for programmers and software developers as, say, understanding the Creative Commons licenses would be for artists. They should be clear whenever they use OSS (which is often) on the scope of restrictions that may accompany the software, and when they want to put something they have created in the open source domain, what is scope of rights they want to grant to users and what license to choose accordingly. I decided to do a few posts on how OSS works, and how one navigates the terrain on OSS licenses, particularly the GPL.
Our first post today is an introduction to OSS, a beginner’s guide to understanding what OSS is and the philosophy behind it. In the next post to come we shall cover the more complicated and specific questions faced by one working with the GPL license.
OPEN SOURCE SOFTWARE: AN INTRODUCTION
Until the late 1960s, hardware and software were almost always sold bundled together. The computers of that decade, unlike today’s, were large mainframe machines that were sold or leased by large corporations who usually provided the source code of the software along with the hardware. It is during this time that ‘hacker culture’ took root at Massachusetts Institute of Technology (MIT). Even though the word ‘hacker‘ has several negative connotations now, including meaning ‘cyber criminal,’ to begin with it meant something entirely different. Hacker culture was built primarily around the tenets that access to computers should be unlimited, information should be free, and programmers should be judged on the basis of their work and not other criteria like educational degrees, position in an organization, race, etc. In 1969, the United States government filed an anti-trust lawsuit against IBM, which led them to unbundle software and services from their hardware sales. This marked the beginnings of proprietary software. As proprietary software started to become the industry norm, hacker culture began to crumble. Companies no longer made source code available and restrictions were placed on how software could be used, modified and distributed. It is as a reaction to these changes that free and consequently open source software were born.
Richard Stallman, inventor of the General Public License and founder on the GNU Project, was famously prevented from debugging a Xerox printer prototype at MIT’s AI Lab in 1990 because the developer of the printer’s driver software couldn’t share the source code due to his non-disclosure agreement with Xerox. This and other incidents made it clear to Stallman that he was against the restrictions placed on software that limited the user’s freedom. He founded the Free Software Foundation (FSF) in 1985, and began advocating that software should be licensed to users in a manner that gives users the freedom to run the program for any purpose; study how it works and modify it to suit their particular needs; redistribute it; and improve and release the improvements they make to it so that the entire community can be benefitted. Such software came to be known as Free Software [http://www.fsf.org/about/what-is-free-software].
Open Source Software
The term ‘open source software’ is newer. In 1998, the Open Source Initiative (OSI) was founded by Bruce Perens and Eric Raymond. Perens and Raymond felt that if free software was rebranded, it could become more attractive to the commercial software industry.
The definition of Open Source Software (OSS) is published and maintained by the Open Source Initiative [http://opensource.org/osd-annotated]. A software can be called open source if it meets certain criteria set out by them. The software must be licensed such that it can be freely redistributed. The program must also include the source code and it should allow its distribution both in source code and compiled form. In addition, it must allow derived works and modifications that can be distributed under the same license as the original software. The license cannot discriminate against any persons or group, or against any field of endeavour. This criteria seeks to prevent any loopholes that would discourage the use of the software commercially. The rights given to the user must not depend on the program being part of a particular software distribution. Neither should the license place any restrictions on other software that is being distributed along with the licensed software. Finally, the license should be technology neutral.
Free = Freedom
Stallman’s use of the analogy where he likened free and open source software to ‘free speech’ rather than to ‘free beer’ is possibly the simplest guide to understanding what ‘free’ means with regard to free and open source software [read the full interview with Stallman at https://www.gnu.org/philosophy/luispo-rms-interview.html]. The ‘free’ in free software means that the user has the freedoms stated in the sections above, not that software is necessarily provided free of cost. These are mandatory freedoms in the OSS paradigm as opposed to proprietary licenses which impose various restrictions on the user. To clarify further, free and open source does not mean ‘non-commercial’. The idea is for the OSS to be available for use in commercial development and distribution, and most OSS licenses allow you to charge a distribution fees as well.
Restrictive v. Permissive Licenses
GNU licenses are based on the premise that the freedoms granted by the author in an OSS to a user cannot be taken away from anyone else through further distribution of the OSS or its modified version. This means that a user accessing an OSS under a license can distribute it further under the terms of the same license, thus ensuring that the same freedoms apply to all users of the license. This led to some discomfort in various quarters with the restriction imposed on further distribution under same license terms. It must be noted though that the purpose of this restriction was to ensure the continuing freedom.
Consequently, a number of ‘permissive’ licenses (for instance, the BSD and MIT licenses) appeared which pose no conditions on the redistribution of OSS aside from the fact that one must attribute copyright to the author. These two categories of licenses, and the specific licenses under each represent the two ends of the debate around how OSS should be licensed, and a developer may choose a license according to his allegiance and preferences.