Why wouldn't the version of Mediawiki (e.g 1.20.1)  work as the
"version" of the API? It is true that non-core modules would have to
synchronize their releases with versions of Mediawiki, but that seems
like a small cost. For most people, the time they will see API
breaking changes is when they upgrade to a new version of Mediawiki.


I agree about year-month notation, but because extensions developers do not know when their code will be added to production, think of this scenario (very likely IMHO):

A server starts with the Mediawiki ver 201102 and an extension ver 201206
Later MW 201309 is released, with the new API behavior.
Independently an extension 201309 is also released to support new features.

On the server, admins update the core MW right away, but decide to delay extension deployment because they might want to do additional testing, or for any other reason. So now you have MW 201309 and the extension 201206. Which could be totally ok - MW frequently runs older extensions.

After MW update, but before extension is put in production (which could be a long time), API client is created against the API version 201309. The developers testing the system assume, incorrectly, that the extension results will stay the same - they might not know that the new extension is pending. But later, at a whim of an admin, the extension is finally added to production, at which point the client fails - what was suppose to be a firm contract - "you ask for ver A you get ver A despite upgrades" has been broken.

From the looks of it, since API is based on plugins like this, we can't really keep extensions in sync - simply because developers do NOT know when it will be placed into production.