If we're going to have LTS versions, could we please tweak the definition and backporting policy for them.
Right now we ONLY backport security changes to old releases. All features and backend api changes are restricted to the latest version.
Periodically we make api changes like getLang() -> getLanguage(), $wgUser -> $this->getUser(), $sk->link() -> Linker::link(), and so on. While most of these are small we have some api changes were it's absolutely critical for uses of the old method to start using the new method for us to be able to move on. However when it comes to extensions often a lot of the major extensions will not start using the new apis for quite a long time. It almost takes the whole time until we completely obsolete a version of MW before we can convince some extensions to start using new non-deprecated code. And if we start supporting old versions of MediaWiki for years I can see trying to get extensions to use the latest apis in their latest versions becoming hell.
The general idea of a LTS version is two points, right?
- Keep out new features and changes that need to be adjusted to.
- Keep out major changes to the underlying api so that everything you build doesn't suddenly need to be updated.
Basically instead of only security fixes I'd like to also backport backwards-compatible api changes to old versions. Things like having both non-deprecated getLang and getLanguage when we deprecate getLang and move to getLanguage.
Doing this will keep things built against LTS versions working. Keep new front-end features out of LTS. And allow extensions to use the most up-to-date MW apis while still working in LTS versions.