On Fri, 28 Aug 2020 at 11:19, Daniel Kinzler <dkinzler@wikimedia.org> wrote:
Hi all!

Since the new Stable Interface Policy[1] has come into effect, there has been
some confusion about when and how the deprecation process can be accelerated or
bypassed.

The SIP is very well written, great work! Recently I've found out it could include some guidance on how to deprecate the overriding of methods. This is a corner case of method deprecation, that has to be done quite differently. The lack of instructions for this case led to confusion and the unintended removal of a step in stylesheet loading, breaking about 30 non-core skins. 
Sidenote: The skins are still broken and this has to be fixed before 1.36-beta (see T266735).

I'd like to fill this gap so I've prepared a discussion of how to formalize this in T267085. The information necessary to be included in the SIP is compiled in the "Documentation" section. I assume the writers of the SIP will have a clear vision how to include it and I'd like to ask you to share it on the ticket.

The technical solution (T267080) uses a helper trait per Danny's suggestion. Feedback and reviews are welcome.


    Code MUST emit hard deprecation notices for at least one major
    MediaWiki version before being removed. It is RECOMMENDED to emit
    hard deprecation notices for at least two major MediaWiki
    versions.

The "Deprecation" section of the SIP is very well polished IMO, the steps reflect what common sense and best practices dictate. The steps sound obvious to me therefore I don't understand how did we end up breaking this many skins without a warning, release note, email to wikitech or any clue of why those skins turned into a webpage from 1995.

Even more concerning is that after I reported the issue nothing happened for 3 months. At that time I submitted a patch which was claimed to be "unnecessary". Having a background in startups and generally very result-oriented projects, I feel like this dynamic is very unfamiliar to me and I find it hard to understand.


It seems to me this won't be the last such case. How should we prevent issues that break the SIP and how to handle and report issues if those happen despite our best efforts? 
One idea: there should be a project tag in phabricator for "Stable Interface".
I'm interested in your ideas.


— Demian.
I solve problems.