Softpanorama
(slightly skeptical) Open Source Software Educational Society

May the source be with you, but remember the KISS principle ;-)

Google   


Why you are stressing the value of algorithms, architectural integrity and quality documentation of internals in the open source?

I do not believe that open source is panacea. Moreover I think that poorly documented large open source program is closer to proprietary software than one might think. And I prefer well closed source product that implement brilliant algorithm to open source that implement a mediocre one. Mongol horde approach advocated by ESR in CatB does not work. In software too many cooks spoil the broth.

One need to understand that, after all,  algorithms are much more valuable and permanent thing than any source code. And contrary to claims of some OSS movement poster boys reimplementation of Unix kernel does not advance computer science. It does lower costs and make it more suitable for education, but that's it. IMHO the contribution of Donald Knuth is of several orders of magnitude more important than all contributions from the three main OSS figures (Stallman, Torvalds and Wall) taken together.

With some level of oversimplification I would say that the idea of Minix from which Linux 1.x was derived was really brilliant -- small operating system with carefully documented internals running of the most widely available hardware(286 at the time). Linux started as a "Minix on steroids" for 386, but now it moved to the level of complexity that is close to the level of complexity of commercial operating systems, but  much less documented that the original Minix. That means that Linux 2.x kernels including 2.4 can be considered as yet another large operating system kernels that very few people fully understand. But the presence of kernel source code in distribution makes simplification of it possible and IMHO highly desirable. After all for students the top priority is not contributing to (most fashionable) OSS  programming project -- the top priority should be to learn real computer science. Here again I would like to stress that algorithms are actually more important than the source code. That's why I think Linux mini-distributions are so important. And I would applaud the book with the title "How to simplify Linux kernel and Linux OS".

Again, let's put it strait. My favorite role model for the open source movement is Donald Knuth. Not Richard Stallman with his great idea of free software for all, not Linus Torvalds who in a difficult and exhausting race managed to be first to implement Posix compatible kernel under GNU license but never manage to write a single coherent paper about its internals.

Although I have great respect for both, I believe that the contribution of Donald Knuth,  the author of the classical three volume series The Art of Computer Programming, the creator of the brilliant open source typesetting systems TeX and Metafond and five volumes of Computers & Typesetting is more important on the absolute scale if such scale exists at all. What is interesting that this great computer scientist believes that programming can be an aesthetic experience, much like composing poetry or music. This is very close to my own views on programming.

That does not mean that I think that free software is unimportant. On the contrary, I think that Unix Renaissance OSS proved to be the most important democratic movement in software development in the XX century. Actually there are great programmers working for OSS that makes analogy with Renaissance stronger. It is extremely valuable for education, for developing countries, for startups and underprivileged minorities. And free redistribution is really a very important and a very democratic feature of open source.  I believe in the power of social cooperation and in this respect my views are similar to views expressed in For the people, by the people. I just oppose  naive, on the border of blind-folded chauvinism vision of open source software as a total replacement of commercial software no matter what.

Returning to one of my main point I would like to stress again that excessive complexity (that is a natural consequence of attempt to compete with commercial developers, because for commercial developers complexity is a commercial advantage) can be harmful both for OSS projects and for OSS developers. the ability to read source code is pretty limited. From this point of view Bad Linux advocacy as an influential OSS movement  violates the famous KISS principle in order to make OSS commercially viable. Actually it wants to make OSS commercially viable at any human or technical cost. I rather skeptically view all this Linux IPO gold rush with ERS as one of several newly minted multi-millionaire (please read his manifesto after the VA Linux IPO that was aptly called Open Source Rich Opens Mouth by Wired).  I do not think that "end justifies means".  I am afraid that along with further popularization of the idea of OSS and additional financial support to selected (commercially viable) OSS projects Bad Linux advocacy might bring substantial negative consequences for the movement.  Some OSS developers may became prisoners of the new "gold cage" and large part of academic-style freedom that they enjoyed can disappear.  When you take money you better think about explicit or implicit conditions of this transaction. The other problem is that after certain level of complexity the difference between open source and closed source became much less that one might expect. I touched this question in my second paper.

Here is an interesting supporting argument from the Interests of Amicus Curiae submitted to Microsoft trial:

Second, a licensing remedy for Windows, which might involve publishing the source code, mandatory licensing, or providing open-source versions, would also be relatively easy to accomplish. In principle, these options would allow other companies to compete directly with Microsoft in the various platform markets. In practice, however, because the source code is long, complex, and difficult to adapt, rivals are not likely to be able to compete effectively, even with a license to the source code. At a minimum, outsiders will need to have extensive access to Microsoft's programmers and middle managers. Mandating that Microsoft's employees cooperate in helping its competitors produce a competitive product seems a tall order for any Court to write and enforce..

One of the problems of the commercial software industry was pace of development or as it often called the "time to market". This pace rarely allows time to adequately polish architecture of new product, it press adding feature indiscriminately without spending time to understand and thoughtfully develop said new features. Although talented developers may manage to do an excellent job even in this difficult circumstances, largely due this pressures some commercial software products are created and enhanced without due attention to the underling architecture. One of the important advantages of open source is that the development can be more slow, with more attention to architectural issues and correction of architectural problem discovered. If Linux kernel 2.2 is any indication, dominance of commercial distributors can damage or eliminate this advantage. This danger need to be discussed and not masked by propagandist phrases like in CatB:

Perhaps this should have been obvious (it's long been proverbial that "Necessity is the mother of invention") but too often software developers spend their days grinding away for pay at programs they neither need nor love. But not in the Linux world - which may explain why the average quality of software originated in the Linux community is so high.

Actually in some cases it's not high enough and rush to release new version can be one explanation of this problem. Despite the tremendous marketing momentum, among free and open sourced Unix kernels Linux kernel is still not considered the best by some of the most influential members of Unix community (Ken Thompson is one such member, Keith Bostic is another). The gap is narrowing, but for example Keith Bostic who definitely understands the Unix kernel on an expert level considers Solaris as the best, with FreeBSD as the close second. And as for the love, the question arise how long any single developer can work on a single program without starting to  hate it. I would like to remind again that Linus Torvalds already has ten years love affair with the kernel ;-). 


Copyright © 1996-2008 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

Standard disclaimer: The statements, views and opinions presented on this web page are those of the author and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.