According to Wikipedia’s entry for CI the term was first coined in 1991, three whole years before I was even born, but only in the last couple of years have iOS developers across the board really started to adapt these processes.
The increased popularity amongst iOS developers has created a previously unimagined market and gave big CI/CD companies like CircleCI or TravisCI incentives to add support for automated builds in macOS environments. The demand has driven third party developer tooling innovation heavily and created whole specialized infrastructure companies like MacStadium.
Apple on the other hand though hasn’t kept up with the growing demand. Both software but more importantly hardware support for the increased computing need has been weak in recent years.
The last real server-hardware from Apple has been the Xserve which was terminated in 2009. No new powerful in every way (CPU, GPU, networking & storage), meant to be run in a datacenter for computing intensive tasks hardware has been released since. Employees internally at Apple but also third party developers and other customers with high intensity computing needs on macOS are stuck with only bearable hardware in less than ideal configurations.
Neither third party companies like MacStadium nor Apple’s own infrastructure teams are able to offer a good solution with enough computing power especially to developers. The Intel Xeon E5 v2 processors in the currently sold “trashcan” Mac Pro were first released in 2013 and really don’t stand a chance against newer Skylake-E or Kabylake-E Xeon processors. Increased efficiency, faster processing speeds and higher CPU core counts lead to current entry level Xeon processors outrunning top end models from 2013.
I’m not certain how Apple builds it’s operating systems, but I can imagine that these build jobs take quite a while to finish, unless they use their own specialized hardware for it.
The need for a proper solution is long overdue by Apple to satisfy the ever growing processing need like the recent CI/CD trends across the world. This isn’t about having something to please the “Enterprise Market” anymore, but rather about becoming aware of a problem that slowly grew over the years. Many market segments, especially so called “Pro users”, prefer to use macOS because it’s simply the more capable and efficient OS for their tasks, even on old hardware. Companies like Imgix built custom sleds, similar to the ones MacStadium developed, in order to incorporate Mac Pros into their datacenter since they do all the actual image processing on macOS. They go through all of this hassle in order to fully leverage the strengths of macOS while offloading other tasks onto Linux based servers.
Apple doesn’t have to release something that has to compare to Dell or Supermicro hardware, a Linux powered cloud but rather it has to solve the issues it’s customers face since those issues can only be solved by it’s Mac hardware monopoly. Apple has to provide as much processing power to macOS as possible, in the form of supported hardware.
Since I pretend to already know what I’m talking about let me prove it to you and talk some specs:
In order to really solve these issues Apple needs to release something that massively increases computing density in the server racks. The Xserve did that very well and also looked brilliant doing it.
Just look at it. They’re gorgeous!
What is needed hardware wise is a sort of reborn Xserve. In a perfect world that would be a 1U or 2U 19” rack mountable server that comes as a baseline equipped with:
This configuration may sound awfully similar to what Apple has recently released in the form of the iMac Pro, but the issue with the iMac Pro is that it comes sealed, non-user upgradable in a non-standard formfactor. All these traits make it undesirable for datacenter use.
Placing similar, or even the same, components in a maintenance and upgrade friendly standardized “box” would make it very desirable to run in a datacenter. Datacenter staff would be able to service components in the event of a hardware failure or in case hardware upgrades are available in the future.
Add-on options on a rack mountable reborn Xserve could be dual Intel Xeon E5, dual GPUs and more onboard storage. Dual 10GB NICs on the back are probably sufficient for most customers but extra space in the chassis for PCIe 3.0 x8 or x16 extension cards would allow for internal fiber channel cards for SAN connections or if desired even more Ethernet ports. This allows for a certain degree of flexibility and would make it more interesting to more customers and their varying workloads.
But cramming lots of computing power into a standardized format and calling it a day isn’t enough on Apples part in my opinion. Software development on Apple’s and related platforms have matured greatly in the last couple of years but Apple doesn’t seem to be intersted in it or are unable to keep up.
More and more things are meant to be written into configuration files of some sort similarly to Dockerfiles or YAML files filled with instructions for CI/CD systems. The driving factor for this change is that these configuration files can then be monitored through a VCS like Git while also guaranteeing infrastructure flexibility and reproducibility.
Dev vs. staging vs. production. Sounds familiar?
iTunes Connect still has no REST API or other interface to automate tedious work away (Fastlane does some but abuses a lot of private APIs along the way. Also: owned by Google).
Xcode’s developer tooling is lacking behind third party vendors tooling like JetBrains’ AppCode. I mean c’mon… Apple own platform developers preferring to work in a Java based environment to write Swift or even Objective-C makes me really really sad and reading things like this sure doesn’t make it better.
“Nobody inside Apple uses Xcode the way people outside do”— [renaud lienhart]; (@layoutSubviews) 15. März 2018
Yuuup. After leaving Apple, I instantly started missing all the tooling/resources that Apple uses internally. The company doesn’t realise how terrible the outside ecosystem is.https://t.co/VjhkOe0VDU
macOS either wont let you automate things like OS setup (anymore) that would allow developers to create repeatable ready to go installations of macOS (poor mans Docker if you will) from shell scripts or command line tools end up triggering modal alerts in the UI for no apparent reason.
All these things are just the tip of the iceberg that make developing for Apple’s platforms a royal pain in the ass every day, but people still do it for one very simple reason: One is able to make a living doing it. Plain and simple.
I’m personally not asking for something like adding cgroups to the XNU kernel in order to really support Docker natively on macOS but I think that Apple could make a huge dent in the lives of it’s developers (big and small) with a little bit of course correction and dedication to shipping quality products to it’s most loyal and influential customers again.
Apple lives and dies by it’s community of strongly opinionated know-it-all (I include myself here) pro customers who do care a lot about the things we use and who do care about Apple and it’s decisions.
As always with Apple it’s hard to predict what’s going on on the inside. WWDC may bring a massive course correction that no one anticipated but for now they appear to be out of touch with it’s developers and what softare development looks like around the world.
I certainly believe that they will do the right thing in the end, it might just take a while to see the light of day. In the meantime we can make a little fun of them hoping that they’re a good sport about it.