Thursday, February 18, 2010

Linux advocate hate

I like Linux, I really do. It's a reasonably flexible foundation for doing things with computers that you'd normally not be able to do. As a rule, I don't like the way operating systems are done right now, but Linux at least has the potential to be a good system at some point in the future. That is why I use Linux, and have been using it for most of this decade.

The above disclaimer is necessary because I'm going to spend the rest of this post taking down some of the more vapid and/or blatantly wrong arguments people have made (and still make!) in favor of Linux. Just today, somebody on sent this site to the linux group. At first, it just annoyed me, but then I saw an amazing opportunity: here, condensed into one convenient page, are most of the outright idiotic claims people make about Linux. I've been wanting to write a post like this for a long time, and here I've found my chance.

I'm just going to go through and address the sections of the site one at a time:

Forget about viruses.

The good news: nobody writes viruses for Linux! The bad news: nobody really writes applications for Linux, either, for some of the same reasons. "Linux" isn't really an operating system, something that people never seem to be aware of - it's a bunch of pieces of an OS that distributions combine to make operating systems. If you actually want to write a program that runs on all Linux machines, you're going to have a hell of a time of it, especially with some of the machines running on non-x86 architectures. Oh well, you win some, you lose some.

Granted, there are aspects of Linux that actually do mean something when it comes to security. Users don't, by default, have access to the entire operating system to do what they want with it, as they did for the entire Windows 9.x series. But come on, that's like bragging that you're potty trained. It's great when you're a kid, but once you're 19 years old (Linux: started in 1991), it's well past the time to make a big deal of it.

Is your system unstable?

Look, if basic security measures are like potty training, then this is like being able to walk. People write operating systems for college classes that can manage this much. (People other than me, unfortunately - when I took this class, we had a sneaky bug in the syscall interface that we never tracked down. :( ) If you have to brag about Linux being able to sit and do nothing for long periods of time, I seriously have to wonder about the other things it has to offer. This is an especially useless point now that other operating systems have basically caught up on this front - back in the day, system crashes were normal for desktops, and Linux (having its roots in server operating systems) was better than the competition. Things have changed a lot in the past 10 years, though, and Linux advocacy rhetoric hasn't kept up.

Linux protects your computer

Hey, isn't this the same as the first point? >_> This focuses more on the "more eyes = less bugs" idea, though, so I'll run with that. The fact is, even though there are potentially "hundreds of thousands" of people looking at the source code to a given Linux app, it's far more likely that there are hundreds, or thousands if it's a really big one. That's on par with the number of people Microsoft has working on their major applications. Given the security track record of Linux distributions, it's difficult to say that more eyes actually means fewer bugs - they do all right, but they're not exactly OpenBSD.

Don't pay $300 for your operating system

Yeah, yeah, Linux is free. For a lot of people, that would be great news, except they have one or two Windows- or Mac-only applications that they just can't live without. Linux saves these people $0. (And just for grins: the absolute basic package of RHEL costs more than $300. Annually.)


Software freedom sounds great, and actually, it basically is. I've benefited from having source code too many times to really say anything about this. >_> Unfortunately, it has a dark side, too.

There's a slightly disturbing segment of the Free Software movement that considers non-Free software to be antisocial, immoral, or even pure evil. And there's a contingent that actively seeks out free software heretics, in true old-fashioned witchhunt style. BoycottNovell is a prime example - Novell makes the SuSE Linux distribution, and thanks to a deal they made with Microsoft, they're now evil incarnate. (Never mind that they've probably contributed more to Linux than everybody at BoycottNovell put together.)

When the system has installed, why would you still need to install stuff?

I always love how Linux zealots will swear up and down that Windows is bloated, that it's filled with stuff nobody wants, and that Microsoft did a horrible thing by including Internet Explorer by default all those years ago - and then turn around and brag that Linux is better because it comes with a bunch of software preinstalled. Um, hypocritical much?

There are bonus fail points here, actually, because they're claiming that every Linux install comes with X, Y, and Z software preinstalled. Um, no, it's completely distro-dependent. Gentoo, for instance, comes with a root shell and a package manager - everything you need, in other words, to build your own system. This is a pet peeve of mine, when people claim that "Linux" can do some neat thing. In most cases, they're flat-out wrong; they're actually talking about some variant of some Linux distribution. It is an important distinction, dammit.

Forget about drivers

Because there aren't any! *rimshot* Seriously, this one practically wrote itself. :/

In all seriousness, though, the reason Linux doesn't need a lot of drivers is because it has drivers for just about every piece of hardware it supports built into the kernel itself. This is a design decision that I've never been comfortable with, but the people that actually write the kernel seem fine with it, and I'm willing to accept that they know a bit more about the situation than I do. XD

If the driver isn't in the kernel, though, good luck. The kernel devs also maintain a policy that they can break the internal kernel APIs whenever, which is great for them, but in my opinion also discourages companies from writing third-party drivers. (Some do, of course; nVidia is probably the most high-profile example.) They want to encourage companies to contribute open-source drivers, which is laudable, but I'm more of a pragmatist; I'd be happy to see drivers no matter what form they took.

Update all your software with a single click.

...after carefully reading the update list to make sure that nothing will break. I actually had a bad experience with this back in the day, using Red Hat 8 (not Fedora 8, this was pre-Fedora ;). Naively, I thought you could just install updates like on Windows, so I went ahead and upgraded glibc, and stuff broke. People were aghast: "you should have been more careful updating that! glibc is important!" I get the impression as I'm writing this, though, that this anecdote may be a little dated. >_>

No, the bigger problem I have with this section is the idea of a package manager. (I've already blogged about that here.) Linux advocates like to think that the use of a package repository is a completely uncontroversial choice, but there are tradeoffs there that invariably get glossed over, such as the relative difficulty of installing software from outside the repository. On Gentoo, for example, you have to either find an overlay that contains the software and add that, or find an ebuild, add it to your own personal overlay (creating one if you don't already have one), generate a digest for the ebuild, and then install it.

(I hate to only say negative things about Linux software installation, so I'll also point to Zero Install, which is a really well designed system. Fully decentralized systems are automatically awesome.)

Why copy software illegally if you can get it for free?

Hey, kids! Copyright infringement is bad! This page is a little disjointed, though, because it also lists free alternatives to programs that are already free. (Is Kazaa really pirated all that often?) I agree with the gist of what they're saying, but come on, that's just sloppy.

Need new software? Don't bother searching the web, Linux gets it for you.

This actually is a genuine advantage of package managers, and training users not to download and install random executables from the Internet is certainly a plus when it comes to security. Again, though, you run into problems when you want to install software that's not in the repositories. (I also think the page way oversells the ease of searching for packages - it just doesn't work that way in practice. Looking for stuff online isn't much better, though, so I can't criticize too much there.)

No amateur Linux advocacy page would be complete without a screenful of Compiz videos. When it comes to convincing people that Linux is awesome, it helps to have some flashy demos that speak for themselves; it's hard to get somebody excited about a flexible base system, or software freedom, or whyever you use Linux. Compiz has always been a bit hackish and temperamental, though, and the software and configuration requirements can be tricky unless your distro comes with it preinstalled and preconfigured. 

Compiz also has a real problem with configurability; there's too much of it. Look, I don't really want to have to set up keybindings for all the actions (a necessity, because many of them use the Windows key, which my keyboard predates), and I don't want to have to go through and decide which effects I want. A cohesive user experience is not too much to ask. The only really widely used parts of Compiz are the desktop cube effect and the wobbly windows, and even those are optional and overly-configurable. (Okay, setting the spring constant for wobbly windows is pretty cool. Can't deny that.)

Plus, when you get right down to it, Compiz just isn't that useful. I've used it on and off ever since it came out, and while it's nice to look at and good for impressing the opposite sex, I always get bored of it and go back to a boring old 2D desktop. 

Teh rage. Hey, person who wrote this page: come a little closer, so I can beat you to death with my fragmented root drive. You claim that's impossible, so it won't hurt, right? :D

First off, this page hasn't been accurate since NTFS became the default filesystem on Windows. I admire the dedication it takes to keep talking about FATs poor allocation strategy for something like a decade past its relevance, but seriously, it's time to give it a rest and move on. (Although, it might have something to do with Linux not having full NTFS support until 2006.) So there's half the page that's just flat-out wrong.

The other half is even more wrong. Oh, where to begin.

* It claims that Linux filesystems have a certain strategy. Linux has a lot of filesystems. Do you mean to say that all of them use the same block allocation strategy that you describe, that all of them have separate magical fragmentation avoidance subsystems that work like this, or that you don't know what the hell you're talking about and you're just making stuff up?

* It claims that Linux filesystems don't get fragmented. Um, bullshit. It's common knowledge that filling a filesystem past 90% will lead to serious fragmentation, if you leave it that way for too long. It's common knowledge that Gentoo's portage tree causes severe fragmentation on whatever filesystem you put it on, to the point that a lot of people recommend putting it on its own isolated filesystem. Ext4 and BTRFS (two next-generation Linux filesystems) both support online defragmentation. Does that sound like a feature that filesystem devs would put in just for fun? They know that filesystems become fragmented. Everybody who has any idea what they're talking about knows that Linux filesystems become fragmented.

Choose what your desktop looks like

"Wait, what? Can't every OS do that?" I'll save you some confusion: this page is actually about Linux having multiple desktop environments. Of course, the way they describe it, there's nothing there that you can't do with themes. Philosophical differences? Competing toolkits? No, the real difference between different desktops is that they use different colors. Way to miss the point.

Why does your Windows get slower day after day?

Frankly, I'm still not convinced that this is even an inherent Windows thing. I have friends who are only too happy to tell me that Windows isn't that bad, and that their Windows installs are still running fine after X amount of time. How? It probably has something to do with them keeping track of what's installed on their systems, and what's running in the background - slightly advanced computer maintenance, in other words. Know what else requires slightly advanced maintenance? Linux. :p

Do something for the environment.

I've gotta say, I am impressed with this one. That is a really clever way to spin the fact that neither Linux nor Linux-compatible software is sold in stores. (Except it sometimes is, which negates this entire point. But hey, let's not even get into that.)

There's one thing on this page that still bugs me, though - it's the same fallacy again where they conflate "Linux" and an unspecified subset of Linux distros and configurations. Some (but not many) distributions will run great on your old 486, some won't run at all. Hell, you can run Linux on your router, or your cell phone, if you want to. Should we start claiming that desktop Linux runs great on these too? Or do we draw the line at "only a little misleading"? Because that's what it is when you tell somebody that "Linux" runs great on X.

It's especially entertaining to see people actually believe this sort of argument, and try to run Linux on old hardware, and then come online asking for help. Invariably, you will have a few people who just insist that it'd be easier for them to just buy a new system, proving once again that just because you can, doesn't mean that anybody actually thinks it's a good idea.

No backdoors in your software.

Sigh. There are two reasons that this is wrong; one practical, and the other more theoretical and much more worrying. First, it turns out that some Windows users actually do keep an eye on what their systems are sending over the network, and they would definitely notice any attempt by the OS to "phone home". If there actually was some sort of secret user monitoring software hidden in Windows, the backlash against Microsoft would be pretty severe once it got out. Microsoft isn't as stupid a company as some seem to think, and I don't see them trying this anytime soon.

Second is a paper by Ken Thompson titled Reflections on Trusting Trust. It basically details how, using a compromised compiler, you can compromise a system where every component, even the compiler, is open source, without any indication whatsoever in the source. It's actually a pretty cool concept, and if you're at all interested in computer security then this paper is a must-read.

Enjoy free and unlimited support

This is one of the things about the Linux advocacy movement that pisses me off the most. Every time somebody says this (and they say it a lot) they're implicitly enlisting every Linux enthusiast in the world to act as unpaid tech support. You know what? Not all of us are "happy to see more and more people switch to Linux"; not all of us buy into your weird world domination fantasies. Some of us would rather just use Linux, and not have to hold the hand of every poor schmuck that you installed Ubuntu for and then dumped on our collective doorstep. Some of us are Linux Snobs, and that's our prerogative. :p

(Another fun counterexample: ESR has written a fairly extensive guide on how to ask questions about Linux without being flamed or told to RTFM. Yep, Linux users sure are friendly and helpful, as long as you follow all these rules.)

And then, of course, this entire point is predicated on the completely ridiculous implicit assumption that other OSes don't have online communities that you can ask for help.They do, of course. The idea with "support" is that you provide more than the ad-hoc online communities do; otherwise, you may as well go home. When you claim that Linux has free, unlimited tech support from online communities, you're effectively claiming nothing at all.

Too many windows? Use workspaces.

Oh, man, this is such an awesome idea! I wonder why other OSes don't do the same thing. I didn't wonder for very long, though, because unlike the author of this page, I can use a search engine. OS X has had multiple workspaces for a few years now, and there are a couple different Windows programs that will get you the same thing.

Reporting bugs

Wait, you mean you can't send in bug reports for OSes other than Linux? Should I go and retract the bug reports I've made to Apple, or what? Now I'm very confused. :(

As for not having to wait years for fixes, this is my favorite Firefox bug. It turns 10 this year! But don't worry, it's not a security bug unless you count denial of service as a security problem.

Are you tired of restarting your computer all the time?

As near as I can tell, the entire point of this section is that Windows will nag you to reboot when it needs to reboot, while Linux (by virtue of being a server OS?) never needs to reboot. I'm deliberately leaving aside the issue of conflating different Linux distributions (desktop and server distros are exactly the same, apparently!) because there's another issue in here.

