← Back to context

Comment by musicale

7 years ago

One of the most horrible things about iOS is that it breaks your apps every year.

This is a terrible experience for customers (since their apps break every year) and for developers (since they have an ongoing maintenance burden dumped on them by Apple just to keep their apps working across yearly iOS updates.)

The main beneficiary of abandoning ABI compatibility (as Apple has done) is the platform developer (e.g. Apple) who avoids the maintenance burden of backward compatibility.

It's arguably the wrong approach because it helps the platform developer (Apple) at the expense of existing customers and developers. There is multiplicative burden of pain - each time Apple breaks something, millions of customers and thousands of developers pay an immediate price.

There is a long-term user benefit to platform evolution, but the short-term cost is relentless and ongoing.

For game developers in particular, the stability and backward compatibility of Microsoft/Sony/Nintendo platforms is a dream compared to the quicksand of iOS development.

I created and maintained a game plugin for World of Warcraft. For those of you who don't know, the plugin API changed constantly. It used to be that after every new release, the first thing I did was not enjoying the new version of the game, but fixing my plugin so it ran on the new version. Later on they introduced public beta (maybe they always had it I just didn't know), so I could test it ahead of time and release a new version along with the game release. But it was all for fun, so it's all good.

Then life happened and I left WoW completely.

Fast forward ~10 years to 2019, they released World of Warcraft Classic, which I assume uses the same API as the original game in 2004. Someone emailed me asking if I could release a new version of the plugin that works with WoW classic.

I was like, "No."

> One of the most horrible things about iOS is that it breaks your apps every year.

Not because of ABI compatibility. The system frameworks even put in effort to work as they did before if you don’t update your application.

At this point I’m pretty much done with smartphone apps.

Just give me xterm and bash, even with a touchscreen that would be better than dealing with everyone trying to reinvent the wheel every year.

> One of the most horrible things about iOS is that it breaks your apps every year.

You have to be a really terrible app developer for that to be true.

  • If the number of app updates I get every year with "iOS XX compatibility" in the release notes is any indication, there must be a lot of really terrible app developers in the world!

  • Apple’s own UI components break from year to year. UINavigationController is infamous for changing its layout code every other release and doing so in such a way that apps with relatively standard usage entirely within the realm of public API see odd bugs and changes in behavior–sometimes even without an SDK relink.