Why I am biased towards Open Source
Copyright © 2004 by Piotr Ka³uski
All rights reserved.
In this text I explain why I focus on using Open Source tools rather then closed source:
explain briefly why do I believe that Open Source is more likely (than
closed source commercial companies, such as Microsoft) to produce
Although I agree that Windows has
it's place on desktops of non-IT professional people, I believe they
are of limited use in professional, intensive and mission critical data
I point out some factors, which in my
opinion helped commercial closed source vendors to strengthen their
(IMHO undeserved) position on the marked of professional tools.
article is by no means an attempt of complete analysis of Open and
Closed source. You can find such an analysis in writings of Eric Steven
Raymond (ESR) here.
Introduction - I am biased toward Unix and Open Source
walking through my web site
, you will quickly notice that I am biased
towards Unix, Linux and Open Source. Does it mean that I consider
Microsoft's technology not worth consideration? And do I think that
Open Source products are better then Microsoft’s.
Well, as for the
first question the answer is obvious – you may like or dislike Windows,
but you have to be familiar with them (if you consider yourself an IT
specialist). They become de facto operating system standard for desktop
As for the second question, the answer is more complex and I will talk about it more in chapters, which follow.
Comment on terminology:
some people it may be confusing that I sometimes write "Unix/Linux/Open
Source", and in different places I am talking only about Unix or only
about Linux. Although it seemed consistent to use "Unix/Linux/Open
Source" in the whole text, I decided not to do it. If I did, it
would probably be more confusing than it is now.
Unix is an operating system. Some companies (like HP) distribute their proprietary versions of Unix.
Linus is a free, Unix-like operating system, which is being developed by Open Source community.
Source is a way/philosophy of writing software - instead of making the
code a trade secret, it is freely available. It allows people to
understand how the software is written and allows them to fix the code
and share fixes with others.
Open Source philosophy has its roots in
Unix-culture. So this is why I sometimes write of Unix/Linux/Open
Source as of one thing. But they are not the same. Unix is operating
system, Open Source - philosophy. Therefore, in some contexts, I
decided that using "Unix" or "Linux" or "Open Source" alone would be
Is systems' comparison reasonable?
Let me start with quoting Bjarne Stroustrup, a father of C++, on comparing programming languages:
reviewers asked me to compare C++ to other languages. This I decided
against doing. Thereby, I have reaffirmed a long-standing and strongly
held view: Language comparisons are rarely meaningful and even less
often fair. A good comparison of major programming languages requires
more effort than most people are willing to spend, experience in a wide
range of application areas, a rigid maintenance of a detached and
impartial point of view, and a sense of fairness. I do not have the
time, and as the designer of C++, my impartiality would never be fully
I also worry about a phenomenon I have repeatedly observed
in honest attempts at language comparisons. The authors try hard to be
impartial, but are hopelessly biased by focusing on single application,
a single style of programming, or single culture among programmers.
Worse, when one language is significantly better known then others, a
subtle shift in perspective occurs: Flaws in the well-known language
are deemed minor and simple workarounds are presented, whereas similar
flaws in other languages are deemed fundamental. Often, the workarounds
commonly used in the less-well-known languages are simply unknown to
the people doing the comparison or deemed unsatisfactory because they
would be unworkable in the more familiar language.
information about the well-known language tends to be completely
up-to-date, whereas for the less-known language, the authors rely on
several-year-old information. For languages that are worth comparing, a
comparison of language X as defined three years ago vs. language Y as
it appears in the latest experimental implementation is neither fair
"The Design and Evolution of C++" by Bjarne Stroustrup.
forgive me this long quote. I placed it here because I consider it one
of the most important observations in IT specialists’ community. I
believe Bjarne’s observation applies not only to programming languages
but to other areas of IT. Operating Systems are no exception.
and Unix (Linux) are both mature operating systems. Both have nuances,
both have their problems and have their workarounds. In order to
compare them on the technical level, you have to be intimately familiar
with both of them. Moreover, you have to know communities of users and
developers. They are the part of operating system. So from the
technical point of view, I don’t feel competent to make a comparison.
And I believe, much more people make such comparisons then there are
people who really know both systems.
What makes me biased toward Unix/Linux is Open Source philosophy.
Windows vs Open Source philosophy
me start from the end. Let me sum up the differences between Open
Source and Windows philosophy. Windows philosophy for software
development is – do it in a way that your software is user friendly. Do
it using the most modern and fancy technologies to make the application
Unix/Open Source philosophy is – do it right.
doing something right sometimes means using tools, which are 20, 30
years old. But they are good. Through their whole life they have proven
many times that they are good in their task. So there is no good excuse
for not using them.
When Microsoft Windows appeared on the marked,
for many people they became a symbol of instability. But in IT
situation changes. It is much better right now. By NT/2000/XP line,
Windows is slowly heading towards stability of Unix/Linux. But I don’t
think they will ever rich this level of stability. My personal belief
is that Open Source philosophy of software development is more likely
to lead to stable products then Microsoft’s and other commercial
vendors. What makes good and stable software is sweat and tears of
users and developers working on it. Naturally, good design and
programming skills are important. But a young piece of software in
order to become a mature tool or a library, has to live a long time in
real world being continuously used and fixed. And Unix community
cultivates using old, well tested tools. Microsoft strives to deliver
the software, which is most modern and uses the newest technology. They
cultivate using the newest tools currently available on the market. So
they deprive their software this opportunity to become mature. When a
piece of software approaches maturity, the new product enters the
marked, consigning the old to oblivion. So it is not about Microsoft’s
particular products, which are unstable. It is about their philosophy
in software development. The philosophy, which makes a particular level
of stability to be out of their reach. Actually, Microsoft’s products
have reached some level of stability. The level, which makes them
pretty useful for simple tasks. But again, due to their policy, a
particular level of stability is out of their reach.
Windows' and Unix's place in IT
I said Microsoft tools are pretty good for simple home tasks. They are
good for people not professionally related to IT. Regardless if we are
Unix fans or haters, we have to face the truth. On the mass market of
desktop computers, Microsoft rules. And it is well deserved, because
their tools are really user friendly. I don’t believe Linux/Unix
community would ever be able to compete with Microsoft on this field
(unless Microsoft, in their endless greed will change their licensing
in a way, which will push people to desperation). For non
professionals, who use computers for fun, Windows is the right choice.
Windows is also good for people using computer professionally but to
the limited extent. The problem with Microsoft is that their tools fail
to deliver the promised value, when it comes to intensive, professional
use. It is not that Windows is bad and Unix/Linux is good. They should
target different customer groups. Let me use the following metaphor.
Think about education and participation in science community. It is
about absorbing knowledge. Think of TV. There is a strong demand for
its style of giving information. It delivers small amount of
information in an entertaining way and it is fine. However, if a person
using TV as a main source of information about World, will try to join
the academic society he/she will be rejected. He/She SHOULD be
rejected. The main source of real wisdom are books.
is this TV of IT, which is fine. The problem is, that they insist on
taking part in a scientists community. Windows tries to enter and
actually entered a marked of professional data processing. In the next
chapter I will elaborate on why do I consider this to be a problem.
Misleading promises of commercial Vendors about easiness of their tools
the very beginning Windows provided many tools for many things – for
painting, for text processing and so on. But although they try hard,
they cannot enter some areas of professional use. I have never heard
about serious Desktop Publishing specialist using Word. I haven’t heard
about billing system using Microsoft tools for printing bills. No one
implements mission critical software using Access. However, Microsoft
and other commercial vendors are storming the not-that-critical areas
of IT process, like document flow in the company, infrastructure,
testing support tools and so on. Their main marketing tool in that
campaign is the misleading promise, that you can do your stuff, without
deep understanding of issues related to it. You only need the fancy
tool, which will reduce your role to clicking some buttons. My personal
experience is that in IT you cannot efficiently operate in a particular
area without knowing it. There is an excellent quote illustrating my
point. The quote is taken from “Programming Windows” by Charles Petzold
and it is about the need to understand Windows API:
the Windows API gives you vital insights into the workings of Windows
that are essential regardless of what you end up using to actually do
the coding. Windows is a complex system; putting a programming layer on
top of the API doesn’t eliminate the complexity – it merely hides it.
Sooner or later that complexity is going to jump out and bite you in
"Programming Windows, Fifth Edition" by Charles Petzold
general advise for IT professionals is this – if someone promises you
that his/her program is going to reduce handling of difficult problem
to pressing some buttons, freeing you from the need of understanding
the problem, don’t believe him/her.
You won’t survive without knowledge!!!
- you cannot do your stuff rightly, when you yourself don’t understand
it. And general understanding is not enough. You have to understand it
deeply. If you want to implement a maintainable and useful suite of
automated GUI tests, you have to understand mechanics of windowing in
your operating system. Otherwise you will fail. Fancy capture and
replay toys will not save you from the disaster.
If you want to
create stable and reliable Windows application you have to understand
Windows’ API. AppWizards and sophisticated classes of MFC will not
patch this gap in your knowledge.
Unfortunately, many people buy
these promises, and they buy the tool. Later they realize that those
fancy wizards and windows don’t actually give them what they really
need. They try to make manual workarounds of wizards’ limitations and
they find that they are either very difficult or don’t exist. But it’s
too late. Licenses are bought, money is paid and the time is lost. So
they stay with the tool.
The second tool in hands of commercial
vendors is the false belief that people using open source software are
totally on their own. If something goes wrong, there is nobody to sue
and no support. Well, in short: the first point is true. Yes, there is
no one you can sue in case of a disaster. But do licenses of commercial
vendors really leave space for pushing responsibility on them?
for the second question, the answer is: it depends. If you choose to
use software, which is young and not that many people used that – then,
surely, you may find yourself left on your own once something goes
wrong. But if you chose a well known and mature tool, with the existing
community of users and developers around it, then pretty often you get
the excellent support, which you will never get from commercial vendors
(unless you are a big consumer and pay REALLY big money for their
support). And you get it for free. You can find more about it on Open
Source Initiative web page.
Shall we catch up with the most recent technologies or shall we simply focus on doing stuff right
am pretty sure that many people would answer "well... actually the real
IT professional does both. That is the way it is in IT today. If you
don't do it you die". There is a kind of political correctness in that
matter and the answer given above is politically correct one. If you
are on job interview in big IT company, I don't recommend you saying
Summary (read it before starting flame war with me :))
OK, so let me be controversial. You either
catch up with the most recent technologies or you are good at what you
are doing. You can't do both things at the same time. There is too much
going on in IT to be up to date even with the small subset of
technologies. I found that I am far more effective when I master one
tool for one area (say perl for scripting) then if I keep checking new
features given in the still growing stream of new tools.
you have to maintain a balance. If you push my advise to extreme, you
may come to conclusion that people who graduated in 1970-1980 should
stick to COBOL and VMS and should try to bite each task with DCL. Of
course, you have to listen what is going on and from time consider
sharpening your saw. But you should definitely resist the hype created
by commercial vendors. We are continuously bombarded by messages that
we have to check their new tools if we want to survive. We are told
that what we've learned yesterday is not going to have any use
tomorrow. Maybe in some branches of IT that's the way it is. But it is
definitely not the case in serious data processing where reliability
and stability are pretty high on list of priorities.
What I value in
Open Source is that it not only provides mature tools, which are worth
learning. It also cultivates using well tested and mature tools. Even
if they are old and not that fancy nowadays.
hope you now understand, where does my bias towards Unix/Linux and Open
Source come from. I want to stress once again, that what I was
comparing was the philosophy. Not the design, not the implementation,
not the competence of people involved. My comments on stability were
based on my experience. I am pretty sure I would be able to find lots
of papers proving that Windows is more stable then Unix and probably
the same amount of papers proving the opposite. What is important for
me is to avoid being classified as a Linux/Open Source zealot. I grew
up using DOS and MS Windows. I know there is a community of smart
people around Microsoft. I really value writings of Charles Petzold,
Matt Pietrek, Steve Maguire, Jeffrey Richter, Jeff Prosize, Jim Robbins
Software development in short and long term is a very
complex process. I don’t believe anyone can predict what is going to
happen in the future. Nor can anyone give 100% guaranteed answer for
the question, which development model is better – closed or open
source. There are too many factors to consider, to many data to digest.
But considering what I know and what I have seen, I believe that Open
Source is more likely to produce stable software. And recent
developments in IT seem to prove that.
intention of this text was to explain were my bias towards
Unix/Linux/Open Source comes from. This text is by no means an attempt
to analyze open and closed source mechanics. There are some excellent
writings on the topic. See the recommended reading section on my web