as someone who studied through reverse-engineering the Microsoft NT Domains Protocol from 1996-2000 it was with some frustration that i observed the practice of free software developers and packages lacking the coordination and committment to API compatibility that was clearly bludgeoned into both Apple and Microsoft developers from "top-down" decision-making (Steve, Bill).
DCE/RPC became MSRPC, on top of which COM and then DCOM was developed, and even now a 25-year-old Active-X component from a company that has long since gone bust can be used on a modern Windows [NT] system because DCOM contains self-describing "introspection", and it was ingrained into developers that you absolutely did not abandon an older API, you simply added new ones, using COM co-classes.
google has learned from this: their older APIs always work, and this because they themselves will have learned from the hard experience that you cannot possibly simultaneously upgrade a client-server distributed system across hundreds of thousands to millions of machines, you *have* to upgrade them slowly, and that means you *have* to support older APIs simultaneously with newer APIs.
if you support all versions of APIs, any one client connecting to any one server can automatically "down-negotiate" to the lowest common denominator API version.
Apple learned the same trick from Steve's time at NeXT and actually embedded upgradeable APIs and runtime introspection right into the bedrock of the actual programming languages from which their entire software stack is created: Objective-C, Objective-M, Objective-J.
Free Software on the other hand because it is independent individuals who cannot be controlled by anyone and who do not coordinate (why should they? they have *their* interest, right? they are satisfying what interests *them*, right?) have created software that has no such strategic bedrock, and even if one particular "group" happens to have something similar to DCOM or the Objective suite of compilers, they are competing for attention and mindshare with everyone else.
KDE has an RPC mechanism where they are proud that it was invented and implemented in about 20 minutes flat at a KDE hackathon.
GNOME uses gobject, which took over 15 years to add similar "introspection" present in DCOM for 20 years prior to gobject's creation.
neither KDE's RPC mechanism nor GNOME gobject are compatible with each other.
boost - and especially the python bindings - are the absolute nightmare epitomy of an API gone catastrophically wrong: no one version of boost, thanks to it being in c++ and thanks to the developers changing the low-level header files in every single release, is ever compatible with any other version. compiling it is a total nightmare, and it is common for any one developer to have four different copies of the 100+ libraries behind boost, each with a different revision number.
then there is Mozilla "XPCOM" which caused such maintenance nightmare headaches for 3rd party java and c++ developers using XulRunner. that was a particularly special type of stupid by the Mozilla Foundation. XPCOM was "inspired" by COM. the APIs are even identical, which is absolutely fantastic and tantalisingly brilliant... until you realise that they failed to go the last mile and implement COM's co-classes.
COM's co-classes are the bedrock that allows you to do "upgrades" to APIs. you never *replace* an API in COM, you leave it in place, you add a new one, and you *add a co-class that merges the two*. this has a fascinating side-effect of allowing you to add "default arguments" to your API, because you can have a 3-argument and a 5-argument version of a function with the same name.
this recent study, if it does not focus or draw attention to the above, has fundamentally missed something very important.