No discussion of my philosophical foundations is complete without mentioning my involvement in the Open Source initiative. I am in fact a user of Open Source software, a developer and contributor to several open source packages, and also an open source advocate.
If you don’t know what Open Source means, refer to an essay I wrote about the subject. Here I’ll just sum up.
Most software written is not distributed outside the organization in which it originated. Software that is distributed to the outside can come in several classes. Being free (as-in-speech) software, which is mostly a synonym to open-source software means it is distributed with the source code, allows free modification of it and free re-distribution of it and modified forms, and that it’s use is not restricted for any purpose.
Such software differs from software that either comes only in binary forms, cannot be re-distributed, costs money to use, or is otherwise restricted in its use.
When I first seriously started working in a UNIX environment where open-source software has been common and dominant for years, I did not thought or knew too much about its guidelines or ideology. All I knew was that there was software that came in source forms, which I could download, compile and use free of charge, on the UNIX workstations and servers of the company in which I was employed.
However, as I became more and more involved with Linux and the open source community, I became aware of the principles behind free software. There are a great deal of people who are very religious about it. They claim that distributed software that is non-open-source is evil and immoral, and that all software must become open source. I don’t hold this view, but I still see the importance of the open source movement.
I routinely use open source software on a day to day basis. The system I work with most of the time on my home computer, involve the Mandriva Linux System, the KDE Desktop Environment, the GNU Compiler Collection (GCC), the Perl Programming Language , DocBook/XML, The Vim Editor and other free software packages. I find these packages far superior to their commercial counterparts (Microsoft Windows and other software from Microsoft): far more enjoyable to work with, better documented, more robust, more independent of each other, and easier to debug and solve problems with.
As a result, I am doing my best to reduce the amount of time I’m using Windows to a minimum as I can no longer stand using it.
Generally, it is its open source nature that has enabled making this software superior. The code is there for everyone to contribute to, look at, or modify, and there isn’t a single entity that holds all the cards. Therefore, it is actively being developed by a large amount of contributors from around the world, with a lot of peer review, support and cooperation. The open source world at large has at its disposal human resources that one single company can never hope to have.
I had the opportunity to contribute to several open source projects and even to head some projects of my own. The project I invested the largest amount of effort on so far is Freecell Solver. It started out as a command line application to solve games of Freecell, and gradually evolved. Now it can be compiled as a library for use within Solitaire implementations, and solve other variants of card Solitaire, is much faster, and has many more features that it started with. Most of the work on it was conducted by me, but I also received a lot of feedback, input and even occasional code contributions from others. Without them, I would never have been motivated or inspired enough to further work on it.
The amount of effort I invested in working on the code, and helping users who encountered problems, made me realize the amount of time and effort that is required to write a high-quality marketplace software (open source or otherwise). One could say that it turned me from just a “boy” who dabbled in open source to a “man” who invested a lot of time working on a serious program like that.
Working on open source software is hard work but at the same time, highly enjoyable. Contributing to the body of open source software out there is a snow-ball effect: as the use value of this software increases, so are further contributions made easier. People feel motivated to contribute to open source software, because they actually can, because they use it legitimately without paying a price and so do not feel exploited, and because the developers of open source packages encourage contributions to the code. As a result, more and more people actively contribute to it, either by occasional bug reports or patches, or even by more serious involvement.
Don’t get me wrong. I think the most important trait a software should have is that it will “just work”: be bug-free, easy to install and use, well-documented and get the job done. There is too much open source and non-open source software out there that fails to achieve that goal. Furthermore, if a non-free software can achieve the required goal better than a free one, I may recommend using it instead.
Still the open source model (especially when following the Bazaar Model of development) has proved that it can competently fill more and more niches in an equal or better way than commercial software can. Open source software is very attractive to the user and the developer alike for the reasons I mentioned.