A perpetual defence in software engineering is that kludges and missing features are because it’s “work in progress”. In so many cases, the truth of this hinges on that last word, progress, which means that work is being carried out to address those shortcomings. I’m here going to consider one of Apple’s most recent and successful major software introductions, its new file system APFS, and its support.
In a typically bold move, Apple introduced APFS to all iOS devices which were upgraded to iOS 10.3 at the end of March in 2017, and to macOS in High Sierra which followed six months later. Although overtly successful rollouts, there were significant shortcomings in the handling of Unicode normalisation in names, and at the last minute Apple had to remove support for hard disks and its own Fusion Drives.
Tracking build numbers of APFS revealed that it remained very much a work in progress until its release nearly a year ago in Mojave, when it finally did achieve all its major objectives. It now copes well with a full range of Unicode names, hard disks and Fusion Drives, although many users remain unconvinced that it’s the file system of choice on those media.
Support tools for working with APFS have been considerably less impressive, though, and access through developer interfaces or documentation essentially non-existent. The main GUI user tool Disk Utility was, for much of High Sierra, so dysfunctional that any serious operations with APFS had to be performed using its command tools, which in parts were no better. No substantial documentation was released until the Apple File System Reference was published with the release of macOS 10.14, eighteen months after the first release of APFS itself.
There are even now major functional gaps in the support of APFS in macOS. This week I highlighted the fact that, whilst the handling of APFS volumes is well catered for, there is significantly more limited support for APFS containers, which are partitions of the GUID disk. These really go back to another tool,
gpt, which is so incomplete as to fess up in its own man page, where it describes itself as “still work in progress” with many necessary features missing. Those words were last revised in 2012, five years before APFS came onto the scene.
As with so much about APFS, Apple’s own documentation conceals more than it discloses, as if it was written under the supervision of lawyers not engineers. Containers are covered in pages 24-40, but nothing is given away which might enable anyone to understand how to code up for Apple’s shortcomings. Apple’s own documentation of the GUID partition table was last updated in 2006, and refers the reader to the UEFI specification, which proves yet another wild goose chase.
Since the first sketchy documentation Apple provided for APFS, it has hinted that one day it might add its source code to the library of released code. This is a cheap if not cost-free solution, far from ideal but it does at least give third-party developers the opportunity to attempt their own solutions. Apple’s open source releases currently lag those of macOS by around ten months, and those for the latest (10.14.1) contain no tools which work specifically with APFS, which remains wholly proprietary as a result.
Apple’s singular failure to release fully-functional tools to support APFS, detailed documentation, or source code can only be deliberate almost two and a half years after the file system’s first public release. The defence of this still being “work in progress” has now timed out, and we must face up to the fact that APFS isn’t fully supported, and Apple shows no sign of rectifying that.
This all comes to a head next month, when we expect the release of Catalina, which with its new read-only system volume can only be booted from an APFS container. With that release, Apple is expected to discontinue all support for Sierra, leaving users with the choice of High Sierra and its flawed first release of APFS, Mojave which is only supported when booted from APFS, and Catalina. If you aren’t prepared to use its new and still incompletely supported file system, you’re being pushed away from using macOS at all.
What could change all this, of course, would be Apple showing signs of progress in completing the tools required to support APFS in the first release of Catalina. In just over a month, we’ll know the truth behind its claims of those tools being “work in progress”, although I think I can already guess the answer.