If you followed the recent Apple events, you probably saw a picture of the A14 and M1 dies… that got me thinking about what you would see if you could pass iOS under X-Rays…

In my previous article about the evolution of the programming languages from iPhone OS 1.0 to iOS 14, I analyzed iOS based on the number of binaries and their programming languages. As I pointed out in this past post, the size of the binaries were not taken in account. In this new article, I look at iPhone OS 1.0 and iOS 14 from a size perspective using tree maps.

Methodology

To produce the images in this article, I extracted the root filesystem (including the dyld shared cache) of each major iOS release:

Version Device
iOS 14.0 (18A373) iPhone X
iOS 13.1 (17A844) iPhone X
iOS 12.0 (16A366) iPhone X
iOS 11.1 (15B93) iPhone X
iOS 10.1 (14B72) iPhone 5s
iOS 9.0 (13A344) iPhone 5s
iOS 8.0 (12A365) iPhone 5s
iOS 7.0.1 (11A470a) iPhone 5s
iOS 6.0 (10A403) iPhone 3GS
iOS 5.0 (9A334) iPhone 3GS
iOS 4.0 (8A293) iPhone 3GS
iPhone OS 3.0 (7A341) iPhone 3GS
iPhone OS 2.0 (5A347) iPhone 2G
iPhone OS 1.0 (1A543a) iPhone 2G

I then created a tree map. You might be familiar with tree maps as they are often used to visualize a file hierarchy to give you a graphical overview of the structure. One key characteristic is that each file is shown as a rectangle with an area proportional to the file's size. The tree maps displayed in this article have been created using the awesome GrandPerspective and annotated with Pixelmator.

iPhone OS 1.0

Let's look at what you would see if you could scan iPhone OS 1.0 using X-Rays:

The diagram below highlights some of the major functional blocks:

We can already notice that:

  • The structure is quite simple and has similarities to macOS
  • Frameworks are taking more than a third of the size
  • Fonts are taking more than 25% of the whole operating system

We can go one level deeper and identify all the components:

From the list of components, we can clearly determine all the main features of iPhone OS 1.0:

  • Phone
  • SMS
  • Weather
  • Clock
  • Mail
  • Safari + Web
  • Calendar
  • Maps
  • Wallpaper
  • Ringtones
  • Office support
  • Audio player
  • Video player

A couple of components worth mentioning:

  • The UIKit framework is taking more than 13 % of the total size
  • The wallpapers and ringtones count for 6 %
  • ICU (International Components for Unicode) takes more than 5 %
  • SpringBoard is roughly 2 %

Fonts in iPhone OS 1.0

On popular demand, I added this section to provide more info about the fonts. The huge Fonts block is composed of 2 parts:

  • the fonts representing 2/3 of the size
  • some caches (visible at the top of the area and representing a third of the size)

For the font lovers, here is the complete list of fonts in iPhone OS 1.0:

AmericanTypewriter.ttf
AmericanTypewriterBold.ttf
AmericanTypewriterCondensed.ttf
AmericanTypewriterCondensedBold.ttf
AmericanTypewriterCondensedLight.ttf
AmericanTypewriterLight.ttf
Arial.ttf
ArialBold.ttf
ArialBoldItalic.ttf
ArialItalic.ttf
ArialRoundedMTBold.ttf
arialuni.ttf
CourierBoldOblique.ttf
CourierNew.ttf
CourierNewBold.ttf
CourierNewBoldItalic.ttf
CourierNewItalic.ttf
CourierOblique.ttf
DB_LCD_Temp-Black.ttf
Georgia.ttf
GeorgiaBold.ttf
GeorgiaBoldItalic.ttf
GeorgiaItalic.ttf
Helvetica.ttf
HelveticaBold.ttf
HelveticaBoldOblique.ttf
HelveticaOblique.ttf
LockClock.ttf
MarkerFeltThin.ttf
MarkerFeltWide.ttf
PhonepadTwo.ttf
TimesNewRoman.ttf
TimesNewRomanBold.ttf
TimesNewRomanBoldItalic.ttf
TimesNewRomanItalic.ttf
TrebuchetMS.ttf
TrebuchetMSBold.ttf
TrebuchetMSBoldItalic.ttf
TrebuchetMSItalic.ttf
Verdana.ttf
VerdanaBold.ttf
VerdanaBoldItalic.ttf
VerdanaItalic.ttf
Zapfino.ttf

The cache contains info for all these fonts and includes the 2 extra files:

  • HelveLTMM.ps
  • TimesLTMM.ps

Fast forward to a few years later

I won't give details about each iOS release but you can inspect the tree maps from iPhone OS 2.0 to iOS 13.1:

iPhone OS 2.0 iPhone OS 3.0 iOS 4.0
iOS 5.0 iOS 6.0 iOS 7.0.1
iOS 8.0 iOS 9.0 iOS 10.1
iOS 11.1 iOS 12.0 iOS 13.1

Note that the number of building blocks increased with each new iOS release and the components are becoming smaller.

iOS 14

We are now in 2020 and iOS 14 is available. Without a surprise, iOS 14 is way more complex than iPhone OS 1.0:

Here is the diagram highlighting the functional blocks in iOS 14:

We can note that the main structure is still fairly similar to the original iPhone OS 1.0 version: the fonts, frameworks, applications, library, /usr, … are still there.

There are however a couple of big differences:

  • iOS 14 contains a lot of Preinstalled Assets and Linguistic Data. As far as I can tell, these components are used for on-device machine learning: language detector, voices, tokenizers, vocalizers, …
  • The dyld shared cache, a caching mechanism introduced in iPhone OS 3.1, causes the Frameworks and Private Frameworks to be split in several areas. The dyld shared cache has been marked with the red box in the diagram.
  • Health is clearly an important feature of iOS 14.

There are so many components in iOS 14 that it is way more complex to identify all of them. I gave it a try nonetheless:

Although it is now difficult to list all the features, there are some clear trends:

  • iOS 14 is packed with on-device machine learning technologies: Face Detection, Deep Convolutional Networks, Vision frameworks, Text Recognition, Neural Network, …
  • A lot of components are related to the camera and photos: Effects, Memories, video processing, photo library, …
  • Siri and voices are clearly visible.
  • As we already mentioned, Health is an important feature.
  • We can identify a couple of features added over the years: HomeKit, Watch, CarPlay, Spotlight, Emoji 🤟, News, iWork, Wallet, Shortcuts, ARKit, …

More statistics:

  • Fonts are now counting for less than 6 % of the size
  • Linguistic Data represent almost 8 % of the size
  • Although the ICU size was multiplied by more than 3 since iPhone OS 1.0, it now represents approximatively 0.5% of the total

Comparing iPhone OS 1.0 with iOS 14.0

For readability the previous tree maps in this article were all displayed using the same size. If we present iPhone OS 1.0 next to iOS 14 with a proportional area, you would see that the whole iPhone OS 1.0 is basically taking the size of the iOS 14 wallpapers:

Conclusion

When iPhone OS 1.0 was released in 2007, it redefined the smartphone with a limited set of core features. Nowadays iOS 14 contains an incredible amount of components. By looking at them based on their size, we can determine the most important features. We thus distinctly see Apple's AI push into on-device machine learning with technologies like object detection in images and video, language analysis, sound classification and text recognition.


Update 24.11.2020:

  • Added fonts in the iPhone OS 1.0 tree map
  • Added fonts in the iOS 14 tree map
  • Add section with fonts info for iPhone OS 1.0