The Future of Apple Operating Systems and Platforms

This blog post appeared as a feature article on MacNN.

In 2001, Apple introduced OS X -- a completely revamped and UNIX-based operating system which gave the platform some much-needed technologies to the Mac that Mac OS couldn't. It represented a clean break from Mac OS 9, and it is what has kept me in the Apple camp. While OS X -- with its children and grandchildren OSes iOS, watchOS and most recently tvOS -- still forms the basis of Apple's OS strategy, given its age of 26 years (counting from the first public release of NeXTSTEP, which was fused with some Mac OS technologies to give birth to OS X) I was thinking: what would replace Apple's current OSes?

Apple currently maintains four different platforms: the mouse-based Mac, the touch-based iOS, watchOS and the remote control-based tvOS. While iOS was born of OS X, all other platforms are in fact the "children" of iOS. Despite their different outward appearances, they share a lot of technologies under the hood, such as a common kernel (up to platform-specific optimizations) and certain APIs.

Looking 10 years ahead, what is next? When you look at the classic Mac OS to Mac OS X transition, there were a number of technological factors that forced this change: OS X had features that were necessary, and vital to the survival of the platform. A few of these features included pre-emptive multitasking, full memory protection, and a modern networking stack. And, of course, a more modern programming language with a more modern set of APIs. So what are areas where Apple's platforms are lacking today? The best way to explore this is to find out which fundamental assumptions have changed.

Support multiple platforms with one OS

In 2015 alone, Apple will have released two new platforms to the public, and if the persistent rumors about Apple's foray into the car industry have any sort of truth to them, they won't be the last. However, given that with few exceptions tvOS's APIs are identical with those of iOS, developers will hit the ground running.

Under the hood, all of Apple's operating systems are based on versions of the same kernel, and lower layers — just like Linux powers everything from smartphones to super computers. Apart from platform-specific optimizations, what is different on each of them are the APIs. If Apple wants to make it easier for itself to nurture that many platforms, and allow developers to leverage their knowledge, it is natural to expect a convergence of Apple's APIs across platforms -- only those that need to be different should be different.

More unified Swift-native APIs

I think the transition to Swift is perfectly timed: Apple claims it has “designed [Swift] to scale from ‘hello, world’ to an entire operating system”. That is a pretty tall order for a programming language. While generally the reception amongst the developer community has been positive, there are a few areas where Swift regresses compared to Objective C. Be that as it may, Swift is here to stay, and unless something unforeseen happens, it will eventually replace Objective C. Consequently, we should eventually see Swift-only, or rather Swift-native APIs.

Thanks to the particular way Swift has been implemented (most notably, it shares a runtime with Objective C), developers can call Objective C APIs from Swift, and hence, Apple does not have to replace all of the functionality of its Objective C-based APIs, such as Cocoa, in one go. Neither Cocoa nor Cocoa Touch were designed from the start to be modular, or allow reuse across multiple platforms. With the transition to Swift-native APIs, though, Apple will have the chance to start with a clean slate, and engineer these APIs with the assumption in mind that they will run on different platforms. I reckon the first few APIs may appear within the next 2, 3 years, after Swift as a language has matured a little.

From the ubiquity of networking to the ubiquity of the cloud

When transitioning from classic Mac OS to Mac OS X, Apple went from an operating system that was initially designed to be used stand-alone to an OS that was designed to power computers which were always connected to a network. However, even then, your data was stored on a single machine, be it the user's desktop or sometimes also a server. Clearly, we have entered a stage where this fundamental assumption is breaking down: people own multiple devices, and work on the same data simultaneously. Instead, your data gets synced over “the cloud,” and “the cloud” no longer is one server your machine talks to, but a service which consists of many moving pieces that you as a user have no control over.

