First off, this is just my considered opinion and I make no claims otherwise. Second this all assumes that Linux as a major player on the common desktop is a desired goal, if you disagree with that then feel free to keep Linux on your machine exactly how you like it. Open source it great that way. Third this is a VERY rough draft, little to no spell checking or grammar checking, heck some of the ideas aren't even entirely fleshed out well explained or well organized yet. My point here to show some of my thinking and hopefully get others thinking about some of these things.
There are many things Linux does that rate good to incredible. There are a few areas, however, where Joe will find not find it useable enough to adopt without significant motivation. Joe doesn't care enough about lofty ideal to switch to Linux. Cost can be, but since from Joe's perspective he got Windows free and installed with his PC and Linux is separate box of software he has to pay for and go through the hassle of installing, cost is actually against us here.
Two other major issues for Joe are usability and Software. How many software boxes on the shelves at Joe's local store? Say they run under Linux- of those, how many does he actually care about, and how many actually will run right out of the box on HIS install of Linux? This is a bit of tough one, as it's a chicken and egg problem. The Joes won't buy Linux because it won't run their favorite games and programs. The software Joe cares about are not ported / written for Linux because not enough Joes use Linux. Fortunately the increasing corporate adoption of Linux is helping here, as more and more people are exposed at work and find a need or desire to run the same software at home. This factor helped the original spread of the home PC. However, this alone may not be enough, and will certainly be slower than it could be. There are however things that CAN be done to help. And proselytizing random strangers like a religious cult is not it (kinda fun though isn't it:) ).
First of all, software has to install easily for Joe. He should be able to put the CD in the drive, click a single icon, and wait for the install to finish. Which brings us to DLL hell and the file system layout. It wasn't that long ago I downloaded an app of some sort, it required a newer version of some lib than what I had so I downloaded that and the libs. THAT required new versions. Now, of course, somewhere someone decided backwards compatibility wasn't important between version 4.5 (for example, not exact ver numbers) and 4.6 of some lib and a good chunk of my system became useless.
THIS IS STUPID! now if it had been from say version x.0 and version x+1.0 I could almost buy it if x is no greater than 2, but within a major number compatibility should be backwards-maintained.
Indeed, if a function in version x is to be replaced by an incompatible version in x+1, every effort should be made to keep the deprecated version as well until x+2 unless the release cycle is fairly slow. Another factor of dependency hell and install hell is package management. What's needed is an install system for apps, not for distros. Almost every windows app is distributed this way and it just works almost every time. Now you could argue there being only one distro maker for Windows makes this much simpler, and you'd be right. Doesn't change the need for it, though. It's my seat of the pants guess that if an installer that could handle the top 5-10 distros was built, and done such that others could adapt it to their distro's without breaking it, then that hurdle would be mostly dealt with.
Now I would like to bring up the Windows registry: good idea, poor implementation. Linux distros have their own versions in thier package management databases and config files also not an ideal implementation. I don't have firm ideas here except that claiming Linux's habit of putting many of the config files all in one directory with cryptic names isn't that much better than how Windows does it. each app really should have its own directory and subdirectories as needed. This has the added benefit of being able to provide a mechanism for handling dependency hell. Put the otherwise useless version of a lib in with the one app that needs it. Another thing to help break the chicken egg cycle is to help the guys developing Joe's favorite games and apps produce the Linux version as much as possible. Now, they won't give us the code to do it ourselves for obvious reasons, so it behooves us to develop the tools they need to do the job quickly, easily and painlessly as possible. I'm currently favoring the idea of a high caliber development environment for Linux that makes porting to Windows (and hopefully Apple) a simple, integrated matter.
This brings me to DirectX. This is very extensively used by game makers and does some very good things (though how well it does them I'll leave to others to comment on). Linux has many of the bits and pieces, but unifying them into a single consistent API would be a serious boon all around. This probably should be done with an eye towards portability to/from direct-x in keeping with the desire to get more games on Linux. Joe is also going to expect to be able to do familiar things in familiar ways. Now, I know some studies have shown that a modern Linux desktop is no harder to learn from scratch than Windows.
Guess what? It doesn't matter. That's right it's a pointless study. The simple truth is Joe probably already knows how to use Windows and after a few minutes of things not working like he expects he's going to call it stupid and broken and insist on Windows. Now this isn't to say everything has to be exactly the same as Windows, but where it's not fairly close it needs to be as obvious as possible. Pushing in on his mouse wheel shouldn't dump mystery text into the middle of that report he's trying to write. And if copies something from a browser window to quote in an e-mail, he should be able to easily paste it in without having to hunt through man-pages, online help, and use some obscure app as a 'way station' for the text. This brings me to the current us-vs.-them attitude with respect to Microsoft.
Frankly, I'm not Microsoft's biggest fan, either - they are the major dictator of what people can and will do with their home PCs right now. They have been convicted of illegal practices in court that hurt the consumer. I think most of us don't like them much for one reason or another. Unfortunately, this means to many: "no matter what, if Microsoft did it, it must be bad, evil and sloppy programing." Folks, If you refuse yourself tactics and tools simply because the enemy used them or used them badly instead of judging the tactics' and tools' merits themselves, you hand them the war. Microsoft has done a lot I and others disagree with, but they've also done a lot that works and works well, and we must not be reluctant to use what works - whoever did it - so long as we don't compromise real principles. I think making so many hate them so much we won't touch anything they've done without regard to merit has been a very successful tactic of theirs.
And for all the faults and shortfalls I've mentioned Linux has gotten lots of things right. ONE-reboot installs, (including base apps, drivers, GUI, desktop - everything!) for example, are in my mind a HUGE VERY GOOD thing. Now I'm sure some will say, "but distro x fixes that with app y"- well, good. Get it in as many distros as possible, or "but that's easily fixed, just go to
And finally, anyone who wants to pick on my musing for grammar or English or some other minor detail (minor as in not really germane to the point) [or major as in making it unfuckingreadable - ed.] in an attempt to paint my arguments as invalid is free to do it elsewhere. If my poor grammar or spelling is honestly confusing my point or you then just tell me and skip the flames.
I'm not trying to start an argument or flamewar or any such nonsense and don't want it. What I do want honest discussion with the end goal of improving Linux, especially for Joe, because I like Joe, he's a nice guy and a good neighbor even he thinks assembler is that cartoon that replaced the Autobots on Saturday morning and thinks his current operating system is MS Works. Joe deserves better than Windows BSOD and virus-enabling systems and techie-only Linux. Joe works hard to support his 2.3 kids and probably has a retired parent in a nursing home and a relative in harms way a cop or firefighter or soldier.
Well that's all for this rough draft, and I do apologize for that roughness. I'll refine and add more as time goes on Hopefully this will get some good discussion with meaningful results started.
"Mycroft " June7, 2004
If for reason someone wanted to distribute this for free, with or without fixing my spelling and grammar, that's fine as long as otherwise it stays basically unchanged.
-- some kind ac cleaned it up a bit so I'm reposting this as hopefully more readable, especially since the line breaks and newlines were all screwed up compared to how I originally posted it (though the AC's version is cleaner still, thx) not mention it's old enough for