Mad, Beautiful Ideas
Mac Attack

David Heinemeier Hansson, creator of Ruby on Rails and apparent huge macfag, posted a beef he has with people programming in Windows. Now, this is an older post, but he’s reiterated his point more recently as well.

Of course, his opinion when talking about the ‘stigma of being a Web Programmer still using Windows’ should be immediately suspect, as he is the creator of a well-known web-development framework (which incidentally is officially supported on Windows). Windows is an Operating System. It’s not one I particularly care for, nor that I use at home, but to argue that using a particular operating system makes you an inferior developer is crazy.

If you don’t care enough about your tools to get the best, your burden of proof just got a lot heavier.

Windows has good development tools. Visual Studio has some great tools. I wouldn’t pay the asking price for VS Pro, but even the Express Editions serve as reasonably powerful IDEs for the development of .NET software. ASP.NET is a solid web-framework, which now has MVC modes, and support more languages than merely Ruby. For those of us who care about Free Software, Mono has been doing an excellent job of trying to keep up with Microsoft’s development (while making Mono more relevant on Linux, Mac OS X, and various other unixes).

Mac OS X isn’t a bad operating system. It’s Unix, which I love, and it’s user interface is very interesting. However, Mac OS X is not my personal choice of platforms. The eye-candy, while nice, doesn’t add much to the experience. Features like Expose and Dashboard are appearing (in forms) in various other operating systems, including Windows Vista. Parly, my inability to adopt Mac OS X as my primary Unix has been it’s FreeBSD roots. Now, I know that Paul Graham, author of the excellent Paintera and Hackers (review forthcoming), loves OS X due to it’s FreeBSD lineage, and FreeBSD is a fine Unix. My problem isn’t with the Kernel, it’s with the lack of GNU tools on the platform. GNU made some great additions to the standard unix tools, that I really miss whenever I switch control over to my Mac, like the inability of ps to filter by Command names (-C), or the cleaner formatting functions (I still can’t get foxxbot’s keep-alive job running as cleanly as on Linux). Sure, I could replace the tools, but I haven’t gotten around to it, and I suspect I’d have to do it piecemeal.

More importantly, however, is that Mac OS X, while a great platform for many desktop users, doesn’t protect the core Software Freedoms enough.

The freedom to run the program, for any purpose (freedom 0).

Mac OS X has a lot of restrictions. I can only run it on Mac Hardware. I can’t run it in a virtual machine (unless it’s Server OS X, and then only on Mac Hardware). Mac Hardware may look nice, but I’m not wiling to pay the premium for those aesthetics at this point. Plus, if you look at other Apple products (which I feel a company must be judged on all it’s product lines), this freedom is frequently trampled on. iPods are so hideously locked down, iPhones have an enormous number of restrictions on where you can use it, when, how, and whom with.

The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.

A lot of OS X is based on free software. We have access to Darwin (the kernel), WebKit (the rendering engine behind Safari), Bonjour, Open Directory, and OS X includes a handful of great FLOSS tools (Apache, Emacs, Vim, GCC, etc). However, there are enormous parts of the OS that we can’t touch. Just because we have WebKit, doesn’t mean we can rebuild Safari. Interested in how something works in iTunes? Too bad, Apple won’t even let system tools see what’s going on there.

Do I believe that Apple has a moral imperative to release all their source code? No. But if you really care about Free Software and the ability to hack on code, Mac OS X can not compete with Linux or FreeBSD, operating systems where EVERYTHING is available for investigation and experimentation.

The freedom to redistribute copies so you can help your neighbor (freedom 2).

Okay, I know what Stallman is talking about here, but this just isn’t as important to me as it is to him, so I’m going to ignore this Freedom. It’s a great ideal and goal, and I’ve used and contributed to many projects that honor this freedom, but I’m not willing to say that all software must have this right.

The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.

Ah, there’s the Rub. Actually, for the code that Apple has released under the Apple Public Source License grants these rights, though it doesn’t cover binary releases. Under the GNU General Public License, external distribution of binaries requires the source code of those binaries to be made available. Under the APL, external distribution of the binaries requires only a notice and a link to the “Covered Code” that was used as the base.

In short, this grants Apple the ability to distribute binary versions of APSL software that contain features or bug-fixes that aren’t in the APSL code. Apple can pick and choose code that they release publically. At least the license extends these same rights and privileges to all of us. So, the License is about halfway to the overall point of this freedom. Unfortunately, this particular freedom is one that I’m a bit uncomfortable about Apple subverting in this way, though it pleases me that all developers are on equal footing with Apple regarding the use of this license.

Knowing that Apple releases don’t fit the Free Software Definition, I can still see why Mac OS X has become so popular with hackers. It’s a pretty, functional operating system that is a lot more open than Windows. It’s Unix roots are a huge improvement over the old Mac days. But the restrictions inherent in the system (particularly the lack of permission to run on non-Apple hardware), make it a complete no sale for me. The Operating System could cure cancer, and I still wouldn’t buy it.

It doesn’t help that so much of the rest of Apple’s hardware is locked down with DRM technology that makes me unwilling to pursue the platform. I’ve still got a Mac for development purposes, and I think Macs have strong advantages over Windows as an Operating System, but I completely disagree that Macs stand any chance at completely taking over the market.

Desktop PCs are going to become less relevant over the next few decades for home users. Home users are going to depend more on Smartphones, and other portable computing systems. Laptops, while more portable than Desktop PCs, will begin to phase out as Smartphones become more capable. Imagine a Smartphone that you can plug into a docking station and use with a full display and keyboard. Other people already are, and within 15 years, that is where we’ll be.

Except in Business. Businesses are not going to be willing to go the full software as a service route that many individuals will be. Businesses will want to maintain local servers and workstations that their employees will use. Windows has a huge advantage here, as a large amount of business software only runs on this platform. Quickbooks has only fairly recently ported it’s Professional line to Macs, and there are a lot of accountants that will never opt to use Quickbooks. Business follows the needs of the Money people, and Macs can’t fill that niche yet. And Apple doesn’t offer the business integration services that Microsoft does. Running a network of Windows PCs with strong security is fairly easy, and not terribly expensive. Macs don’t offer the granularity of security controls that many Business users expect. Apple has yet to target this market.

I believe Linux will likely end up winning in the business arena. The price is right, it’s almost as easy to setup and maintain as Mac OS X is in a server environment, and it runs on a far wider variety of hardware. Plus, there are a lot of projects to bring the kind of business integration that Apple doesn’t provide on a Linux platform. If Apple wants to succeed in the computer market, the need to focus on Business. Windows became the standards in homes not because it was the best platform available, but because people were using it at work, so it was more comfortable for use at home.

Of course, the other fault Apple has, is it’s users. Comments like Hanssons don’t make anybody want to switch to Macs. They make people think that he’s kind of a douchebag. Jeff Atwood says in the bottom of his post on douchebaggery that “Results speak loudest. Show the world what you can do in your programming environment of choice.” He’s right. People began trying Ruby on Rails because they were told it was amazing. The people who continue to use Rails use it because it fulfills their needs well and they can build great software in it.

Operating Systems as Platforms are fading away, being replaced by programming enviroments (Python, .NET, etc.) and Frameworks. Don’t make the mistake of assuming that programs written using a Mac are better than programs written using Windows. If they don’t do what you want, they’re still trash.