Tuesday
29 May 2007
Good Service — Bad Software
Open source software is generally painful to setup and maintain. And it’s likely to stay that way because it’s open source.
Of course, I could hire someone to set it up for me. That’s what the service-oriented market is all about. I can get my software for free, try it out, and pay someone for support when I run into trouble. But there’s something nagging… setting up sendmail (or qmail, or any of the half-dozen email solutions I’ve tried) shouldn’t be as hard as it is. Why, over the numerous years–as it’s been worked on by a brilliant body of hackers–has it remained so obtuse?
There is a huge pool of open source software that is impossible to reliably obtain, install, set up, configure, operate, maintain, and upgrade unless you have years of experience. And there is a large pool of people and companies for hire who have the required years of experience to get something done. And we ask ourselves: who made the unusable software?
I’m implying a huge causative connection here that might not exist. It is not the fault of service-oriented companies that this software is impossible to use–or, at least, I have no proof that it’s their fault. To my knowledge, companies do not send internal memos telling developers to keep the sendmail configuration file totally incomprehensible. But more importantly, even if the companies and people who made this software didn’t actively scheme to make it hard to use, why would they want to make the software easier to use for the average user? I’m not talking about reducing “essential complexity”; computer networking is generally a complex task. But–and let me be absolutely clear here–the overhead in learning sendmail’s configuration file syntax is not an essential complexity. Yet, doing anything to make the configuration syntax nicer (making it XML, for instance) requires a great deal of effort and there is no economic motivation to do it. In fact, there is an economic motivation to not make the syntax easier: “If you can’t deal with Apache configuration, you can always hire me, who can.”
Who makes software?
Software used to be made by companies who sold it. Software was a thing, it came in a box, you unwrapped it, and it added new features to your computer. Why was software sold? Because you (the consumer/user/business-owner) were trading your money for the time it took for those companies to make (and support) that good software.
But as computers became cheap, and networks became common, the Internet was forged. Things changed. A lot of software that you never see affects your daily life, as you visit websites which are serving content from the next building, county, state, or country. You might not know what software eBay or PayPal runs on, but that doesn’t keep you from using their services. Instead of software being a thing consumers chose for what it could do for them, software became simply another component in a huge service industry. The software world shifted from a relationship between the maker and the user, to a relationship between the maker and a service-provider.
This is not universally true. Microsoft still grosses billions of dollars each year selling software. But people often think of operating systems as “part of the computer” (which is not a bad thing) rather than a separate thing they are willing to, or even slightly interested in, buying. Both Microsoft and Apple, the two big companies who make the “fundamental” computer software (desktop operating systems), make most of their money selling software to manufacturers (or selling hardware with the software included). Again, the shift is from software as a thing which consumers buy, to a service (in this case adding value to manufacturer’s hardware).
The shift is more obvious in the networked computer world. “The Internet runs on Linux”. Why pay Sun or SGI thousands to use their software when Linux and FreeBSD are totally free? The answer was: “Because Sun and SGI set up networks for a living, and they can assure you that the network will work.” But they no longer have a corner on this market: RedHat (among others) has proven that you can build not merely reliable networks, but entire successful businesses, on open-source software. Even better: because all of their software is open-source, RedHat gets to take advantage of a huge number of developers that they could not afford to hire.
Instead, this new breed of company specializes in services: instead of providing software and really big instruction manuals, they provide complete service and support packages for totally free software. Or they provide training services. Or they set up your network, and train your sysadmin team—providing a service. But they don’t charge for the software. Why? Because you, the consumer/user/business owner, has had a change of heart. You now say: “I’m going to pay you for making the computer work the way I need it to.” And you simply assume that whatever software is required to accomplish this will: (a) be developed, (b) be freely available, or (c) come reasonably priced with relevant hardware purchases.
Wait, so who makes the software now?
Well, as it happens, “open source” and “free” software (all of GNU/Linux, plus many other important things like Python and MySQL) is largely made by the people who have a vested interest in the computer service industry. RedHat is not merely a service provider; they contribute a huge number of man-hours to the development of the software that they rely on. Administrators who are paid to deploy Linux-based services for companies often contribute back to the GNU/Linux source. This pattern is seen over and over: people who use open-source software as part of their service offering contribute source-code back to the projects.
Not all hackers work for these network companies, of course; many of those who don’t work in website development. The Internet runs on Linux. Many people who don’t contribute to the Linux kernel or to drivers or to low-level networking software do contribute to code for projects like Apache, PHP, Python, Ruby, Perl, MySQL, etc., which are required to build any kind of interesting and worthwhile web site without dropping the $10K plus for a one-seat license of Oracle’s database software or spending $2K plus for a copy of a Microsoft Server operating system. While there is a general agreement to do some work in common so that we don’t all have to re-implement the wheel (or garbage collection), why would those companies who have good websites provide the exact same tools to others for free, unless they were reasonably convinced that others could not one-up them without an amazing amount of effort?
You get what you pay for
You want a full-service network deployment that is highly reliable? Okay, you can buy that; it will come with lots of billed man-hours. You want software that’s well-documented and easy (or at least possible) to configure yourself? You can buy that, too; it will come with lots of fancy license restrictions and without the source code. But don’t expect free or open source software to be straightforward to use; expect “read the source code” to appear at least once in any configuration discussion. Making software easy to use is hard; and the people who make free software generally don’t have much motivation to make it easy for anyone but themselves.
Don’t kill me…
I am not writing this post because I think open source software is bad. Quite the contrary; I know how indebted I am to the open source world. But I still wrote the article. Am I being fair? No. Is what I say the whole of the story? No. But is there some truth in what I say? Yes.
We need to seriously think about the usability of free software–and the forces that cause free software to generally be the bane to usability that it is.
Update: Please see the follow up here.
