Why is it that most software sucks? Sure, there are a lot of good programs out there that allow you to do a lot of cool things. But fundamentally, when we talk about user space programs and operating systems, there seems to be a division between the good and the bad which is pretty remarkable. What peeves me most, however, is the fact that a lot of good software will only run on what I consider to be crappy operating systems.
Take Windows for example. It's a pretty poor OS, in my humble opinion; it's sluggish, ugly, riddled with buggy libraries (kept that way intentionally for backwards compatibility), and closed source. But it has an army of developers for it, and they churn out a lot of good software. I would love to have AutoCAD, Adobe Premiere, Steam, any number of games, and a lot of other programs. But the fact is, they depend so heavily on closed-source libraries that porting them to a more stable, well-designed platform is nearly impossible (although the developers behind WINE are trying valiantly to do so).
I'm a Linux user. I use Ubuntu for everything: writing software, playing games, designing parts, cruising the web, reading my email, maintaining my website, everything. I absolutely love it. It's a stable, secure, customizable, and best of all free operating system. It has a great community and a lot of support, and it's entirely open source. Anyone can write programs for it, and a lot of people do; but the problem is, there isn't enough market share and certainly not enough marketing to attract development firms to invest in writing software for it. It's mainly based around a body of programmers who support the idea of free and open source software, and are willing to donate whatever time, energy, and money they have to spare towards making something for other people to use.
Don't get me wrong, a lot of free software is great! I use Chromium, the open source version of Google's Chrome browser; Thunderbird, from the Mozilla Foundation; the GNOME desktop environment; the NetBeans IDE; SongBird music player; Tomboy notes; Apache for my webserver; MySQL for my database; Joomla! for my CMS at Kestrel Robotics; and a whole boatload of free and open source libraries to support it all. But for some tasks and projects, the capability just doesn't exist in an open source package.
Now, I'm not trying to diss closed source software here by any means. If that's the business model you want to take, so be it. But I do feel that relying on closed source libraries and predicating your program's future on these being available locks out a lot of users who may otherwise be willing to buy from you. Cross platform compatibility is a pain, I know. I'm a Java developer. I understand that there's a lot of investment in a lot of these programs, and that's why they're so desirable. I understand, I really do. But it really pains me that so much good software is forced to run on such a poor platform by market share.
There's been several attempts to commercialize Linux, and all have been met with some degree of resentment and resistance from the community. I think that that's a fair response; if we allow Linux to be commercialized and taken over by closed source developers, it may become no better than Windows. Unfortunately, this attitude also causes us to lose out on a large body of developers and powerful companies that have the capacity to provide very good programs for our platform, but only if we make an effort to attract them.
A lot of people will no doubt say that if I want a stable, well designed system with a lot of nice programs that I should switch to Mac. There's a large number of reasons that I don't do that: 1) I'm a poor college student. I can't afford to drop $1200 for a new machine which has less screen space than my current one! I have a 15" laptop right now, and a 13" MacBook Pro costs $1199. Apple's prices are exorbitant. Of course, that's the only way they can survive; they need to maintain their image as the Cadillac of computers in order to move hardware (Apple is fundamentally a hardware company). I can't afford to pay that much, especially not when I have some very capable hardware already. 2) I don't like the OS X interface. I know, I know, everyone will try to convince me that Apple has perfected "user friendly". Intuitive is supposedly the name of the game for Apple. I have to disagree. Even though my GNOME configuration is very similar to Mac OS superficially, I still find it somewhat infuriating to use OS X. 3) I don't agree with their hypocritical Big Brother mentality. Do you remember that ad from 1984? Since then, Apple has adopted the attitude that it can maintain a death grip on its iPhone and Mac developers, preventing anything that they dislike from entering the marketplace (especially true for iOS devices). That attitude is completely contrary to their well-engendered public image, and my own principles. (I like this ad better, by the way!)
So, what can we do without resorting to fiscal and moral bankruptcy in search of a decent platform? Well, at the moment, not much. We can support open source developers who are trying to put out good programs for us to use. We can attempt to appeal to corporations to put their software on Linux. Or, we can do what we've always done and virtualize/use WINE. Until Linux has enough users, and makes enough noise for good products, we won't see much commercial development heading our way.
I, for one, think that's a shame.