I’m working on completing the port I started of Apple’s SMB file sharing client to RISC OS, for purposes of collecting a monetary bounty for adding SMB2 and 3 support, and also it’s been very good for honing my software engineering skills.
Because Apple stopped supplying the source code to their SMB client after OS X Yosemite 10.10.5, I have a window into their code quality circa 2014 (the year OS X 10.10 was released). It’s unfortunate, but there’s a general consensus that Apple’s code has become increasingly buggy over the past 10 years, as Apple focuses on adding new features and releasing a new version of the OS every year.
Yesterday I started working on porting the encryption and packet signing code, which is fortunately contained in a single C source file, but which depends on Apple’s “CoreCrypto” libraries. I’d been under the assumption that Apple had open-sourced all of their crypto libraries, but this isn’t true. They open-sourced a subset which they call “CommonCrypto” under Apple Public Source License Version 2.0, but some of the functions called by the SMB client are only available in the “CoreCrypto” libraries, which you can find mirrors of on GitHub (but not directly from Apple, at least not any more), and which is licensed only for internal evaluation for a period of up to 90 days. So I can’t use it in my project!
I found an article from 2015, Apple Open-sources Three Cryptographic Libraries, which confirms that “corecrypto” source was only released for the purposes of interested researchers to evaluate the security of the code, and not for others to be able to use it in their own products. For my purposes, it’s straightforward to substitute code from LibreSSL, which does have a suitable license.
I have an Intel iMac from 2017 that I’m still using, but I’m typing this on my Ubuntu Linux workstation, where I do my development. I mostly use my Mac to listen to Apple Music, which I can also do in Linux from my web browser, although without volume equalization, “hi-res lossless”, or Dolby Atmos. While Apple’s new ARM CPUs get high marks for performance, it’s unfortunate that everything’s tied to an OS where adding new features has seemingly been a higher priority than improving code quality for at least the past 10 years, based on my own experiences with bugs in Apple apps as well as all of the complaints you can find on Mac user forums.
I’m certain that this experience of declining code quality is one of the forces motivating people like myself to get into retrocomputing and working with decades-old platforms like RISC OS that are easier for a single experienced developer to comprehend, and which hopefully have a lower density of defects.
Leave a Reply