Comment by kmeisthax
11 hours ago
The components are modular under the hood, they have to be. Apple just doesn't let you take advantage of it.
iOS has a daemon that reads your notifications and ships them to Apple Watch. They have a daemon that scans for AirPods and gives you UI to pair them. But you as an app developer cannot do any of those things. There was no public API for notification stream access, scanning for specific Bluetooth devices, floating UI widgets, or even just persistent daemons. All of those capabilities more or less exist on Android, which is why multiple smartwatch ecosystems have been built on top of it while iOS only supports the first-party option.
Back in the 2000s, when Apple was just getting into mobile devices, the app development landscape was far less bleak. iTunes on Windows could happily index your entire music and video collection and sync it to an iPod and there was nothing Microsoft could do to stop them. Everything is just finding the appropriate file and connecting to the appropriate USB device to transfer it. And that's more or less how things still work today, except now on smartphones all of that is put into isolated containers and walled off behind private APIs.
modular does not mean in terms of how the library is architected, but in terms of how many vendors/customers it needs to support. Airpods' hardware is built and then kernels are written in a way to compliment each other and get the most out of the system. With another set of headphones with a different chip, there is a very good chance that code written today would not be optimal because other builders could manufacture different things based on the same spec. You cannot bring everything to software, nor can you have hardware doing everything. Tradeoffs would be needed.
The issue comes in second order effects. If third party headphones are given access and then the experience is not as good, they complain that Apple hasnt open up the spec enough, and it just results in Apple being forced to be modular in their approach.