Monday, July 2, 2007

The Economics of open source

An interesting and lively discussion thread has popped up at Ubuntu Forums with a title that is sure to invite a large reaction among the group of highly enthusiastic Ubuntu users in the forum:
*deep breath* For the most unpopular opinion of any Ubuntu user, please click here.
In summary, the original poster's opinion was that Ubuntu should be made closed-source so that programmers can make a lot money and improve their lives. He/She also said that by closing up Ubuntu, its quality will improve because paying more money will make things better.

It is unfortunate that he/she has such opinion, which makes many other posters in the thread believe that he/she has very little understanding of the dynamics of open-source softwares. Later in the thread, he/she has indicated that he is still in college and he would wish that the software industry would be a huge money pot for everyone to join. So, I guess he/she can be forgiven for being less knowledgeable in the dynamics of the software industry and life as a software developer.

The software industry is relatively new industry that is fast growing and thus getting huge and complicated. Writing a software product is not like writing a home-brew program or student project. For large projects involving many programmer, the overhead for many non-coding processes increases (on this topic, I would recommend reading the first few chapters of Steve McConnell's Code Complete book). It seems to him/her that life as a programmer will be better if people pay companies to make softwares. Unlike other traditional industry where the workflow is something like:
1. Product designers conceptualize and designs the product such as cars.
2. Engineers turns the design in to prototype and ensure that the design is good and reliable.
3. Finally, factory workers build/assemble the cars and its parts.

But in software, we are the engineer and also the construction worker because, we do the design and also the dirty work of constructing each and every part of the software.

Personally, two years ago, when I was still in university, I also had a similar opinion like him but less radical. To me, Linux was mainly a toy OS to learn about how computer and software works. At that time, I also believed that proprietary software are still superior. However, things changes as I started working in a large US-based technology corporation that makes products with proprietary codes, I came to understand the real deal in developing softwares. Businesses are still businesses, the goal of the company is to make profit for the shareholders. Shareholders invest money in company to make profit, not to pay programmers to do what they like to do. Now, as a software engineer, I came to realize that quite often, what we do to the piece of software is primarily a business decision that leads back to faster time to market, better profit, etc.

I think open-source is an alternative business model that might actually work for software industry. While it is still quite early to decide is open-source is definitely the future, it is quite entirely possible as software development in indeed very different from most traditional product development industry.

Anyway, these are mainly the opinion of mine as a young software engineer as I begin probably a life-long journey in the software industry and may not necessary represent those that are veteran in the industry. I'll probably write more on this in the future. Until then here's some interesting reading about Linux vs. Windows http://linux.oneandoneis2.org/LNW.htm

No comments: