What Joel Spolsky doesn't understand about Linux

Once again I hear Joel Spolsky saying the same thing about Linux that I consider wrong. I’m sure I’m not the only one thinking that and I’m sure I’m not the only one writing about it, but I’m going to do it anyway. Joel’s position is that administrating Linux must be harder because something like 70% of the support calls they handle for FogBugz come from Linux while it is less than 30% of its market.

I’d agree that for someone that doesn’t know anything about administrating, getting a Windows server running is easier than getting a Linux server running. I think that being an expert in both environments is equally hard. The sysadmin problems are hard and there are no shortcuts.

But Joel Spolsky point is wrong in one regard: Linux is not an operating system. I’ve said it before and I’ve got many negative comments, mails, messages about it but very few actually got my point. This is an instance where Linux being taken for an operating system is causing someone pain and thus causing that someone to say something that is not completely right.

Joel makes FogBugz for Windows and Linux. Does that mean that I can run it on my Windows CE phone? It is a Windows, isn’t it? It says Windows in the name! It has a start button! Well, of course I can’t run FogBugz on it. They ship it for Windows the PC operating system. Does it work on ReactOS then? In a sense it is a Windows PC operating system; an alternative implementation of one with all the same interfaces and libraries. Well, of course not. It work only in the Windows PC operating system produced by Microsoft. For example, Windows 7 Starter Edition, yes, that one that allows you to run only three apps at the time. Well, no!

All those things I mentioned are in a sense Windowses as well, yet they are not supported and probably FogBugz doesn’t work on them. Yet, he says he supports Linux. Saying you support Linux is like saying that you supports computers that have RAM. It’s too broad. Trying to ship something that should run on almost everything won’t work. Be it Linux or anything else.

Linux is only a kernel. It’s a kernel used by many different operating systems. Some of them radically different (like Android or Chrome OS). If you are a company and make a product supporting it on Linux is crazy. What should Joel do then?

He should support operating systems, not kernels. What operating systems should Joel support? I don’t know, whatever is popular. I’d guess Red Hat’s RHEL, Ubuntu, Debian are probably popular operating systems. Once you start supporting operating systems instead of kernels the world looks differently. You don’t have to deliver a tar.gz (a compressed archive) that should compile and run everywhere. It’s insane to ship that and it’s insane to expect users to be able to install them. I administer various Debian and Ubuntu servers and workstations. Do you know how often I compile source code that I haven’t written myself? Never!

When you support an operating system like Ubuntu or Debian you can ship binaries. You build binaries in the form of debs or rpms. And you don’t build only one of them, you probably need one deb for Ubuntu, one deb for Debian and maybe even one deb for each version of Ubuntu if they vary enough. If you think this is a lot of work, then look at how much work is building a Windows installer that can work in any Windows from XP pre-SP1 without .Net to Windows 7. If it was trivial there wouldn’t be companies like InstallShield making money.

I’ve heard FogBugz comes with its own copy of MySQL and Apache. How Windowish! That’s crazy and meant to break. You don’t copy code, programs or libraries in the world of Linux-based operating systems. You set dependencies. You make a fogbugz.deb that depends on Apache and depends on MySQL and when fogbugz.deb is installed it will automatically install Apache and MySQL. It will install an Apache built, optimized and customized for that version of Apache that follows the Ubuntu guidelines for storing caches, config files, etc.

There’s more, since there are some pretty straighfoward guidelines where everything is installed, fogbugz.deb could work out of the box. In an Ubuntu box I can run

aptitude install phpmyadmin

and it works out of the box. And phpMyAdmin depends on Apache and MySQL. Of course I could break those services so that nothing works, but most people don’t. What the phpmyadmin package does is drop files in certain locations where Apache is going to pick them up. Apache as many other programs don’t have just one configuration files but directories of them, so you can drop another configuration file and it’s picked up.

I am very certain that if FogBugz was packaged in this fashion, then it would not generate as many phone calls as it does now. It is packaged and distributed like software in 1995 for Linux-based operating systems, when almost everything was a mess and chaotic and there were very few people putting it in production.

To close this post let me tell you something else to convince you that Linux is not an operating system. You can write a program for Linux, but then it runs just fine in OpenBSD. And then you find out that it also runs just fine in Solaris. Well, but you wrote it on a Debian box, which is Linux. Did you know that there’s a Debian kFreeBSD (or something like that)? which is Debian running the FreeBSD kernel. Debian kFreeBSD is more similar to Debian than to FreeBSD. Nexenta is Ubuntu with the Solaris kernel, and it’s more similar to Ubuntu than to Solaris. Android is Linux, yet almost none of the software that runs on Debian, FreeBSD, Nexenta, Solaris runs on Android.

You see, Linux is just one component, and not even the biggest component, of an operating system. It is not the component users interact with when using a computer and it is not even the component programmers interact most of the time, when writing a program. It makes almost no sense to say “I make this program for Linux”.


2 thoughts on “What Joel Spolsky doesn't understand about Linux

  1. We do have specific supported Linux OS’s for FogBugz. They are OS’s like Debian/CentOS/RedHat/etc. FogBugz doesn’t just run on any Linux OS. However, rattling off the six or so supported OS’s at each and every mention seems a bit ridiculous. In the same way, we say “FogBugz runs on Windows” and we mean Windows Vista/2003/etc (not XP,ME,98,CE). So when you write “He should support operating systems, not kernels” I assume you mean “Fog Creek should support operating systems, not kernels” and we do.

    “I’ve heard FogBugz comes with its own copy of MySQL and Apache.” This is actually false (although I would like it to be true). FogBugz does not come with its own copy of MySQL. It does ship with an Apache binary, much like every Java Server app out there ships with a Tomcat binary. People are buying our app for what it does, so bundling those dependencies with the app provides them with a transparent experience. When they buy FogBugz they don’t want to know how FogBugz works and which version of Apache or MySQL it supports… they just need to use it. Making that transparent (in the same way Tomcat does) is the point. It’s not “Windowish”. It’s how people expect commercial software to work. (Hence the success of SAAS – “Don’t make me worry about all that crap, just give me the service”).

    Most of your article seems to say if we did things the way you say, we wouldn’t have so many tech support calls. 20% of our customers used Linux flavors, yet 70% of our tech support calls were from those customers. This statistic is from FogBugz 6 and earlier. We don’t have any current data for our current shipping FogBugz 7 yet (where we’ve addressed those problems).

    Our earlier version of FogBugz had a lot of dependencies. It relied on PHP and had binaries that shipped with it. If PHP’s version number changed we needed to add a whole new set of binaries for every supported OS. And relying on PHP modules (PEAR) was a nightmare. *Most* of our support problems were due to our reliance on PHP. We solved that by no longer requiring PHP. We also removed any reliance we had on an installed version of Apache. So now out of the box, all you need is a supported OS and MySQL. That’s it. I expect our support calls to match our customer numbers now.

    It doesn’t sound like you’ve installed FogBugz before, so I’d invite you to try our 7.x install and see if you find it painful. Not having the same knowledge about our software and the past 10 years of experience intalling it on customers machines might make you have a different outlook than we do. But you’re also welcome to continue to tell Joel he’s wrong (he loves it! and you have loads of company), as long as you get the facts about FogBugz correct.

    • Michael, thanks for the message and my apologies for the facts I’ve got wrong. In my defense I did said “I’ve heard” and evidently I’ve heard wrong. I’m glad that you improved it for FogBugz 7.0. I haven’t installed it, since you are offering it hosted I’m just using it there. I host things like my blog and my own pet projects, for the rest I try to outsource.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s