All current syncing and snapshotting solutions (such as Time Machine, iCloud, Dropbox or Synology's Cloud Station) are tacked onto a filesystem that is old, creaky, and does not check the consistency of its data. We all have multiple machines, and we would like to be able to access all of our data on all of them (unless we decide otherwise).

A new distributed filesystem

That is why the next big thing on my list is a new, distributed file system. HFS+ is based on 30-year old technology, and ripe to be replaced. Unfortunately, waiting for a new filesystem feels like waiting for Godot, and the "strategy tax" for Apple has been mounting.

Basically, you would like a filesystem that is based on the assumption that you sync your data to machines of different types. While distributed filesystems already exist, e. g. DragonflyBSD's HAMMER and HAMMER2 or Backblaze's Vaults for cloud storage, none of them are capable of running on the full gamut of devices, from the Apple Watch to Macs. Clearly, no such filesystem exists today, and perhaps a “multi-tiered” filesystem is necessary where not all features are enabled on all platforms.

Built-in data integrity

I love ZFS, or rather, the basic ideas underlying ZFS: you use checksums to be able to detect whether your data has been changed inadvertently by cosmic rays or some bug. This has to be the starting point. Given the amount of storage, it is very likely that you will have random bit flips in your hard drives, RAM or SSD.

As the expected number of bit flips scales at least linearly with capacity, the industry will have to adopt end-to-end error correction in mainstream computing devices at one point. The fact is that we will have many copies of our data stored on a multitude of devices and the cloud, being sure that the data stored is identical on all devices has to be a central tenet of the new filesystem. As data integrity via checksums is usually determined on the block rather than the file level, this would also allow for more efficient syncing mechanisms that use our bandwidth more frugally.

Solid state-based storage

A second fundamental assumption that can be made is that all future devices store data on SSDs. This is important, as SSDs are highly complex computers in their own right, complete with their own miniature operating system, filesystem, and so on, but the computer's operating system is oblivious to the inner workings and makes no use to leverage specific capabilities.

Certain features of modern filesystems, such as copy-on-write are implemented in any SSD because of the way SSDs work. So if the OS and SSD were to collaborate, a new “filesystem” could inherit copy-on-write from the SSD and would not have to implement it a second time by itself. In addition, tasks surrounding data integrity could be managed by the SSD controller with specialized hardware, enabling this feature on much more anemic hardware.

Frequent and live updates

Another area where a modern filesystem could enable great, user-facing functionality is updates: software and the OS get updated more and more quickly. Installing updates even now is a hassle, because the OS cannot update apps that are running, or update the kernel while keeping everything running. More modern filesystems (in conjunction with functionality added to the kernel) would allow live updates even to the OS (Linux already supports this), and hopefully in the future users would not even realize updates for the most part except by what has noticeably changed. This does beg the question, however, of whether users will want to be advised of what is about to happen, or just accept the changes from “on high.”

Automated file management

Perhaps the most difficult challenge is to add more automation to file management. If you look towards iOS in particular, it is clear that Apple hasn't cracked this problem yet (nor anyone else for that matter). Most people are horrible at naming files (and usually do not add their own metadata), and even to someone like me who tries to put a lot of effort into it, it is a chore to rename the new pdf files I have downloaded so that they are easily searchable. While this is something that would benefit from a more modern filesystem, the most challenging aspect is arguably the user-facing portion. How much should we automate in the first place? How are relations between files displayed to the user? What are sensible default behaviors, and how flexible should the system be?

Apple's first stab at a new user data management was to strictly "silo" it on iOS (and to some degree also on OS X), an experiment that failed. While siloing makes sense for applications such as iTunes, it was not a good fit for other use cases, because it made it impossible for users to work on one file with several different applications. Moreover, the context -- the relations between files -- were impossible to represent. It is norm rather than the exception that files of many different types are involved in a single project, e.g. images, spreadsheets, Word documents and pdfs (in addition to emails and chats).

What is more, Spotlight's current indexing algorithms are quite poor compared to a search engine like Google. It cannot extract title and author from a pdf file (unless this is included as metadata with the pdf). Likewise, while Photos can recognize faces, it does not recognize landmarks, different animals, and cars. So unless the user adds these keywords by hand (and goes through the motion to confirm all the faces), the computer is none the wiser. Now imagine a world where Photos would be able to recognize the Eiffel tower in the background, and conclude that at the time the photo was taken, you were most likely in Paris.

While that sounds like science fiction, it is actually a feature of Google Photos — which ships today. After uploading them, Google analyzes your photos on its servers, allowing you to search for “Paris 2003” to find the photo with the Eiffel Tower in the background (as well as a host of other pictures taken during that vacation, which are then associated by the time taken, so that not every picture identified as being from Paris needs to have the Eiffel Tower in the background).

These algorithms add context by automatically tagging photos based on what is in them, something that is a lot more powerful than manual tagging and flaky face recognition included with common pieces of DAM software. Moreover, they understand context, i.e. that the Eiffel Tower is located on the Champ de Mars in Paris. Similarly, imagine the possibilities if Spotlight's indexing were powered by something that resembles Google's search algorithms?

And privacy issues aside -- these are very serious, and will be addressed below -- from a technical perspective, a cloud-centric approach makes perfect sense: a powerful server in the cloud running 24/7 is more much suited to doing the hard number crunching than your iPad or iPhone. Just like Google adapts its search results to your profile (in no large part to serve you “better” ads), the automated file management system could take your idiosyncrasies into account.

Privacy and maintaining control over your data

While automated, intelligent indexing of user data in the cloud could bring about entirely new ways to work with our data, but they do reveal a lot about the user. What are you ok with Apple -- or Google -- knowing? Privacy concerns will shape the future of Apple's platforms, even though it enters as a design philosophy rather than a technology. The company has said publicly and repeatedly that protecting the user's privacy is paramount, that if given the choice, it does not want to know. Even in cases where transmission of user data becomes necessary, Apple will only transmit the minimal amount than what the functionality of its devices require in order to work.

Moreover, Apple is willing to sacrifice functionality for user privacy. Forcing certain information to stay on the device makes it harder to implement certain features, because you have less-sophisticated algorithms at your disposal, and necessarily also less context. After all, computing can only become more personal if your devices know more about your state, be it your schedule, where you live, what your habits are, or even your current heart rate.

On the other hand, to do any kind of processing on the data in the cloud, though, Apple needs to have access to user data. So where do you strike the balance between preserving the user's privacy and new features and capabilities? How much do you want to share with Apple, Dropbox or Google? Do you find the inherent risks acceptable (someone could hack your account)? For some people, the answer is yes. But no matter where you stand on this, I think most would agree that this should be a conscious decision on the user's part.

Moreover, apart from personal preference, there are cases where the user does not have a choice. Health care professionals must adhere to HIPAA's Privacy Rules, for instance, and in the private sector you may have clients who do not want their sensitive data on the third-party servers. It will be interesting to see how cloud services evolve to take on these challenges.

Continuous integration: the path to the new OS

Unlike with Mac OS 8 and Mac OS 9, OS X and iOS do not have glaring deficiencies that would preclude them from evolving or require a replacement of most of the underpinnings in one fellow swoop. Apple could replace only the parts that need replacement. Core Storage could pave the way for a new filesystem. The Finder could tap into the power of modern indexing algorithms by extending Spotlight. Time Machine's interface need not change at all, even if its underpinnings work very differently now. This is good news for us and for Apple.

How does the competition stack up?

To conclude, it is good to have a peek over the fence and look what the competition is up to. Not all the smart people only work for Apple; its competitors are well aware of these trends, and for the most part attempt to find their own path into the future.

Microsoft Windows and Azure

Microsoft's biggest problem since 2010 onwards has not been its lack of vision, but its execution. During the legendary All Things D interview of Steve Jobs and Bill Gates it was uncanny how much agreement there was between the two: “All things will be computers in different form factors, so what?”, and that the “different screen sizes,” as Gates put it, require different input paradigms and fulfill the expectation that all of your screens “work together.”

Microsoft is executing on that strategy by emphasizing the commonalities: all devices will run a version of Windows (one OS on different platforms). Literally, the Surface is a PC that can also replace a tablet at times. Apple, on the other hand, emphasizes the differences in the platforms (still one OS on different platforms), and they developed the iPad Pro from their new “default OS” (that which brings forth the children) by adding features over time, until it became a tablet that can replace a PC at times. Apple and Microsoft were aiming at the same point, but coming from different directions.

Apart from this philosophical difference, Microsoft has done much the same things: they have added new screen sizes, a big touch screen that doubles as a smart, computerized whiteboard, and they have developed; they adopted a new, well-respected programming language (C#) with new APIs. Microsoft also acknowledges the importance of the cloud with its Azure strategy. So I feel for the most part the new Microsoft is really “getting it”, although they have been less successful at executing their strategy in the user space.

Google, Android and Linux

As Linux has no appreciable presence as a desktop OS, the only relevant operating system for the purpose of this discussion is Android. Google's strategy is arguably more diverse and more complex, in part because they do not completely control all aspects of their platform (e. g. kernel development or flavors of Android based on AOSP).

Technically, any Linux-based OS has access to very advanced features such as modern filesystems and sophisticated schedulers, which can make use of the heterogeneous multiprocessing. The lack of OS updates for the lifetime of the device means developers cannot make use of many new features, and is the root cause of serious security problems.

Moreover, there is much more diversity: in part, this is because most Android handset manufacturers insist on skinning Android, and add their bits of code of varying quality as an attempt to differentiate themselves for the sake of differentiating themselves. Other times, handset makers (e. g. in China) have no choice but to base their efforts on “Android with the best parts missing”. Clearly, this makes it a lot harder for Google to develop its platform into the future, despite the fact that they have access and the capabilities to develop all of these modern technologies themselves.

The journey into the future

Unlike in 2001, when the Macintosh received a much-needed heart transplant, all of these changes can be rolled out gradually over time. Combined with the yearly release cycle, this makes changes harder to detect as they happen. So let us list some canaries in the coal mine:

  • When Apple releases the first new Swift-only API, it should likely be shared across all platforms (when this makes technological sense).
  • If the release schedule of core Apple apps included with OS X, such as Mail and Notes, is decoupled from OS X's release schedule, expect more frequent and continuous upgrades.
  • Watch out for enhancements to Core Storage, they will likely signal the (slow) the transition to Apple's next-gen filesystem.
  • Look for APIs that allow applications to automatically generate more metadata.
  • Wait for the last Macintosh with a spinning platter hard drive to be discontinued (currently, the iMac, the Mac mini and the very old non-Retina 13" MacBook Pro still come with old-school hard drives).
  • Have a look at how Share Sheets and Extensions evolve over time, they could be a crucial piece of the puzzle of how users manage files.

Given Apple's strategic moves in past years, it has been very adept at moving their platforms forward deliberately and patiently. It introduced a new compiler, size classes and multitasking, Extensions and its cross-platform Metal API, and these technologies became enablers of other technologies, sometimes in surprising ways. On the other hand, the optimism is tempered when looking at Apple's past track record in areas such as cloud services. It will be interesting to see what Apple's first move will be.

Acknowledgements

I would like to thank the team at MacNN for helpful suggestions and various corrections which helped improve this post.

Managing transitions and expectations

Recently, there have been increasingly loud voices criticizing Apple's software quality, and some concerns whether Apple has abandoned the »pro« market. Articles and blog posts centering around these themes seem to ebb and flow in regular intervals.

While I do think there are often good particular reasons to make any one argument, it is not very productive to look at them in isolation. For instance, is Apple abandoning development of Aperture a sign that Apple no longer believes in serving the »pro« market? Or is it just one incarnation of a larger issue inside the company?

Moments of transition

With the announcement of Windows 10, Microsoft has embarked on a journey from a desktop PC-centric approach to a world where for each person you have several devices. And interestingly, also another major piece of Microsoft software is going through a chrysalis with some awkward consequences. I'm speaking of Office: it was Office for the iPad which showed the way. Based on a common core with all other versions of Office, it showed off the new design language Microsoft intends to use. Also a lot of their other pieces of software are rewritten so that one universal app works across all devices.

That sounds familiar, doesn't it? Just like Microsoft Office is going through an awkward phase, also Apple's office suite is going through a similar transition: it cut features on the desktop version in favor of starting afresh with a codebase that is shared amongst the iOS and OS X apps. There are other victims of this period of transition, Apple's iPhoto and Aperture come to mind. Here, the motivation is not so much to use a shared codebase, but rather a tectonic shift in the philosophy. iPhoto and Aperture were born in the digital hub era where the personal computer, the Mac, is in the center of your digital life and contains »the truth«. With the introduction of iCloud, Steve Jobs pronounced the end of the digital hub and put the cloud in its place. Step-by-step Apple has been busy updating existing apps such as iTunes to take care of »the cloud«. Clearly, at a certain point in times it would have been iPhoto's and Aperture's turn. While I don't think it was wise to cancel Aperture before a similarly powerful replacement was ready, more on that below, at least on the grander scheme of things the direction makes sense.

From simple to complex

From a glass half-empty perspective, people on the desktop are sacrificing functionality in favor of a platform they may not even use. Apple's focus primarily lies on iOS rather than OS X, and this is clear evidence of that. An optimist would counter that this is a chance to re-evaluate old pieces of software with old code bases, and to make them more user friendly. Microsoft and Apple took the opportunity to start from scratch.

I find this trend quite interesting, because it reverses the direction in which features have usually flown: in the past, professional, complex apps were often the starting point for simpler, less powerful apps. Photoshop gave birth to Photoshop Elements. Apple derived Final Cut Express from Final Cut Pro. iPhoto eventually inherited the database format Aperture was based on.

Nowadays, more powerful desktop software is reimagined after having to design software for tablet and phone operating systems. Microsoft Office for Windows 10 is based off on Office for the iPad. The restrictions force software designers to reevaluate their decisions, and they often find that simpler interfaces are more appealing than being overwhelmed by choice. I see this as a huge opportunity to make desktop software more user-friendly, and the personal computer as a whole more humane.

Cross-device interoperability

The trend also goes to people having several computers. Even thermostats or lightbulbs are based on computers. So a lot of efforts are going into integrating them seamlessly between devices. Microsoft will allow you to stream XBox One games across all your Windows 10 devices, meaning you can continue to play on your Suface or PC in case someone else wants to watch TV. Apple's Continuity features enable users to »move« tasks across devices. The lines between the different computers are blurred. And most of these features are relying on the cloud. This is the major push behind all these moves.

Managing software transitions, managing expectations

Apple has a mixed track record when it comes to software transitions: they have excelled in some (e. g. migrating from classic MacOS to OS X and from PowerPC-based Macs to Intel-based Macs), more recently, their record was much more, ahem, mixed. The first botched transition was that of Final Cut Pro to Final Cut Pro X. While I am not a video editor, and I am not fully qualified to judge, it seems to me that a major flaw was Apple's management expectations. I am fairly certain that if Apple had renamed Final Cut Pro X into Final Cut Xpress and announced that future versions of Final Cut Pro will be based on it, the reaction would have been much more calm. Instead, a vocal part of the Final Cut community got their pitchforks out and flailed Apple. Also with Aperture, I think it was a big mistake to half-heartedly continue development of one of the most popular paid apps on the Mac app store, and discontinue it before a suitable replacement is ready.

Lack of light tower apps

What is really disconcerting to me is the scarcity of Apple light tower apps, meaning apps where Apple shows off what in their view a good Mac app should look like and fulfill a need. A long time ago, these light tower apps were the iApps on the consumer side as well as pro apps such as Keynote, Final Cut and Aperture. I don't think the significance of these apps can be understated for people who switched to the Mac before it became en vogue to do so. These apps were revved regularly, and often in lock-step with the OS. However, the UI of many of these apps got worse (the most glaring offender here is iTunes, but also iPhoto got interface elements which seem very un-Apple-y).

And it's not just the Mac which seems to be suffering, it is iOS, too. Right now, iOS hardware seems overpowered for the type of apps iPads and iPhones need to deal with. For comparison, an iPad Air 2 from 2014 is roughly as powerful as a 2011 11" MacBook Air. iOS also seems to have all the plumbing to make it very powerful. What is missing are Apple apps which take advantage of this. They've tried with iPhoto for the iPad, but it is safe to say that this experiment has failed. If Apple subscribes to the vision that iOS devices will supplant traditional PCs for most tasks, they need to give us apps which do things for which right now you still need a PC.

Software quality issues

While I don't subscribe to the hysteria that Apple is doomed, I think software quality across the board is an issue: it starts with bugs in the OSes but continues with rare updates to popular apps. Hardware-wise Macs are best-of-breed, and Apple has consistently anticipated trends correctly. So the obvious lack of finish on its software products is even more glaring. From the outside it looks as if Apple is constantly redlining its software team, so that major pieces of software (including consumer-grade software such as iPhoto) are no longer updated on a regular cycle. It's part of the failure of its software division to keep up with the growth of its hardware division. According to me, Apple's biggest challenge is not to enter new markets, redefine other categories or some such, it needs to bring its software to where its hardware is.