Showing posts with label open source. Show all posts
Showing posts with label open source. Show all posts

Thursday, May 31, 2012

Open Source Licenses - Part 2

In my last post, I wrote an overview of what is open source, and common concepts for open source licenses. In this post, I would focus on a few popular licenses in open source software.

GNU General Public License (GPL)

The GNU General Public License is the license under which the GNU operating system is licensed out. The license has been authored by Richard Stallman’s Free Software Foundation, and is a copyleft license. The current version of the license is version 3.0, however the previous version 2.0 is also quite popular. Since I personally have not dealt with version 3.0, I would stick to version 2.0 in this post.
The GPL v2.0 starts with a preamble, which summarizes the philosophy behind the license. In other words, the belief that software should be free to run, modify, and distribute (while noting that "free" means freedom, and not free of cost). It also points out that there are certain restrictions which are necessary to ensure that a user of the software does not limit the freedom of other users. Paragraph-4 in the preamble section states...


This is a good summary of what the license is trying to achieve. The authors believe that the software should be available to all to use and modify freely, however, such modifications should not result in the restriction of the freedoms of other users. The preamble goes on to mention that in order to enforce this, the authors assert their copyright over the software, and are licensing it out to users under the terms and conditions of the next section. The preamble ends with an explicit patent grant.

The preamble is followed by the main "Terms & Conditions for Copying, Distribution and Modification" section. Paragraph-0 states that the license applies to both the original software work, and any derivative works. The term "derivative works" is defined as "...a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language". This is a bit generic definition, and is one reason why GPL is not very popular for use in commercial software products. Companies that want to use open source along with their proprietary software architecture are deterred by this wide definition of derivative works. The concern is that under such a definition, all of their software stack would become a "derivate work" if they link with the open source library, and/or use the functions of the open source library. This would cause proprietary software to become "contaminated" - a term used to define the situation where proprietary code has to be licensed out in source code form, because it comes under the copyleft clause of an open source license. However, in certain cases - notably in the Linux kernel license - the authors clearly state what they consider as derivative works, and what are unrelated code. Here is a snippet of the explicit notice put in the Linux license (rest of the license is GPL v2.0)



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).

Tuesday, March 6, 2012

Smartphone's affinity for open source software

I had been preparing for a presentation on open source software, and I came up with an interesting find. Here's the 2011 market share of smartphone OS'es (numbers from TomiAhonen Almanac 2012), with call-outs indicating open source pedigree.


Open source use in smartphones (Source TomiAhonen 2012 Almanac)
 Android
Everyone knows that Android is an open eco-system, based on the GPL v2 Linux micro-kernel. The rest of the Android stack is also open source, licensed under the Apache license.


iOS
A bit of a surprise, isn't it? Even for a closed eco-system like Apple's the use of open source software is pretty widespread. The kernel of iOS & OSX is based on Darwin, another open source BSD licensed micro-kernel. Wikipedia has a good article on Darwin.
Besides the kernel, iOS also uses a variety of other open source components, for e.g. OpenGL ES, Independent JPEG Group's libjpeg, ANGLE (OpenGL to DirectX mapping), KISS FFT, json, among many others. If you don't believe me, check Settings->General->About->Legal on your iPhone!