Open Source Licenses - A Quick Dive-In
Understanding the meaning behind the boring texts in open source licenses
Abstract
Every software developer sooner or later decides to use a library, a framework, an already developed system or even a product that uses or is published under an open source license. This article aims to provide a simple, easy to understand interpretation of the rules in some of the popular open source licenses and help developers and project managers start understanding the basic concepts behind free software.
Introduction
Open source software has become an important factor in the software development industry. High-level strategical decisions, through software engineering down to low-level development can be influenced by the decision to use open source components. The benefits of incorporating open source components are numerous - speed, quality of development, achieving compatibility with other products, community support, etc. However, the decision whether to do this or not often depends on the applied license. Understanding the license is often a difficult task due to the usage of complex words and phrases which otherwise should satisfy legal norms.
Common Truths
There are several common points that are true for all open source licenses. Commonly a license addresses issues such as terms of usage, distribution and modification. For example a license could limit the usage to a number of cores in a machine, or number of simultaneous users, or usage in time, just to name a few. Limitations are even harder when it comes to distribution and copying. Generally, all open source licenses are free from such kind of burdens. Open source licenses are different from the ordinary end-user license agreements (EULA) for the fact that they allow more than disallow. Telling if a license is a “real” open source license or only named so is a difficult task. For that reason, the Open Source Initiative (OSI) has created a list of recognized licenses [1] which follow the common principle of the open source spirit. In the rest of this article, when we say “open source license” we will refer to those recognized by OSI.
Free Usage
Users of software published under an open source license should not be afraid of running the software on as many machines as they wish, provide it to as many users as they want or need and use it for whatever reason they have in mind. This is the first important difference from the proprietary software. And it has a great impact on taking the decision to deploy or to use open source software.
Free Distribution
Arguably, open source software would not be so popular these days if it wasn’t its liberal distribution rules.The rules are very simple:
- Get it for free
- Distribute the software to as many users as you can or wish
- If you are skilled in sales, sell and re-sell it!
- Distribute it in any form and on any media
- Modify it and improve it
This is the second enormous difference to the proprietary software. Users, salesmen and developers are given the freedom to access the software and to further distribute it without consideration.
Free Modification
While free usage and free distribution are important for users, salesmen and decision makers, one of the most important sides of a software published under an open source license is the opportunity and the right to be able to have a look at, and even change the actual source code. In certain cases, this is a vital right that gives the developers and software engineers advantage, speed of development and numerous direct solutions for hard to solve problems.
Specific Obligations
While the characteristics mentioned above are common for all open source licenses, there are major differences in certain obligation clauses which can have critical impact on the way a project uses the open source software. Depending on the license of the used software, a project may need to publish part of or even all of its source code. Generally, open source licenses are separated in two distinct categories – those requiring compensation by opening the code that uses them, often classified as “copyleft“, and those which do not insist on that, usually described as more “liberal“. There are many debates on which of both types serves better the open source spirit, a subject we are not going to discuss here. On the opposite, software engineers, project managers and developers should decide for themselves if a license is suitable or not for the project they are involved with when it comes to a liberal or copyleft strategy.
Popular Open Source Licenses
At the time of writing of this article the number of licenses approved by OSI is more than sixty. This section covers only a small portion, including the most popular licenses widely used in the open source universe. However it can be said that the rest of the approved licenses more or less share most of the special obligations covered by the licenses described here. Arguably, the majority of open source projects are licensed under one or combination of several of the following licenses:
- GNU General Public License (GPL) – one of the most popular licenses, the one used widely in Linux-based operating systems. The typical representative of the “copyleft” type. The license which is recommended and promoted by The Free Software Foundation [2].
- GNU Lesser General Public License (LGPL) – a less-restrictive “copyleft” license, slightly different than GPL for the cases in which its “copyleft” obligation is applied.
- Berkeley Software Distribution License (BSD) – a traditional counterpart of the GPL license, for its liberal attitude allowing commercial usage without obligation for direct compensation.
- Mozilla Public License (MPL) – a balanced license that tries to give respective freedoms to both commercial and free software worlds. The license is endorsed by the Mozilla Foundation [3], thus most (if not all) of the projects supported by the foundation use it.
- Apache License – a liberal license which does not require from the derivative works to be licensed the same way, but only “remind” of the usage of the Apache License in the distributed software. Friendly to its usage in commercial software. The license is authored and fully endorsed by the Apache Software Foundation [4], thus most of it projects are using it as a preferred license.
- Public Domain – sometimes there are no specific requirements or obligations accompanying the source code of a project or a product. Sometimes for the reason of simplicity and attitude developers decide to put no limitations, letting it be part of the Public Domain. Shortly, public domain software implies no regulation in the way the software is used.
Taking The Decision
There may be multiple reasons for avoiding usage of open source software, including but not limited to:
- Development model of the open source element
- Obligations of its license
- Usage of third party intellectual property
- Support
Depending on the distribution policy or the business model of the developer, it could be decided that all or none of the mentioned reasons apply, or respectively that all of them are to be considered. Independent on that, the license is usually the first legal base for a decision, while the rest, still being as important as the license, often will require a deeper investigation at a later stage of the decision.
Decision Forces And Use Cases
When it comes to the license, your decision will be affected by several forces. Knowing well the priorities and the requirements of your project which these forces imply will give you a fast answer to the question “To Use or Not To Use?”. Of course these forces are not self-excluding and the decision should be based on a combination of them, depending on their weights. Here are some of the well known ones:
- Type of Usage – Depending on whether the software that will include an open source component will be developed for commercial usage or on the opposite, for non-commercial may have impact on your choice for a liberal or a copy-left license. Liberal licenses such as Apache and BSD are often preferred because they allow other applications to “wrap” them without the need to disclose already developed source code, thus preserving the investment behind its development. On the opposite, if the software is to be published for non-commercial usage, both liberal and copy-left licenses are appropriate. The concrete selection depends on whether you see making the software open source as a viable development model, thus selecting a copy-left license, or it is to be developed privately and selecting a liberal license (see bellow) which will not force you to open the entire product.
- Type of Development – Sometimes opening the source code of an already developed software makes sense in business or strategical aspect, for example if the target is to get contribution by a larger audience of software developers with little or no direct investment in development. If the type of development is open then considering copy-left license is a sane choice for it enforcing the very core idea of keeping the code open source, eventually reaching a larger base of developers being able to look at the code through all its iterations of change and avoiding closed evolution. On the other side, preferring a closed model of development, where a selected number of developers work together, the used component should not affect the process of development. This really means that the license of the questioned piece of software should be liberal enough.
- Affected Architectural Layers – The type of open source license provided by a component may affect the architecture or the building structure of the software using it. Depending on its place in the chain of links between software parts it could be decided if its usable or not. For example, if the component is a library and it is licensed under the GPL you will be obligated to open the entire code of your application. But if this library is licensed under the LGPL it is not necessary unless you change the code of the library, then developers are obligated to release the code of the changes applied to it. The LGPL license is primarily designed to be less-restrictive when it comes to usage of the open source code as a library, while at the same time it insists on giving back code whenever the licensed code has been changed. It is evident that if a library is licensed under Apache or BSD, no restrictions or obligations apply related to software code disclosure. Further, there are cases where the open source component under question is a whole framework on top of which whole new systems can build. Again, the license will decide if developers need to open source upper layers or not. However, even a GPL licensed development framework may declare the so called “exceptions” which allow specific licensing of the elements using it. An example for this is the popular platform for development – the Java Development Kit. It has been licensed under the GPL but still allows applications which are built on top of it to be licensed under a different license.
Open Source in the Wild
The principles mentioned here may sound idealistic or it may be hard to believe that commercial products benefit from open source by both leveraging existing code and giving out code. But there is already a large list of consumer and business products that managed to get the best out of the open source world. And, vice versa, some of the products in the wild are using open source code, but try not to follow the licenses, because they are either afraid their intellectual property will be lost or they just don”t understand the importance of following license rules. Thus, there are community supported initiatives like the “GPL Violations Homepage” [5], which try to defend the rights of the developers publishing under GPL.
Conclusion
Deciding on whether to use an open source component or not is a complex task. This article constitutes a brief overview of the key principles of open source licensing. It introduces the initial basis for considering the usage of third party open source components. Because of the nature of the open source culture and because of the rich diversity of projects licensed under an open source license every particular component needs a proper evaluation and investigation regarding its license, intellectual property, development model, community, support, and other factors that might influence directly or indirectly the development and the distribution of software using it.
References
- Apache Software Foundation
Reference Link - Annotated Version of Mozilla Public License
Reference Link - Open Source Initiative - Recognized Licenses
Reference Link - Mozilla Foundation
Reference Link - GPL Violations Homepage
Reference Link - Free Software Foundation
Reference Link