September 24th, 2008

  • evan

system programming interface

Today someone used the term "SPI" ("system programming interface") and I didn't know it, so here's what I've gathered and maybe some commenter will correct my misunderstanding.

It's apparently an Apple term for "private API". This slashdot comment explains pros and cons in more detail, but the general gist is: Apple provides API, which is documented for app use and intended to remain stable, and then there is SPI, which is whichever extra functions were needed to make their apps work. Since Apple can release the OS and apps at the same time they can change the SPI on a whim.

From the inside-Apple developer perspective, this makes total sense: when you need some extra hooks and the developers are just down the hall, why not? And it's good to let the public know that these extra calls aren't guaranteed to remain stable. But from a 3rd-party application developer's perspective, this is also totally insane: there are all of these calls that are only available to blessed company software!

Given the two sides, I haven't yet decided how I actually feel about it. Certainly Microsoft gets widely blamed (and even punished) for doing this sort of thing, but Apple tends to get a free pass wrt being hostile to developers for reasons I don't yet understand. And ultimately it seems a natural consequence of the platform owner also being a competitor in the platform's software market -- they'll always have an advantage, and that's just the price you pay to play on their platform.