Monday, October 19, 2020

Evolution of the Programming Languages From iPhone OS 1.0 to iOS 14

Alexandre Colucci:

In this new article, I will answer this question by measuring the total number of binaries in iOS. I will go one step further and also count the number of binaries using other programming languages: Objective-C, C++ and C.

Finally to be as complete as possible, I ran this analysis on all major iOS releases, from iPhone OS 1.0 to iOS 14. This will provide a detailed overview of the evolution of the different programming languages over more than a decade of iOS development.

[…]

iPhone OS 1.0 contained less binaries than the number of binaries in iOS 14.0 using Swift.

[…]

The number of binaries using Objective-C is still growing with each iOS release.

Looking at the graph, it’s scary to contemplate just how much iOS has grown. So much new code, so many potential new interactions. As with macOS, we can lament the shocking number of bugs that go unfixed, even unacknowledged, but it’s also a wonder that it works at all.

Previously:

Update (2020-10-20): Malcolm Hall:

Recent heavy use of stubs might be skewing the numbers. E.g. On iOS 14 the staged apps are now stubs for an app framework in the dyld cache so you might have counted the app twice or maybe three times.

9 Comments RSS · Twitter

iOS 14 has ~3,000 more binaries than iOS 6.

I have an old iPhone 4 running iOS 6 sitting in a drawer, and I just poked around on it for awhile. An iPhone 4 with iOS 6 really is a delightful combination of hardware and software.

Certainly, there are very useful things that have been introduced to iOS since iOS 6, such as Continuity/Handoff, Control Center, and iCloud Photo syncing. Nonetheless, it's striking how snappy, pleasant, and functional an iPhone 4 running iOS 6 remains.

I can't help but wonder how many of the 3,000 additional binaries in iOS 14 are much more useful to Apple than they are to actual iPhone users.

More binaries were added between iOS 13-14 then existed in total in iOS3

Anonymous wrote: "More binaries were added between iOS 13-14 then existed in total in iOS3"

...and supposedly iOS 14 was a "cleanup" release, focused more on bug fixes than new features.

I wonder how much of this is a variation of the fallacy of using lines of codes as a metric. How much of it is just Apple moving previously monolithic code into separate binaries?

(As an example, iOS 6 saw the split of portions of Springboard into “backboard”.)

…and supposedly iOS 14 was a “cleanup” release, focused more on bug fixes than new features.

I don’t think Apple said that. You’re probably conflating rumors from people like Gurman with actual official messaging.

Other than macOS 10.6 Snow Leopard, I don’t think Apple has actually called a release cleanup-focused.

This is what happens when one optimizes for a single metric in a complex system. Cost of programming now dominates and is no longer kept in check by limited computing resources. Short term metrics lead managers to care only to what features they can claim they shipped this month.

Contrast this to building hardware: the cost of materials matters. A bridge has a materials budget, a CPU has a transistor budget. Different incentives lead to different outcomes.

Sören wrote: "I wonder how much of this is a variation of the fallacy of using lines of codes as a metric. How much of it is just Apple moving previously monolithic code into separate binaries?"

That's a very fair point. I normally take these sorts of blunt statistics as not necessarily being meaningful in any larger sense. As you suggest, increasing modularization can be a very reasonable thing to do, especially as platform complexity grows.

Still, I can't escape the feeling that Apple's primary focus is on increasing surveillance and monetization of users and other internal goals, rather on increasing the quality, consistency, and reliability of the end user experience.

Also, your comment about whether or not iOS 14 is more of a "cleanup" release than a feature release is fair. At the same time, the new features strike me as underwhelming, aside from widgets. Even then, widgets are things I appreciate as being significant for others, but I personally don't plan to use them. Nonetheless, I appreciate your critical eye.

That’s a very fair point. I normally take these sorts of blunt statistics as not necessarily being meaningful in any larger sense. As you suggest, increasing modularization can be a very reasonable thing to do, especially as platform complexity grows.

Yeah.

Michael has since amended the post pointing out that some of these are actually stubs.

Still, I can’t escape the feeling that Apple’s primary focus is on increasing surveillance and monetization of users and other internal goals, rather on increasing the quality, consistency, and reliability of the end user experience.

I would say iOS 14 is a fairly decent release in terms of quality and reliability, even during most of the betas. (Oddly enough, the early betas were very reliable; later ones then weren’t; then it recovered closer to release. I suspect the cause is that there were features that weren’t ready for beta 1, and were instead merged later on.)

