Just to start off, I was going to write a blog post up earlier in the week but given the schedule for the different sessions I thought it would be best to also include information from those sessions as well so that it goes beyond just regurgitating and talk about the announcements in context with the nitty-gritty details that were talked about in the individual sessions. As noted in past tweets I have made, it is important to note that the keynote is more an event for the media, for marketing the razzle-dazzle and less technology inclined tech enthusiasts where as the ‘Platforms State of the Union’ where it is still a macro overview of Apple’s vision going forward but it gives a lot more specifics about the key areas that are of interest to developers and technology inclined enthusiasts (such as myself).
There are four themes that permeate through the keynote, platforms state of the union along with the individual sessions with the first being privacy and security where Apple is not only positioning its products but also its cloud services in contrast with the likes of Facebook and Google that make money harvesting huge amounts of data then using that data to target advisements. In the case of Apple there is no need to do that because effectively when you buy an Apple device you’re getting bundled in with the price a 3-5 year iCloud subscription (assuming a 3-5 year upgrade cycle) not to mention the halo effect it has when it comes to offering upgrades to storage sizes, Music subscriptions, individual application sales where Apple get a cut of the sale which all ultimately off set the cost of running said services.
Part of this focus has been taking some of the processes that take place on iOS, such as more fine grained permissions being applied when third party applications request access sensitive parts of the system, and bringing it to macOS. This makes me speculate that this change, along with changes to the sandboxing (sandboxing limitations that were introduced to the Mac store almost 6 years ago (it was announced 7 years ago but Apple had a transition period for developers)), is the reason why BBEdit, Transmission, Office 365 and others have come back to the Mac App Store (after having abandoned the store due to the sandboxing restrictions and lack of flexibility). The focus around privacy goes back to what Steve Jobs noted at the D8 Conference in June 2010:
For me I couldn’t quite understand the logic of Facebook – if you have your customers data, those are the Crown Jewels so why would you just let a third party have access to that data in such a flippant manner? If you have the data then it puts your organisation in a stronger position in the market so why would you want to give up that position of dominance to a potential competitor by allowing them to download millions of records? Putting aside the moral or ethical questions regarding the sharing of customer data, putting it down to a purely business and pragmatic reasoning, why would anyone allow it to happen?
The second was the focus on closing the gap between macOS and iOS in terms of functionality and frameworks where in the keynote towards the end there was a brief talk of UIKit coming to the macOS platform in 2019 but in a follow up session there was talking about how the underpinnings of iOS and macOS (below AppKit and UIKit) had diverged some what and part of this release was bringing them back into sync. The work being done to bring UIKit to macOS leads me to believe that we won’t see something akin to UWP/XAML like in the Windows world but instead the possibility of an AppKit replacement in the form of UIKit where there are some common features that are shared between iOS and macOS UI design with platform specific features only appearing in one or the other. The basic gist of what was happening will be that it’ll still require developers to make some change to their code but it won’t require maintaining two code bases when targeting both platforms.
The third was the focus on optimisation of the underlying operating system and various frameworks which included the announcement that macOS would become pure 64bit in 2019 along with the deprecation of OpenGL and OpenCL. Part of that optimisation includes educating developers on how best to use the various modern frameworks to their full potential as well as transitioning developers off old frameworks as they are deprecated. Long story short – it isn’t just about optimising your operating system but also ensuring that developers are also optimising their own code so that the improvements you have made in the operating system ultimately bubble up in the form of a better experience for end users running applications on said platform.
The forth was a focus on making life easier for developers which includes investing into developing new frameworks, such as Networking Framework, which sits as a middle ground between the super low level BSD sockets at one extreme vs. NSURL sitting at the opposite extreme which is too high level for developers to do what they want to accomplish (think of a BitTorrent client where the developer wants to implement the BitTorrent protocol but doesn’t want to have to deal with the minutia of details that one would have to do if one were using BSD sockets). The other part is providing tools to make debugging easier particularly around performance and efficiency where you can place markers in key parts of the code and track down specifically where there are jitters in animation for example – the example they gave was regarding a planetarium model where there was jittering in the animation and the ability to dive down to see that animation was sitting on the main processing thread thus causing the stall due to juggling the UI and processing.
In conclusion, although I didn’t watch every session I did jump to the main ones and the message this year was that Apple are listening and as a result are addressing the criticisms of Apple’s software. Although I see people unhappy about the deprecation of OpenGL and OpenCL, in the end OpenGL on macOS was always a mess, OpenCL was never adopted by developers in the numbers that Apple expected them to (Adobe was still basing their hardware acceleration on CUDA). When it comes to writing software using open standards based libraries – if open standards were so important to game developers then game developers would have told Microsoft to go piss up a rope when they introduced DirectX but in reality game developers embraced it without reservation (thus my hypothesis that those making the noise are ‘tech enthusiast know it alls’ that don’t actually do any programming and have little or no knowledge other than regurgitating talking points). The same situation will occur today, a lot of noise from the tech enthusiast crowd whilst developers will knuckle down and learn how to use Metal with something akin to MoltenVK will emerge but for DirectX which will enable easy migration between DirectX and Metal along with something like a comprehensive implementation of OpenGL beyond the basic OpenGL ES 2.0 implemented on MoltenGL. Keeping in mind, deprecation doesn’t mean they’re pulling it out now – it means that it is on the way out and at the most you’re probably looking at 2-3 years or maybe even 4 years before it is pulled out of the system entirely since Metal isn’t even an entire drop in replacement for OpenGL so take a deep breath and have a cup of earl grey.