Tue, 18 May 2010

Why I Don't Like Apple

This is a copy of a post I made to the Remind-Fans mailing list. A bit of background to explain the last paragraph: My Remind product includes code in configure.in that makes it somewhat annoying to compile on Mac OS X.

I'd like to explain my anti-Apple stance. This will be long(-winded), so feel free to skip it. :)

As a kid, I was always a tinkerer. By about 12, I was fooling around with electronic kits, home-made gunpowder, etc. (Believe it or not, in those days, the local drugstore delivered potassium nitrate AKA saltpeter directly to our apartment, no questions asked!)

When I was about 14 years old, I bought a book on BASIC. I didn't have a computer, but I read the book and started writing programs anyway. I wrote them with pencil and paper, and "ran" them in my head.

The next year was my first year of high school. I finally got access to a computer (a Commodore PET). Its dialect of BASIC was a bit different from what I'd learned, but I adapted my programs and typed them in. Of course, they failed miserably. :)

But I was hooked. I could see that this computer thing was amazing, that it could take my abstract thoughts and make them concrete.

Over the years, I did an undergraduate and Masters degree in electrical engineering, but software was always my first love. After graduation, I worked at a couple of places as a software developer before striking out on my own by founding Roaring Penguin Software Inc. in 1999.

A few years before that, in 1994, I had discovered Linux. I was completely amazed when I saw the famous "X" cursor running on my (ex-)DOS PC. Discovering Linux brought forth the same rush of feeling I had when I was 15 and first got my BASIC program to run on that PET. It was once again the sense of limitless possibilities.

I don't have anything in particular against non-free software. My company makes its money, in fact, by selling non-free software. (We supply source and you're allowed to modify it; you just can't redistribute it or a derived product.) But I do have strong feelings against proprietary companies that try to limit what you can do with your hardware, or that try to hide the innards of their systems from tinkerers. To do so is a tragedy; it deprives us of future hackers.

Some say that Apple fills a niche by providing products that "just work" or are "simple to use." Well, my parents and kids find that their Linux machines "just work" and are "simple to use". (They'd never been exposed to Windows or the Mac, so I guess the first computer system you learn becomes the yardstick by which you measure simplicity.)

But should they choose to, they can delve into the innards of the system. I'll never forget the day I found my middle daughter using the "View Source" feature of Firefox to get past an online game's quiz. That's thinking like a hacker. And when she got her electronics kit, I could see the spark in her eyes. Sure, the circuits are far beyond her understanding. (I barely even remember how they work and I studied the stuff.) When I explained that capacitors were like water tanks and resistors were like thin pipes, she sort-of got it. But when she tinkered with the circuit by changing capacitor or resistor values, she really got it. It was obvious that a bigger capacitor held more water (well, charge) and took longer to charge up, so the circuit worked slower. And higher resistors were like thinner pipes, so the water (charge) took longer to drain.

This kind of learning involving deep, gut understanding is simply impossible without tinkering.

In my various jobs, I've interviewed about 24 software developers. Without exception, the ones who were "tinkerers" as kids, who enjoyed writing software just for fun and who thought like hackers were far superior to those who just studied computer science because they thought they'd get well-paying jobs.

Apple directly opposes and threatens the hacker culture. (Well... Apple is a big company, and big companies are always multi-faceted, so I'm sure there are many open-source and hacker-friendly people in Apple. I'm referring here to the direction in which Steve Jobs is taking the company.)

Apple seeks to create a walled garden of locked-down gadgets, Apple-approved applications and even Apple-approved development methodologies. It seeks to exclude contentious or "obscene" content, and it can terminate your right to sell applications on its platforms at its pleasure.

If I came to computers as a 14-year-old given an iPhone or iPad instead of a PET, I probably would have played with the thing for a few months and moved on. I'd never have experienced the beauty and creativity of crafting a piece of software. And that would have been tragic for me.

For the sake of the next generation, we have to tell the world that Steve Jobs' vision of computing is a sterile, stifling, ultimately poisonous vision. And if that means putting "puerile" code in ./configure scripts, then I proudly wear the label "puerile".




Blog    RSS    Home