FOSS Principles Explained Ch.III: Open Source and Copyleft

Open source licenses can be roughly divided into two families: copyleft (non-permissive) and non-copyleft (permissive). Most copyleft licenses are open source, but not all open source software is copyleft. Confused? Let’s break down what copyleft means to make things clearer.

The term copyleft (a play on the word copyright) refers to open source licenses that allow derivative works to be made to the original source code, but require such derivative works to be covered under the same license as the original work. Copyleft is also known as “viral,” in reference to derivatives that preserve the copyleft license when distributed or modified.

Another aspect of copyleft’s virality is its tendency to overrule other effects from other licenses when it’s distributed in conjunction with such (with the exception of the Affero GPL, which has the same tendency even just used, and not distributed). Steve Ballmer once called the GPL copyleft open source license, “a cancer that attaches itself in an intellectual property sense to everything it touches.” But, as we all know, Microsoft is now one of the biggest contributors to the open source community.

The most common copyleft license in use is the GPL, the GNU General Public License, which maintains the biggest market share among all open source licenses. Famous GPL software projects like Linux and MySQL are considered to be the closest realization of the open philosophy – free, growing, and community-improved software, available to everyone. But, of course, there are other well-known copyleft licenses like the MPL (Mozilla Public License), the Nokia Open Source License, and the Sun Public License.

So copyleft is viral and non-permissive. What are permissive or non-copyleft licenses?

A non-copyleft permissive license allows the covered software to be used as part of programs distributed under other licenses (open source or not), without imposing the license terms on the entire distributed software (derivative or not). The three most common non-copyleft licenses that are considered to be permissive are the Berkeley Software Distribution (BSD) license, the MIT License, and the Apache license, all of which have more than one version.

Non-copyleft permissive licenses preserve the rights granted, rather than “extending” those rights to other parts of the entire work, which are not covered by the same licenses.. People writing proprietary code may prefer to build off of non-copyleft permissive licenses, in order to exclusively exploit their own intellectual property.

Whether a license is characterized as viral or non-viral, under most licenses, the mere use of a library does not “infect” the rest of the code. However, the modification of copyleft code or libraries usually mandates releasing the changed source code under the same license.

The Open Impact

The impact of open source on our lives is substantial. It’s actually so immense that it is safe to say that some of the greatest software and service startups to rise in the last two decades would probably not be here today if it weren’t for Linux, MySQL, and other influential open source tools that boosted their success. Most of the servers that power the internet run open source software, which enables the production and maintenance of source code by the community of its stakeholders. This impact can be shown by the penetration of such huge projects as Linux, Apache, and MySQL from the unorthodox into the standard, not only for small companies, but also for governments and huge corporations like Google and Amazon. Even core internet standards such as OpenSSL, BIND DNS, and the programming languages which power web servers (PHP, Python, and Ruby) are all open source projects. Open source software is also a part of our everyday lives, on our smartphones and desktops. Both businesses and home users use everyday projects like VLC, Drupal, WordPress, etc.

For startups and developers in web environments (in particular), open source has significantly shortened the time-to-market period and helped to considerably reduce development costs. Many reliable, secure, and well-tested open source software projects are available for free, with free community support and proven examples for performance. Many big players in the tech industry, such as Google, Microsoft, and Facebook, also contribute to and maintain these open source projects. Can you imagine any off-the-shelf product that offers all that?

Although startups generally need to cut expenses and minimize development time —mature and established corporations have also come to appreciate the benefits of open source; and, of course, the outstanding contribution of the open source community to bug fixing, performance optimization, and the addition of important new features. Many large companies also appreciate the benefits of sharing their code to market and drive engagement with the programming community. Releasing code as open source can also kick start adoption of new software and standards by an industry because the barriers to entry are lower and 3rd parties can take on the future support and maintenance if needed. And as Eric S. Raymond wrote in his book on the open source software movement The Cathedral and the Bazaar, “Given enough eyeballs, all bugs are shallow.”

The potential benefits of using open source software are huge. Instead of purchasing an OS for their servers—startups, individuals, and corporations can use Linux. Instead of purchasing an expensive database—they can use MySQL. Everyone can benefit from being examined by millions across the world, community support, free code, and compatible platforms and services. This is, perhaps, the most significant contribution of open source to the world of software development.

GPL

Now that we know open source licenses can be roughly characterized as copyleft (viral/non-permissive) or non-copyleft (non-viral/permissive), let’s take a quick look at one of the most important open source licenses in use, the GPL (GNU General Public License).

The GPL is a copyleft license, which means that some of its provisions have the ability to impose the entire license’s terms over proprietary and other open source software.

Section 5 of the GPLv3 gives the legal guidelines for the “viral” mechanism. This section is relevant to the source code, but a similar mechanism exists for executable files

“You may convey a work based on the program, or the modifications to produce it from the program, in the form of source code…provided that you also meet all of these conditions:”

“…You must license the entire work, as a whole, under this license. … This license will therefore apply…to the whole of the work, and all its parts, regardless of how they are packaged.”

GPL copyleft gives everyone the right to use, edit, and distribute any GPL source code or derivative. These rights may extend to any works packaged and distributed with the GPL work.

GPL’s copyleft provisions are considered crucial to the success of community-based projects, because they assure contributors that their work will remain free to benefit the world, rather than being exclusively exploited by software companies that would not have to give anything back to the community. The downside to copyleft is that these provisions can aggressively interfere with work that is protected by other licenses—hence, freedom is not necessarily granted, it is sometimes imposed.

The GPL Virality Exceptions

The GPLv3 and GPLv2 provide two exemptions (‘the GPL safe harbors’) to protect code from the virality provisions. The first exemption is the “identifiably independent and separate software” immunity. This exemption can be found under Section 2 of the GPLv2, and it is somewhat blurred:

“You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:…..”

“If identifiable sections of that work are [1] not derived from the Program, and [2]can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections [3] when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

The numbers placed in brackets in the clause above are meant to stress the three-stage test this expiation provides: (1) the modification is not derived from the open source program (i.e. – it is not work based on the program); (2) it can be reasonably considered an independent and separate work; and (3) it is distributed as a separate work. If you meet these conditions, then the viral provisions should not apply, but as this wording brings both subjective and objective tests into play, it can be hard to determine the result.

The second exemption is the aggregation exemption/immunity:

Section 5 of the GPLv3:

“A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.”

The aggregation exception provides for a technical solution that allows two pieces of software—the one GPL covered and the other not—to be distributed or stored on the same medium. In that scenario, the virality provisions of the GPL would not apply to the non-GPL software. The above subjective aspect of the GPLv2 “identifiably independent and separate software” exemption was incorporated into the GPLv3 aggregation exception in a more objective form.

Note that this provision is similar to the GPLv2 Section 2:

“In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.”