Thursday, May 24, 2012

Open Source Licenses - Part 1

Having worked with open source software for quite some time, I thought it would be nice to jot down a few of my thoughts on open source, in general, and the common licenses, in particular. Open source is quite common in technology, and especially the smartphone industry today. As I have noted in one of my previous posts, open source is used in four of the popular smartphone OS’es today (iOS, Android, Symbian and Bada/Tizen). While I started, I thought this would be one post, but as I rambled on, I thought it would be better readability to divide this across two posts. So here is the is the first part in a 2 part series on open source.


What Is Open Source?

Before getting into the details of licensing, it maybe good to define the concept of open source. In very simple terms, "open source" means software that is available in source code form, and which allows users to debug, modify, enhance, and re-distribute it. However, there is a belief or philosophy behind open source, which is deeper than just having source code available. The philosophy is that users of software should have freedom to run the software, customize it according to their needs, improve the software, and also make it available for others to use, thereby propagating "good" software. Due to the fact that the open source concept revolves around the freedom of software users, it is also sometimes called "Free Software". Richard Stallman founded an organization called the "Free Software Foundation", and he stresses that the "Free" does not refer to price, but to freedom. A famous and funny quote from Mr. Stallman is "To understand the concept, you should think of ‘free’ as in ‘free speech’, not as in ‘free beer’". Open source resolves around this fundamental philosophy of freedom, and most of the licenses reflect this in their terms & conditions.
Another non-profit organization - Open Source Initiative(OSI) - goes a step further and actually defines the criteria that a software should have before it can be considered to be open source. The criterion are (in summary, full list at http://www.opensource.org/docs/osd)

  • Freedom to redistribute the code.
  • Freedom to access source code.
  • Freedom to make modifications.
  • Integrity of the original author’s source code.
  • No discrimination against persons, group, or fields of use, or specific technology.


Why Open Source?

Having defined what it is, the question arises why it is so popular. Here are a few reasons why I think open source is popular.
  • High quality, and/or feature rich software: This is a general statement, and of course, there may be many exceptions. However, most open source projects have contributions from highly dedicated software engineers/programmers from around the world. Development is not budgeted by a single organization, but spread across many individuals, and the time and effort invested in the software is high. The result is either high quality code, or a plethora of features, or both. Note also that the source code access means that each programmer’s work is being scrutinized by an open peer review, which is one of the reasons for high quality code.
  • Significant savings in R&D cost: More and more organizations are using open source rather than develop their own proprietary versions of the same software. One of the reasons has to be the large savings in R&D effort (which translates into R&D expenses, that reduces the bottom line).
  • Faster time to market: As well as saving R&D costs, using open source means that time is not wasted in designing, implementing and testing the software which is already available. It involves significantly lesser effort in modifying existing software to meet a specific need, than to develop something from scratch. Again, this is a very generic statement, and exceptions will be there.
  • Supplier Lock-In is prevented: During my tenure as a multimedia integration engineer in a mobile handset manufacturer, I had encountered a case where a chipset supplier had used closed, proprietary API’s to implement some media accelerators. This meant that for every small minor API change, every little enhancement or bug fix, we had to raise a request to this chipset supplier. This would take time, and of course, money as well. Had this handset manufacturer mandated that the supplier use open source API’s to implement their components, the situation would have been much easier. Anyone could have made the minor tweaks that are always needed when integrating complex software components. Moreover, the company could also choose to switch suppliers without risking costly changes in their own code (as the open API’s would ensure a new supplier’s implementations worked).

Open Source Licensing: Common Concepts

Copy-left clauses, no warranty, and preservation of original copyright notice are some common concepts found in most licenses.
  • Copyleft Clause: This is probably the most popular notion in open source, made popular by the GPL license. Copyleft means that if someone modifies the open source software, then the modified software should also be licensed in the same terms as the original software. In other words, if the original software was available to all in source code form, the modified one should also be available to all in source code form. The term copyleft is probably a twisted acronym to copyright. However, it should not be assumed that if a software license has a copyleft clause, it is free of any copyrights. All software has copyright attributed to the original author. The license allows you to use the copyrighted work, but it does not mean that there is no copyright. Note also that not all open source licenses have a copyleft clause. Some, like the L-GPL clearly point out in which cases copyleft would be applicable, and in which cases it would not. Others like the BSD-like licenses have no copyleft clauses at all.
  • No Warranty: When you buy a product - whether software or hardware - in exchange for money, it generally comes with a warranty. The warranty states that if the product fails to work in the fashion specified by the seller, the buyer is entitled to free repair or replacement. Open source software do not come with any warranty. Since the software is generally distributed free of cost (except maybe the cost of the medium in which it is stored like CD/DVD or flash memory), no warranties come with it. The authors of the software cannot be held responsible if the software fails to perform as expected.
  • Preserve Original Author Copyrights: While open source licenses allow users to modify the code, one thing not allowed is to remove the copyright notices of the original authors. This is quite likely, to prevent software plagiarism, where someone pretends to have authored software written by someone else. It is also a matter of being right vs wrong, and giving the original authors credit where it’s due.
  • Implicit of Explicit Patent grant: Some licenses - either by explicit statements or otherwise - involve a patent grant from authors of the software to all users. Since users themselves may modify the software (i.e. users and authors are the same), it really involves a patent grant between users. Which means that if a group of technology companies are using a software under a license that involves a patent grant, they effectively take an oath to not start a patent litigations against each other. The situation with patents may be a little more complicated, as there could be one company which is not using the license, but still feels that the software in question is infringing their patents. For e.g. Microsoft, which does not use the Android software, has initiated and settled infringement cases against Android manufacturers, claiming that some features of Android handsets infringe their patents. A similar case with the Google open sourced On2 VP8 video codec (WebM project), which claims that it is royalty free, but the MPEG LA has formed a patnet pool around VP8, implying that it is not royalty-free after all.

Common Open Source Licenses

There are many open source licenses popular today. The OSI website lists 69 different licenses which comply to open source criterion. A few ones worth mentioning (for no specific reason, except that I am familiar with them) are below
  • GPL - Acronym for General Public License. Currently in version 3.0, it is the license which popularized the copyleft concept, and the famous Linux kernel is licensed under v2.0 of this license.
  • L-GPL - Lesser General Public License. Sometimes also known as Library GPL, as it defines where copyleft kicks in, and where it does not. Specifically, if the open source software is used as a helper library for a application or other software, then copyleft is not applicable. Since the terms are better defined in LGPL vs GPL, it is the more popular license when open source is used in commercial products.
  • BSD - Stands for Berkely Software Distribution. A very permissible license, which has no copyleft clause at all. There are also several other "BSD-like" licenses.
  • Apache Public License - Similar to BSD, but has an explicit patent grant clause.
  • Eclipse Public License - Famous for the Eclipse IDE.
In the next post, I’ll try to delve deeper into some of the above, especially the GPL and L-GPL.

No comments: