CI Changes with Catalyst
Project Catalyst, revealed last year with the Mojave build, offers developers a single, coherent means of porting code from one Mac platform to another. For example, an iOS app will now be able to be converted to operate on parallel Mac platforms, such as the iWatch or iPad.
Apple highlighted Catalyst’s new features and increased functionality at WWDC in the developer sessions. To illustrate ease of use, there were quite a few examples of raw code at the conference being presented on big screens, walking the developer community through the ease of converting from macOS to iOS or to the new watchOS or iPadOS platforms.
When mass adoption hits, there will need to be some changes to Mac-related CI workflows. For example, rapid testing – made possible by porting – across multiple platforms will be doable in real time, as opposed to requiring staggered testing of similar functionality across distinct platforms. Moreover, porting to different platforms gives devs a different set of display options, which can be automated – a classic function of continuous integration systems. Thus, the CI process is likely to start before a full code commit.
A developer will likely make a commit to their primary app, targeting, say macOS. Then a job will be kicked off to launch Catalyst functions on the other Mac platforms, make all the changes the design team has selected for the iWatch, iPad, or iPhone, commit back those three systems, and finally kick off the more traditional build/test CI functions.
At WWDC demos, Apple staff focused on the code snippets needed, highlighting how to change different interface options and the automated defaults. This area is actually at the forefront an issue of Catalyst user experiences – the Apple community has been less than impressed with the four major apps that have migrated from iOS to macOS.
The issues stem from design choices, or lack thereof, when porting code over. The iOS developers leave most of the choices alone, and the macOS apps feel like misplaced phone apps to users. Apple is still wrestling with best practices and adoption of this service in general as a result.
Further growing pains may include the need to increase a given team’s dev ops expertise in order to navigate these newfound challenges.