Monday, September 27, 2004

Microsoft

Bill Gates is coming to speak at the Berkeley campus this Friday, and the CS graduate student mailing list is full of chatter. There have been several announcements for tickets; and a few mailings about organizing a possible protest, mostly from people who think it is a good idea, but also from at least one person who thinks a protest would be disrespectful to a guest. I have enough on my plate that I don't plan to go to either talk -- I'll go to talks with more information density if I go to any this week -- but all the sound and fury has set me to thinking: why do so many people hate Microsoft?

I do most of my work on Linux boxes, and split the remainder of the time using either Windows or some other UNIX variant (usually Solaris, sometimes HPUX). The tools I use -- LaTeX, gcc (and g77 and g++), emacs, Matlab, and a host of numerical libraries -- play reasonably nicely together under Linux, and I know how to fix things when they don't. My desktop environment is sufficiently transparent by now that I can concentrate on doing work rather than on working around glitches. And I'm happy to be in a situation where I'm encouraged to distribute my software freely, since academic CS departments produce ideas as their primary artifact, and code is just one means of distribution.

Now, suppose I were to change any of the variables involved. What if I hadn't learned a lot about UNIX and related systems through exposure as an undergraduate and through long-time use? What if I didn't spend so much time working with numerical software where the ability to mix languages is so critical? What if I spent less time writing mathematics and wanted to spend more time writing leaflets? What if my presentations included fewer equations and more media clips? What if I was trying to write programs for a mass market? Or -- heavens help me -- what if my favorite game were something other than Tetris?

For me, it takes very little time using a Windows system -- even if something like Cygwin is installed -- before I realize that it doesn't have all the facilities of a well-configured Linux box. I remember this every time I try to recompile and debug my numerical codes for Windows, and find myself missing some favorite tool. There is no valgrind for Windows, and compiling MEX files that combine Fortran and C++ is a lot harder there. On the other hand, if I want to play video games with snazzy graphics, I'm going to use Windows. And as frustrated as I can get during those rare times when I have to use Word or PowerPoint, trying to use OpenOffice is still worse.

Linux is not worse than Windows. Windows is not worse than Linux. If I had to choose, I would probably rather have Linux, since it personally supports more of the tools I use (at least, tools that I use now -- I wrote closed-source Windows code part-time as a high school student and an undergrad, and tools like Borland C++ and Delphi were awesome for the type of work that I did then). I'm also a graduate student in computer science, which means both that I like to read source code sometimes and that I'm fully aware when I pay for software that I might rather be buying food or books or burlap sacks full of Lithuanian gerbil food. Okay, perhaps not the gerbil food, but you get the point. In my present circumstances, using Linux makes a lot of sense. But in other circumstances, it doesn't make so much sense, and I'm not so biased that I'm going to shun all Micro$oft software to make some sort of statement.

Bill Gates is a businessman whose name lends itself to bad puns (of course, I think it's hilarious that Richard M. Stallman is always referred to as rms -- the same initials used for root mean square -- so perhaps I'm a bad judge of name pun-ability). Microsoft is a business, and while I think some of the strategies they use are questionable, I don't think it's a Blood-Sucking Vampire Company (suck you dry in ten minutes or the next death is free!). If you want to be outraged, be outraged at a tobacco company. If you want to ponder questionable business ethics, look at medical insurance operations. For that matter, look at Haliburton. There are bigger fish to fry than Microsoft.

Besides, oh ye open source advocates, Microsoft is good for Linux. Yes, they break standards, and make interoperation a pain in the ass. They also have user interface people who don't think ps -a | awk '/matlab/ { print $1 }' | kill -9 is an intuitive way to stop an errant process. Most of Linux's office software uses interfaces similar to Office products, and in the areas where the two diverge, it's not always the open source version that's doing it right. And LISP may beat VBA hands-down as a scripting language -- it's certainly more elegant -- but do you really want to have to teach recursive thinking to a business major who dropped an introductory CS class after two weeks out of utter frustration (and out of the clever realization that MIS majors might have more time to pursue members of the opposite sex, get drunk, and scope out the Lithuanian gerbil food black market)?

Write useful software that runs on more than one platform. Analyze Microsoft's flaws and tell the world in a way that forces Microsoft to fix the problem or be punished in the market. And when in Berkeley, perhaps, protest, if only so you can tell your grandchildren about it when they start asking embarrassing questions about your past history dealing Lithuanian gerbil food. But really hating Microsoft is probably a waste of moral outrage, and certainly a waste of time.

  • Currently drinking: More rooibos