

Negotiated versioning - mjdesa
https://gist.github.com/laughinghan/009e300626f328792815

======
0x0
iOS kinda does this. Apps built with a different SDK/toolchain will see
different behavior from system libraries (UIKit etc). This was very noticeable
in the ios6->ios7 transition. Existing binaries got the old keyboard, old ui
metrics, old table view layout and behavior. Simply by recompiling with the
new toolchain, the app is opted in to the new ui and behavior. (Incidentally,
this meant a lot of work to patch up old code after upgrading the toolchain,
quite a pain if you just wanted to release a small update to your existing
app: Either you have to build with an older toolchain (not so easy or even
supported), or you have to test and tweak your whole app all over again. This
could probably be less of an issue if apple would support installing old sdks
in new xcode version. But everyone just runs with "SDK: Latest" in their
project build settings file)

~~~
saurik
Essentially it worked like Internet Explorer's DOCTYPE sniffing, my binaries
always felt like they were running in some kind of "quirks mode", and I agree:
it can be extremely infuriating... different parts of their mechanism
seriously even check for different notions of "newness"! :(

