Why Free OS Upgrades Suck
Here's how Apple reacted to my last OS X 10.10 bug report:
No plans to update Yosemite.
But let me start from the beginning... and yes, this is a little bit of a rant, something I felt I needed to get off my chest.
Downloading OS X El Capitan. Will I brick my #Apple MBA completely? Or will it still be usable in the morning?— Michael Mahlberg (@MMahlberg) May 25, 2016
Meh! El Capitan photos app uses an lib format incompatible to Yosemite version. Seems I've to upgrade my old MBP. :(— Holger Plankermann (@holgerGP) May 22, 2016
alright i've had enough. i'm downgrading bak to yosemite, el capitan's incompatible with too many things including my art program, evidently— Emmit (@AruyaSei) May 19, 2016
Now that Apple is restricting new Xcode updates to El Capitan, I am forced to consider leaving Yosemite and incompatible software behind :(— Internet Persona (@jenn) March 23, 2016
Upgraded to El Capitan so that I could install traktor. Now my Mbox is incompatible. New [good] audio interface is $900. This is unfair.— rihanna's intern (@BXHXLD) January 12, 2016
I develop and sell a small music app for Windows and OS X. Software veterans know, maintenance is an integral and probably the largest part of the development process. Since the software runs on customer machines, it's essential that it sends home crash reports (after asking for consent) so that I am aware of those really nasty, hard to reproduce bugs. These crash reports can easily be grouped by OS version, app version and probably most importantly, offending frame. This lets me prioritize and decide, on which bug I should spend the most time. The bug that eventually led to Apple's response from above was identified this way (rdar://22948498). It's one of the most frequent causes for crashes of my app on OS X 10.10. And it will never be fixed.
Because my app is written in Java, most crashes (let's define a crash as an event that produces a crash log) are caused either by the Java Runtime Environment (JRE) or by the OS. Solving JRE problems is not easy, but doable: The JRE is open source, there is a public bug database and there are a bunch of mailing lists that let me talk to Oracle engineers and other involved parties. Plus, and now we're getting closer to the actual topic of this article, I can freely choose which version of the JRE to ship with my app. Heck, I can even patch it myself and ship a custom OpenJDK version, if I want to. Not that that is typically a great idea, but still...
Solving OS problems is much harder. Neither OS X nor Windows are open source, there is no official and open bug database (Open Radar is great, but not official), and I don't get to choose the OS version my customers use.
But, you may say, you can require users to use OS version X.Y.Z in your system requirements blurb.
Yes. Indeed, I can.
But remember what I wrote about maintenance being part of software development? De facto, system requirements only shield you from old OS versions. What happens, when the customer updates her or his system, because the new UI is so much prettier? Or, as illustrated by Apple's response, when the OS manufacturer decides that it is no longer fixing certain bugs in its "old" OS (released 7/2014!) and actively urges customers to update their systems?
Why can Apple afford not to fix its OS? Tweet
From Apple's point of view, 10.11 is the bugfix for 10.10. And it's free as in you-already-paid-extra-for-the-hardware. So users just need to install this free upgrade, no need for Apple to fix the 10.10 branch, and everything is fine. Or is it not?
It is not.
Twitter is full of people bemoaning the fact that Apple is semi-forcing OS upgrades upon them. And they suffer when essential applications don't (yet) run on the new OS version, the vendor decides not to support the new OS at all, or the app is old but paid-for and now requires a paid upgrade.
What does Apple do about this? It's almost comical. OS X moves known incompatible software into a separate folder. Out of sight, out of mind. Problem solved. Frankly, I have my doubts the mechanism works well for anything but software built for the wrong architecture—be it 32-bit or PowerPC. If you really want to know, whether some app runs under a certain OS version, you might want to check a site like roaringapps.com.
But let's be fair. I'm sure that Apple tries hard not to break compatibility. Unfortunately, trying is not enough. Users and app developers inevitably have to deal with software that simply does not work anymore. If this happened every five years or so, it wouldn't be a big deal. But Apple likes to release often, push innovations out the door, and throw away legacy code. A new OS version is presented almost every year. So we are facing this problem quite frequently.
How much does a free OS upgrade really cost? Tweet
To be clear: I'm not saying that short release cycles are necessarily bad—they have their advantages. But contrary to what Craig Federighi claimed in 2013, the yearly OS X upgrades are not free. A price needs to be paid for each new version. Either by app developers, who have to spend a lot of time on making sure that their apps still work, or by users, who loose perfectly good apps or have to pay for upgrades. And that's why I'm so annoyed that Apple won't fix that 10.10 bug mentioned above. The price for that bug is paid by us, because it only leaves us with the unfortunate choice between occasional app crashes and an OS upgrade with associated hidden costs.
Most likely, Apple will announce another free upgrade for OS X at this year's developer conference (WWDC).
Will you upgrade once it's released? How much will it cost you?