Last week I commented on a Cringely piece where I thought he wandered off into tinfoil hat territory. Well, this week he's back, making the other side of his argument about Open Source. This week he takes the tack that Open Source is here to stay. At first, he's making some relatively reasonable points about the sorts of extant OS projects:
But it could be so much better. At the risk of annoying my two remaining technical readers, I believe Open Source suffers from a kind of unspoken caste system, with a few projects getting lots of resources and most other projects getting very little. The result is what I think of as three classes of Open Source software -- professional, semi-pro, and amateur. I'm not saying this is bad, just that it is the case.
Truly professional software development really needs technical writers, user interface designers, and QA people, but most Open Source projects lack those types of helpers, and therefore, often fall short in the long run. Those projects that DO succeed (Apache, the Linux kernel, et cetera) are those that only need that type of diversity to a very small extent because they generally live on the command line. These applications generally target people who can get by without the product having the best documentation or interface -- namely, other developers. I think of these as semi-pro products in that they are robust, but tend to lack external trappings of commercial software
Ok, that's mostly reasonable. I feel very fortunate to have Rich Demers documenting BottomFeeder - he's uncovered numerous problems and inconsistencies in addition to creatinga great set of doc - so I can see Cringely's point about projects that lack that being less useful outside a small circle. However, we soon return to tinfoil hat territory:
Look how many Open Source projects have updated versions and the changes read "cleaned up some code." What that really means is the programmer loves his little project, and a few fans have made him love it more, and he just NEEDS to touch it. He can't keep his hands off the code even when he isn't adding new features.
"Cleaning up code" is a terrible thing. Redesigning WORKING code into different WORKING code (also known as refactoring) is terrible. The reason is that once you touch WORKING code, it becomes NON-WORKING code, and the changes you make (once you get it working again) will never be known. It is basically a programmer's ego trip and nothing else. Cleaning up code, which generally does not occur in nature, is a prime example of amateur Open Source software.
Hmmm. Refactoring is useless? I guess he has this notion that programmers always produce the best possible code the first time out, and that new features never require changes to previously working code? And his statement that this breaks things - here's a phrase he can add to his vocabulary: