On Fri, 28 Aug 2020 at 11:19, Daniel Kinzler <dkinzler(a)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 <https://phabricator.wikimedia.org/T266735>).
I'd like to fill this gap so I've prepared a discussion of how to formalize
this in T267085 <https://phabricator.wikimedia.org/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 <https://phabricator.wikimedia.org/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
<https://www.mediawiki.org/wiki/Stable_interface_policy#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.