Showing posts with label copyright. Show all posts
Showing posts with label copyright. Show all posts

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