I have this sneaking suspicion that Slashdot is inhabited by a small army of zealots who, lurking for years and now armed with moderator points, proceed to diminish comments that they don't like.
It's easy to spot these guys, they are the ones moderating down my insightful posts and calling me a zealot. The insult!
I also suspect that certain well-funded interest groups have tried to thus infiltrate Slashdot so that they can manipulate 'geek opinion' in their favour. The simpler explanation perhaps is just that some people truly believe what they say.
The particular discussion I enjoyed was about Linux vs. Windows. This always brings the worms out of the woodwork.
In the last 20 years, I've worked on a bunch of operating systems. TOPS-10, Unix, TSO, VM/CMS, Wang/VS, VMS, MS-DOS, a zillion Unix variants, OS/400, Windows, DOS-VSE, BS2000, etc. etc. ad nauseam. A long career writing tools for development teams has exposed me to more innards of operating systems, compilers, database systems, transaction processors, terminal front-ends, batch processing systems, etc. than I actually wanted to see when I started this game.
As I told my friend Fabio, I have opinions and I have theories. They often conflict, but my theories are inevitably more accurate than my opinions.
I have this theory about software costs, which I call "Heironymous' Law". Actually it's a general theory about technology which states that as technology becomes part of the status quo, its cost invariably tends to zero.
The Windows vs. Linux battle is not really a battle at all, it's more of a dance in which the players' roles are well-defined, and the outcome is already known. Still, the music plays and we get pleasure from watching the dance.
Much of the struggle with operating systems of the past has been with details that today seem banal. Compilers that don't work or are not standard. Systems that try to cram a hundred, five hundred realtime users into 32Mb of RAM. Terminals that are limited to 24 lines of 80 characters. Keyboard with no function keys.
Much of the work I did as a technical programmer was building layers to get around these problems. Portability libraries to eliminate compiler differences. Transaction managers to save memory. Virtual keyboard handlers to simulate full keyboards. I once wrote a full transaction processing platform for OpenVMS/ACMS that was the basis for a tour operating system still used today. Chained multithreading on a Digital? It hurts like having your nipples stapled to the desk.
In 1998 my company developed a large web order processing system, and per the client's requirement, we made it on Windows. Sigh. This was the most painful project of my career. No tricky technical challenges, just the grunt and grind of managing a platform that was fundamentally unsound for serious work. Running your IIS for more than two days? It'd crash. Running SQLServer for more than a week? It'd crash. Register your COM+ components outside MTS on a dual-processor system? It'd crash. Register your COM+ components inside MTS on a single-processor system? It'd crash.
And so on. The story of application development on Windows is the story of working around one OS limitation after another, each one a special case that no-one else on the planet has ever come across, each solution a compromise that further weakened the whole. Reboot every night. Install components manually, depending on the system. Bleh.
Flash back to 1996. To demonstrate what I believed would be a coming trend - web applications - I built a web transaction manager and some tools that let us construct web forms and applications. Nice and simple. We sold one or two licenses, but in 1996 people were not hot on the concept. And by 1998, it was "Microsoft or nothing".
Flash forwards to 2003. We're building a new web platform. It has to be fast and stable. Well, everything that we'd expect from a professional application. Pull out tools from 1996, make a couple of demos. Hey, it works!
Now, what does an application like this need from its operating platform? Not much. A dependable operating system that is secure and stable. A C compiler, a database manager, and that's it. We have our own web server (also built in 1996-98) that handles the front-end.
OK, now I have to get this running on a production server. A nice beast, big and fast.
Here is the thing. Can anyone imagine that I'd now go out and buy a Windows Server license, install this on my server, and then load up my (fully portable) application? .... WTF?
Take away the gloss, and look at the naked operating systems. Drop the ".NET Server" junk (just as happily as dropping the "J2EE" crap) and look at the underlying truth.
If you remove all the unstable layers off Windows you come down to a workable, though insecure, operating system. Honestly, I've seen worse. But if you compare the basic Win32 platform with the basic Linux platform, who in their right mind would choose the former?
Microsoft are totally stuck. Their added value comes from layers like SQLServer and .NET which capture users. But this is also their biggest problem, because these layers are so complex and opaque that they eventually drive users away.
It's not hard to program to the "metal", so to speak. It took me perhaps 3 months to build a full application platform that is admittedly based on lots of experience with mainframe transaction processing systems, but I'm not a genius.
I am entirely convinced that Linux has solved the OS problem and that the OS as a product has moved along the curve to the point where it is effectively free. Microsoft can add layers to their platform to try to escape this fact, but unless they add layers that enough people want, and can't get elsewhere, it is a doomed cause.
Despite the huge profits that Microsoft makes, it seems clear that we are watching the dance of death, in which the Windows whale moves in ever-diminishing circles until it releases its last gasp. Microsoft's only way out is to move their applications wholesale to Linux, and I guess they will start doing this publicly within 1-2 years.
OK, zealots, come and get me. I'm all yours.