Linux doesn't need to be rebooted very often, but that's because of a specific behavior: if you upgrade a library out from under a program that's using it, it'll just keep using the old version until it exits. If the upgrade is a security upgrade, Linux systems will happily keep using the old, insecure version of the library for an arbitrary amount of time. There are some cases where you really and truly do want to reboot after installing an upgrade, and unless your distribution is exceptionally on top of things, Linux isn't going to tell you when that is.

Let your old computer have a second life

Disappointingly, this section isn't about Second Life. Instead, it rehashes something I addressed earlier in the section about the environment.

Play hundreds of games for free.

This reminds me of those "hundreds of games in one" mini-consoles that nobody ever buys. The harsh truth is, most users don't care about how many games are available, they care about how many games are available that they want to play. All the free games in the world won't help a WoW addict.

Help other countries, and your own

"Custom solutions, support, and consulting? You're right, all of those things are completely impossible with anything but Linux!" I'm not entirely sure what this section is saying, nor that it applies to me at all, seeing as I live in the US.

Use MSN, AIM, ICQ, Jabber, with a single program
Get a great music player
Keep an eye on the weather

For some reason, the last three things listed on the page are available on any major platform. I'm not really sure what they have to do with Linux, but whatever. XD

So what do I think we should do as far as Linux advocacy goes? Hell, I don't care. Like I said above, I'm not really interested in world domination or anything like that. I wouldn't care at all what Linux advocates said one way or the other, were it not for the fact that it gets on my nerves when people are wrong on the Internet.

Tuesday, February 16, 2010

What I (will) have lived for

Or: A portrait of the blogger as an old man

Or: The assignment said to write what you'd like to be able to write when you're 90 years old, so this is what I wrote.

I have never intended to make the world a better place.

That's not to say that there's nothing in the world that could be improved. On the contrary, there have been any number of things about the world, about society, about technology, and especially about myself, which I have felt should be fixed. I have done what I could when I've had the chance, but most of these things have been out of my reach for my entire life, and show no signs of changing now. I have lived in this imperfect world, and I have overlooked its flaws, but I have never accepted that this is the way the world must be.

From time to time, though, I have had the opportunity to solve some odd problem, or repair some minor flaw. In doing so, I have made the world a less irritating place to live, for myself, and hopefully for others. It is this idea - acting on the issues that bother me, instead of leaving them as they are - that has been my guiding principle over the years. This sort of principle will probably not solve all the problems of the world, but I sincerely believe that if everybody acted according to it, it could at least solve all the problems we care about.

Some problems, on the other hand, are too enduring to even begin to solve in a human lifetime. Boredom, pain, sadness, and regrets are never far away, if we let them approach, and this is simply a part of being human. Thus far, I have managed to live an interesting, comfortable, happy, and fulfilling life, and I have tried not to stop others from having the same. To the extent that I have succeeded, I am glad to have improved the lives of those around me, or at least glad to have not made things worse.

I have lived my life fighting the good fight, and if the world has become any less a terrible place because of it, so much the better.

Friday, February 12, 2010

Convergent evolution

There were two announcements from web giants this week that represent, to me, an interesting trend. First, Google announced Google Buzz, which is basically their take on Twitter-style social networking. (I think they've completely missed the point, but that's really a topic for another post.) Second, Facebook has extended their Facebook Chat system to use XMPP, making it a fully-fledged IM system that you can use through many chat clients. (One nice thing that most people don't know about XMPP: you can log in from several locations simultaneously, and messages [even your own replies] go to all locations. None of this AIM-style nonsense with prompting you to log off, or needing multiple accounts.) They've also announced that they're extending Facebook messages into a full email service, with POP and SMTP access.

So why's this interesting? Two of the largest players on the web today have announced services that cover ground the other already does pretty well - Google is basically copying the way Facebook's wall works (and also Twitter, to some extent), and Facebook is copying Google Talk and GMail. In some sense, GMail's interface and Facebook's home page are both evolving into the same kind of social networking site, from completely different directions.

It's no secret that Facebook wants to be the next Google, so that part isn't really surprising. By itself, the fact that they're extending their chat and messaging services is news, but not a trend. What caught me off guard was Google's move, and it got me thinking. I'd always dismissed Facebook's ambitions - we already have one Google, and this Internet ain't big enough for another one. But Facebook isn't looking to replace Google's core business; they're looking to have the same kind of dominance in the social networking space that Google has in the search space. Google understands this, and isn't going to take it lying down.

(Aside: Twitter isn't part of this trend, but that's not really surprising. In my mind, Twitter is the Sarah Palin of social networks - became famous by a fluke, inexplicably popular despite a total lack of substance and many embarrassing failures, considers simplicity a virtue even when it's a liability, unable to cope with a sudden rise to prominence, receives more than its/her fair share of media attention.)