Open Source is a Viable Business model

This is probably the most debated and inquired question I have faced till date. Is business model built on top of Open Source softwares viable? Newcomers to this concept find it difficult to digest that a company can survive by opening up the source code of its product. There are also many learned people who still disagree with this fact. This discussion springs up in many forums, IRC channels and mailing list which sometimes turn into a flamewar.

Normally when we say Open Source and Free, the thing we visualize is “free of cost software”. Free always means Free as in sense of Freedom, otherwise stated. None of the FOSS licenses say that you can’t make money out of your software. There are many companies making highly popular Open Source softwares and are always in the forefront like Red Hat, Novell and Mozilla.

Where is the Money?

Now the question comes, where do you make money? One way is to sell the software(intellectual property), other way is to sell the support. A person can download the source code, strip off the Trademark stuffs like name, logos etc and use it without paying a dime. In this scenario, the second way becomes more viable. The reality is that second way is the most famous source of income of these companies(say XYZ). If you have a reputed company(say ABC), you won’t hesitate to pay extra fees for support to keep your business running on the track. You may even consider extending the support if the first support period expires. Sensible companies like ABC care more for support rather than cost of the software they buy. Even if the software is awesome and support turns out to be crap, you are in a quicksand, more you try to come out, more you go in. If the support is excellent, then you would always be assisted by the tech support even if the product is not upto the mark.

People quote that who would anyone give away their hard work for free? I ask, why reinventing the wheel? No body forces you to open the source code, its all upto you to act on their recommendations. If one opens up the source code, people may be able to read the code, find new bugs, performance glitches and even make available the patches. This is how FOSS world works. You can even sell the patches version of your software. It all about sharing and caring.

Real Examples

Let’s have a look how Mozilla makes profit. It gives away its product for free, AFAIK all its products are free. What is its source of income? Check out the search bar of firefox, you would find that the default search engine is set to Google. This is a major traffic source for Google because who cares to change to default search engine? At aleast not me! Google pays a hefty amount for just setting the default search engine, what a trick! Mozilla is all submerged with $$$ these days and its revenue is increasing day by day.

Many companies give away their products for free and charge for support. One of the best example is MySQL AB which was acquired by Sun rcently. MySQL is dual licensed. If anyone wants to use it, they can download the community server and even use it for commercial purposes. No technical support is attached with it. The other is the Enterprise Server which comes with full technical support and even extra propriotery tools if you wish to buy.

Business Prospects

This is the time of global recession. Companies are handing pink slips to many of its regular employees since they don’t have enough money to sustain. A big amount of their budget goes in buying licenses and updates to already highly priced softwares. The money saved by moving to Free (as in Beer and Freedom) softwares can be enormous. The initial cost can be even more due to training the employees, but its the long run which matters the most. Such transition can be taken during merrier times which makes a firm ready for the bad days.

If one wants to start a new business, then highly charged proprietary softwares can be a main hurdle in the beginning itself. Investing a heavy capital can be a deterrent factor for smaller players into the field. If such new firms use Free Software then the initial capital is greatly reduced. More the number of players in market means more competition and its always the customers who benefit from it.

Concluding

I think six paragraphs of explanation is enough to explain this concept, if one still can’t understand, the best place is a flamewar on IRC or mailing lists.

Advertisements

Defining / Redefining the term ‘Geek’

I remembered when I last read Anomit’s post about “Tech Blogging, you are doing it wrong“. He bashed basically two types of people – one who are self-obsessed with their knowledge and second those who Eat, Sleep and Live by this profession. The second type have always been kicked, but the first ones find themselves in greater light these days.

The Scenario

We have been surrounded by geeks all over the net and everywhere I find people giving away rubbish tips on their tech blog. Believe it or not, web development is very very simple as compared to application programming. Web development is one layer of abstraction over application development. What you need to implement a web application? MVC? ACL? There may be more concepts but its still no where when compared to native application development. I mean by ‘native’. Developing over a runtime environment is 10 times simpler than developing natively. RE have always been a resource hog , best two examples are Java and AIR.

Now what exactly makes you a geek? Is it a specific knowledge of a skill which qualifies you for that title or the thinking or problem solving ability? The question is similar to “Teach Me Hacking”. Many of my juniors have come to me asking whether I can teach them this skill. Is hacking just breaking into other’s computer? Hackers need to have a system wide knowledge and problem solving capabilities so that they can visualize what may be the loopholes in the system rather than finding some flaw in the script itself. Here too finding a flaw in the script needs you to think out of normal programming abilities and think in the ‘cracker’s way.

A Sample Problem

Consider I need to design a mail filtering addon for thunderbird. I can even port it to other clients, or make a standalone application. What I mean to say is that language doesn’t matter here. Design and User Interface doesn’t matter here. What matters the most is the algorithm for building up the whole system. I receive mails for a legit email id, though sometimes they start sending promotional offers, which is always unwanted. If I click on “Mark as Spam”, it can have adverse affect on the normal mails from that id. I want to have a button named “Block & Learn” (with whatever Design or looks). The requirement is that using these mails with their content, the system should learn and apply its capabilities to other mail accounts of the mail client too for blocking such mails. What content/keyword should the system consider so that the learning process is also facilitated? The system should also abandon keywords based on legit mails which contain these keywords. This is in short – Artificial Intelligence, at least a minimalistic trimmed down version.

Consider the above problem statement, even if you are a champ programmer or a geek, the statement can drive you crazy. What actually is required for solving this weird problem statement? Well, I always thought pattern matching would be the right thing, but pattern matching is too dumb. Keep the regex with yourself. Anomit told that Natural Language Processing is a correct way of dealing with this situation. I agree too, we need to work upon natural languages not just programming languages. We even need Automata, DFA for sure, not sure about NFA. College studies may be crap, but they do contain some very very important papers like Grammars, Languages, Compliers Construction principles, Algorithms,Operating Systems, Data Structures, Automata etc. Without these listed topics, don’t expect yourself to get too far as a geek, you would be limited to developing application with Looks, Feel, Functionality minus Intelligence.

What I wanted to say

One more arena where I have seen many geeks lacking is Operating System principles. If you are a normal user, you should know only how to use the GUI. If you are a power user, you should know the inside out of the advanced functionality. If you are a real geek, you should know the inside-out of the lowest level functionality of the Operating System. These low level functionality include File Locking, B+ tree structure of File System, kernel modules, OS architecture, Process scheduling, Process priority, Deadlocks,OS Memory Management, Filesystem security, System calls etc. There is no end, just working on a runtime environment never makes you a geek. Nobody is smart enough to redefine the term Geek, it has been defined that day itself when hackers started ruled the computer’s world.