MediaWiki 1.35+'s Stable Interface Policy is restrictive in what it considers a stable interface and, generally, requires that developers be explicit about what "stable" actually means. The good news is that our codebases are mostly unstable by default. However, being explicit about what is unstable can also help. For example (but not to single anyone out), it would inform conversations like https://gerrit.wikimedia.org/r/c/mediawiki/skins/Vector/+/580591/3/includes/VectorTemplate.php#58
I propose that we:
- Mark all classes as unstable, i.e. @unstable
- Mark all classes as @internal
- @final annotation has no standard meaning in our code base. To enforce non-extendability use final in the code itself.
- @unstable means the class is experimental but planned to become stable. If that's not the case, use @internal instead.
- No classes extend SkinVector: https://codesearch.wmflabs.org/search/?q=extends%20SkinVector
- No classes extend VectorTemplate: https://codesearch.wmflabs.org/search/?q=extends%20VectorTemplate