Commercial vs open source - part 3
This is the third part in my series on test automation with Test Complete and open source.
You can find the first episode here.
This post will be more general and might be considered not related to the main theme. However, in my further posts, when judging what is better and justifying my decisions, I will refer to some notions and phenomenon described here. Therefore, to avoid lengthy digressions or footnotes, let me cover some foundations now.
What is absolutely necessary to make a piece of software stable? The software has to be used. The more it is used, the more stable it becomes. Testing is nothing more but an organized, disciplined way of using the software. The more it is being used, the more bugs and problems are found. They are either fixed or a workaround is developed and people learn how to bear with it. Of course, good design or beautiful coding might help. However, intensive use can compensate for not so good design. Good design and excellent coding can rarely compensate for a lack of use.
Therefore – the bigger the population of users of a particular piece of software, the more likely is that it will become stable.
Commercial closed source software companies and open source communities have different drivers. Of course, they do! It does not require tremendous intellect to figure it out. However, it does require some more careful thinking to realize the consequences of it. Companies, which sell commercial closed source software are subjects of basic rules of marketing. One of them is – differentiate of die. They have to convince the customer that what the sell is so much better, so much different from what’s around. It is so important from the marketing point of view, that the actual software usefulness might get sacrificed. Open source is different – it originates from unix/linux culture which values simplicity and code and concepts reuse. This culture appreciates revolutionary tools only if it occurs that the revolution was indeed needed. And only in areas, where it was needed. In all other areas it is expected that existing well known solutions, ideas and standards are used. It is in commercial tool’s developer best interest to attract a user with some bells and whistles and then keep him locked in his tool set, making the escape difficult. For open source tool, to be respected and widely adopted, otherwise is needed – the tool has to fit in the ecosystem of standards and other tools. This picture is slightly simplified. Actually, some commercial software vendors use financial models, which are based on open source. However, in general the reasoning above holds true. You can find a detailed analysis of open source phenomenon in Eric S. Raymond’s “The Cathedral and the Bazaar”.
Open source values honesty. Many useful open source tools are created by developers, who do it for free. However, most of them do expect some award for it. This award is – reputation. Since your code is opened, you will not get any award if you try to hide your bugs. Someone else will find it. If you talk about your bugs openly, you prove that you are honest and first of all - you are smart enough to notice you own mistakes and limitations of what you have done so far. Therefore in open source world of values, you benefit from being honest - your reputation increases. You have nothing to gain for hiding the problems in the software you have written. This is different for commercial closed source projects. And I don’t think it does make sense to explain it. I believe it is obvious.
That’s it for the general things. I hope I haven’t bored you too much. In the next episode I will be concrete. I will be talking about problems of TestComplete. See you there.