Now, some recent releases like 11 and 13 were clearly a much rougher experience for a lot of people. Things are arguably worse on macOS, perhaps due to the increased complexity (more modularity both in software and hardware; more ways for third parties to affect the core OS), and Apple can’t have it both ways here: I do appreciate that they provide a lot of free feature updates for years, but especially on iOS, you’re essentially forced to install them (you don’t typically get security patches for older releases, nor is there even much of a UI to pick a version), so it’s important that those new releases are stable. It’s unacceptable, on a premium product, that a large part of each twelve-month cycle is spent adding features, then gradually fixing bugs, then reaching more-or-less acceptable stability, only to approach WWDC and re-do the cycle all over again.

But I digress. That has been discussed to death. There’s things Apple could do here, and they haven’t been doing them. Allowing users to go with an LTS path instead, for example: have those annual releases, but also, every two or three years, have a release that keeps getting updates for a much longer time.

But, again, with iOS 14? I would say so far, so good.

As for monetization, yes, that does worry me. They seem to see growth in services rather than hardware sales, but:

1) why is growth needed at all? Apple seems to be doing just fine at their current size. (This is obviously a much bigger conversation around capitalism.)

and 2) it’s one thing to offer subscription services, some of which I do use (I’m reasonably happy with using iCloud to sync stuff between my devices, for example). It’s another to push them hard, and some of the ways Apple has done so recently are icky and IMHO unbecoming of their brand. Tim Cook is not a car salesman, and I don’t need “HEY! I see you’re listening to a podcast; did you know you could listen to the latest and greatest track from Generic Pop Singer instead?”, or suggestions that I haven’t “finished setting up my device” (so there’s a technical problem?) without adding Apple Pay (which, incidentally, I couldn’t at the time; it wasn’t available on my bank). In Apple’s defense, there’s a thin line there: sometimes, you really just want to promote your feature that you think is great and under-discovered. But I think they’ve crossed that line towards wanting to drive sales, even if just by a little.

Also, your comment about whether or not iOS 14 is more of a “cleanup” release than a feature release is fair. At the same time, the new features strike me as underwhelming, aside from widgets. Even then, widgets are things I appreciate as being significant for others, but I personally don’t plan to use them. Nonetheless, I appreciate your critical eye.

Yeah, well, not every feature is for you or me. :-) I think a lot of low-hanging fruit have been picked at this point. That’s not to say I don’t have wishes left — I still would like Mac OS 8’s Location Manager to make a return. It would also be a nice thing for the pandemic! Let me define home, work and on the go (you could even have those as default presets with icons), and then do things like automatically starting/stopping VPN, changing authentication strength, heck, even configuring which apps send you push notifications (like, maybe, not Tinder while you’re at work?).

Thanks for the thoughtful discussion, Sören. It seems to be a rare thing to find on the Internet these days.

Interestingly, at least for me, iOS 14 has been a much more difficult update on my iPhone 6s than either iOS 12 or 13. It's the first time in years that I've been tempted to erase my phone and restore from a backup.

While the situation has improved significantly with iOS 14.1 compared to 14.0 and 14.0.1, I've experienced frustrating interface delays when launching or switching between apps, as well as serious screen drawing problems with Mail. I've never encountered an iOS update before where the interface appears to freeze for a few seconds and then rapidly executes whatever presses and slides had been performed during the delay -- a dangerous phenomenon in some cases. In Mail, I often will see a "No Mail" indicator, even though I know there are hundreds of emails in the account. I also have encountered odd behaviors in the Mail message list view, with some messages displaying and others having an apparent blank placeholder. Switching to a different view temporarily fixes the problem, e.g. by toggling read/unread or between the message and list views. Other than those intermittent issues, performance remains quite impressive.

Anyway, thanks again for your comments.

I’ve never encountered an iOS update before where the interface appears to freeze for a few seconds and then rapidly executes whatever presses and slides had been performed during the delay

Oof.

That sounds a lot like the USB-related(?) delays people have been experiencing in Catalina. E.g.,:

https://twitter.com/caseyliss/status/1229488602536665088?s=21, https://twitter.com/caseyliss/status/1228433687529820160?s=21

Particularly:

 All of a sudden those queued up haptic clicks fire in rapid succession

There seems to be some new buffering code in Apple’s OSes, and/or some new factor that causes events to be (temporarily) blocked.

Anyway, thanks again for your comments.

I probably wrote way too much there and need to get off my butt to relaunch my own blog.

But, thanks!

Leave a Comment