I first discovered and started using Free Software as a child. I was a Debian developer at one point before I was old enough to drive a car. I learned to shave on the #debian IRC channel on Valhall (an IRC network, or server, that pre-dates Freenode and OFTC.) I’ve been referred to as “one of the kids Debian raised.” Of course, I experienced internal conflict about my Free Software ideals from time to time: the industry seemed to be moving in a different direction, it was often impractical to use Free Software. But I have always either been a staunch supporter and advocate of Free Software ideals, or carried a hefty guilt over the abandonment of those ideals. I’ve always ended up coming back to Debian[^coming-back-to-debian].
[^coming-back-to-debian]: I’m about to start moving to OpenBSD, and possibly even work towards building my own platform based on it. I wonder if this is just yet-another temporary diversion from Debian, or if it’s my final move away.
At one point early in my career, I used an SGI O2, which was (and still is, I think) my favourite hardware. At another, I used a NeXT pizza box, which was my favourite software platform (still is, I think). When using those machines, I held on to my Free Software ideals, but briefly (and with massive feelings of guilt) put them on the back burner to use systems that didn’t require so much fiddling and fuckery to get work done. Of course, my work was extremely portable (and continues to be): Emacs, a terminal, various compilers and interpreters, and a sometimes a web browser. I saw commercial Unix as a means to get work done today, and GNU as the escape hatch for when things got really bad. It was convenient.
Commercial Unixes were even kind of a “free software” grey area compared to other options. They were based on mostly open[^unix-open] standards, and programs were expected to behave in certain ways that encouraged interoperability. In a Unix environment, even if I don’t have complete freedom (and source code) for the foo program, I can at least trust it to be simple and powerful and behave in predictable ways.
[^unix-open]: For some definition of “open.” The standards were at least well understood, and widely implemented if not strictly “open”. In those days, at least; Unix is a shit show these days. There are actually programs out there that won’t work across even distributions of GNU/Linux, let alone across different Unixes.
A Tale of Two Monitors
In the summer of 2005 I went to Parksville, BC to work at a web hosting and advertising company that was adopting Ruby on Rails and needed some help making the move. I was issued a custom-build PC, like everyone else, and installed Debian. Nearly everyone on the development team was running GNU/Linux of some description, and everyone had two monitors. My monitors were back ordered, so I was set up with a spare one to start, and would swap later.
When my two monitors arrived, I wasn’t in a huge hurry to set them up. They sat on my office floor for a few weeks before I opened the first of my brand new 21″ monitors and plugged it in. I spent the better part of a day before getting pixels pushed to it. Then I spent another two days trying to get the second working. At some point the first one stopped working. It was extremely frustrating, and was getting in the way of my ability to work.
Around this time, many people in the Ruby community were switching to Macs. With the release of OS X Tiger, Apple was basically a commercial Unix vendor at a time when the other commercial Unix vendors were starting to fade away. In the summer of 2005, Apple was providing a real Unix, on nice hardware, with great applications. And Mac users didn’t have to fuck with XF86Config to get their new monitors working. It wasn’t Free Software, and Apple certainly wasn’t a good citizen of the community, but one could at least have a computer that was pretty well guaranteed to work and would operate well with my Free Software.
On the third day of failing to get my new monitors working, I stomped over to the IT support guy’s office and asked him to order me a Mac mini. Then I went home while I waited for it to be delivered. For convenience.
That’s how I became a “switcher.” I was the only one in the office at that time, and the only one in my immediate circle of friends to do so. Prior to switching, I had used PowerMac era Macs in public school, and had occasionally managed Macs that were part of a network I was responsible for, but at the time of the switch I had been pretty much exclusively a Unix guy for a decade. With Jordan Hubbard at the helm, I really hoped that I was getting FreeBSD with a modern GUI. I found it encouraging that the BSD folks had been rubbing OS X’s heritage in the faces of GNU/Linux users, claiming that FreeBSD had “won” the desktop. I guess that 2005 was, for me, the year of FreeBSD on the desktop.
Switching to the Mac at that point was delightful. I was up and running within an hour of opening the box. I copied my Emacs and Gnus configuration over, and imported my Firefox bookmarks into Safari. The first weekend I had the Mac, I read through some developer documentation and was reminded that OS X was basically NeXTstep: my favourite system to develop software for.
I was hooked. I finally had a real commercial Unix, on excellent hardware, that had a real (and growing!) library of software applications. I started questioning everything I thought about Free Software. Maybe the Free Software people had it all wrong. Maybe our ideals weren’t feasible. Maybe Free Software didn’t scale. Maybe there was some room for compromise. Maybe this new shiny machine would solve all of my problems. Maybe Apple could be trusted to do what was best for their users after all. Maybe convenience was more important than my ideals.
In the most enjoyable of my Mac-using days, I was using a perfectly married combination of hardware and software. When I was using beautiful, powerful, easy to use software directly from developers who seemed to genuinely care about my computing experience, it was easy to forget all of the reasons why I ever cared about Free Software.
I endured a lot of ridicule from my colleagues for switching back then. But not for idealistic reasons: they didn’t care about freedom. They cared about being the “cool nerds” that were smart enough to use “Linux.” They thought it somehow made them special to know which magical incantations were required to get a monitor working; they saw the fiddling and fuckery as a rite of passage. In time, however, I proved to be just the first of many. Everyone else on that team ended up ordering Macs when it came time to replace their hardware, too. As soon as it became cool for them to do so.
A Thousand Papercuts
I was “mostly” a Mac user for nearly a decade. I was fairly content with the decision at the best of times, although I was never one of those rabid must-buy-every-new-product crazies, worshiping at the altar of Steve Jobs, professing Apple’s infallibility. Apple would often do things that pissed me off. The first time was when they announced the switch to Intel[^switch-to-intel]. Later, the DRM on the iTunes Music Store. Then the iPhone with no native SDK. Of course the ridiculous restrictions on iOS applications (there was a time when you weren’t allowed to publish books about how to make iOS applications.) Every time one of these things happened, I would be overcome with rage, sell my Apple laptop, buy a non-Apple laptop, and install Debian. This would last a few months (or weeks) before I’d throw my hands in the air and get a Mac again. For convenience.
[^switch-to-intel]: They spent 30 years fighting an up-hill battle about the merits of a superior hardware architecture, and then just as the tides were turning in their favour, they gave up. And that they did so on the blatant lie that IBM couldn’t keep up with their “demand” (which was paltry) really rubbed me the wrong way.
My friends made fun of me for being on this treadmill. The Mac faithful were certain I’d be back. Apple had the functional high ground, after all: everything “just worked.” The applications were refined, easy to use, and improved my work-flows. When I installed Debian, something wouldn’t work quite right, some work-flow would be terribly unrefined, and I’d wind up back on Apple gear for the same reason I wound up there the first time in 2005: for convenience.
Somewhere in the back of my brain, my Free Software ideals still existed. Those feelings were still strong enough to make me feel guilty about using Macs. I continued using Macs despite Apple’s poor treatment of the Free Software communities their business depended on. Despite the proliferation of DRM in Apple’s products. Despite my nervousness about throwing money into the eventual black hole that was the walled-garden App Store ecosystem.
My friend Graham talked about his experience of a thousand paper-cuts. I remained a conflicted user of Apple products until Yosemite came out. Apple had finally lost the functional high ground[^marco-regret]. Suddenly wifi never worked, bluetooth was sporadic at best, Mail.app lost my mail, notifications were unreliable, and my machine crashed constantly. Up to Yosemite, every release of OS X was worse than the one before it[^every-release-worse-than-before], but there was still immense value in the convenience of “just works” often being true.
[^marco-regret]: Marco has since claimed that he regrets posting that article, but only for the attention it got, not for the factual inaccuracy within.
[^every-release-worse-than-before]: A trend that seems to have continued with Apple breaking a bunch of Unix things in El Capitan. Apparently you’re not allowed to have
/usr/local anymore (Update: apparently I’m crazy, and this isn’t true; I may have been confused by a related bug.)
With Yosemite, the advertised features stopped working, on all of my Apple products. “Family Sharing”, a feature I waited for impatiently for years, never worked properly (and as I understand it, still doesn’t.) It was no longer convenient for me to be a Mac user. The new features never worked, and because they were pushing tight integration between the Mac and the iPhone, it meant that everything broke all at once.
Apple itself is the biggest hindrance to the Apple ecosystem. I don’t miss iCloud, iMessage, or the App Store lock-in. I don’t care to let Apple be in charge of synchronizing my Music and Photo libraries between all of my devices, I can do that better myself[^apple-sync]. I don’t even care about Evernote, Dropbox, or any of those other “cloud[^cloud] services.” But I sure miss the stable of independent app developers who really care about shipping a quality product that their users will love. This is what you’re leaving behind when you ditch Apple.
[^apple-sync]: Apple is so terrible at services that my data might be safer written in pencil on paper and left out in the rain.
[^cloud]: There is no cloud, it’s just someone else’s computer.
I went for the convenience, I stayed for the functional high ground. Once both were gone, I suddenly remembered that I have ideals and morals that were being violated. I wasn’t aware quite how much I was giving up until I looked at the big picture.
Now it’s time to take a step back, and look at what computers can actually do for us to improve about our lives. It’s time to solve those problems, well, and in a responsible way. It’s not enough to be new and shiny.
It’s time for the tools to start earning their keep, and providing more than they take away.
I called this post Switching Back. It’s a reference to the words used in Apple’s “switch” campaign. But this isn’t about switching to or from Apple, it’s about reclaiming my data, my identity, and my freedom. It’s about switching back to the way things were before we were owned by the cloud, which isn’t a cloud at all: before we were owned by other people’s computers.