Hello fellow contributors, developers, and colleagues,
This is a semiannual refresher on Wikimedia development policies. Whether
you joined last week, or have been here for a decade, I hope this helps you
navigate our current practices. (See changelog below.) Feel free to use
this thread to ask or answer questions about any of these!
TL;DR:
* The Code of Conduct applies to how all of us behave.
https://mediawiki.org/wiki/Code_of_Conduct
* If you can merge code changes, please familiarize yourself with the
Privilege policy.
https://mediawiki.org/wiki/Gerrit/Privilege_policy
* The Support policy for PHP describes what we support and for how long. It
allows site operators and developers to plan ahead (incl WMF).
https://mediawiki.org/wiki/Support_policy_for_PHP
* The Stable interface is about code that should stay compatible, and is
safe to use in an extension.
https://mediawiki.org/wiki/Stable_interface_policy
* Ask for help! Either here onlist, or on IRC chat.
https://mediawiki.org/wiki/MediaWiki_on_IRC
### Gerrit privilege policy
As maintainer you take final responsibility over code before it ships to
the servers and the personal devices of a billion people. No pressure! :-)
https://mediawiki.org/wiki/Gerrit/Privilege_policy
### MediaWiki stability and PHP support
Before you use internal code or extend core in an undocumented way, it’s
best to start a conversation on Phabricator first. Explain your use case
and decide together how to proceed. Also involve the maintainers or code
stewards of the component in question.
https://mediawiki.org/wiki/Developers/Maintainers
### Data access and privacy
Wikimedia takes pride in its commitment to protecting user privacy. If you
build feature instrumentation or store personal data, think about how the
data will be removed or aggregated.
https://meta.wikimedia.org/wiki/Data_retention_guidelines
If you have shell access, see also the Server Access and Data Access
responsibilities.
https://phabricator.wikimedia.org/L3
https://wikitech.wikimedia.org/wiki/Data_access#Responsibilities
### Best practices and ask for help
You can find pages about coding style, security, performance, localisation,
and more; on
https://mediawiki.org/wiki/Development_guidelines
Use these pages to your advantage, and feel free to ask questions here on
Wikitech-l, or chat in #mediawiki on Freenode IRC.
https://mediawiki.org/wiki/MediaWiki_on_IRC
### Changes since 2019
For those of you who know most of this already, here’s what’s changed:
* February 2019: The "+2 policy" was updated and is now the Gerrit
privilege policy. –
https://mediawiki.org/wiki/Gerrit/Privilege_policy,
https://phabricator.wikimedia.org/T216295
* March 2019: Established principles around the creation of new services.
The idea for this started at Wikimedia Technical Conference in Portland
(2018). –
https://mediawiki.org/wiki/Wikimedia_services_guideline,
https://phabricator.wikimedia.org/T208524
* September 2019: There is a new general policy for PHP support changes. We
no longer need dedicated RFCs, such when MediaWiki required PHP 5.5+ in
2016, or PHP 7 in 2017. The policy was first used to require PHP 7.2+ for
MediaWiki 1.34. –
https://mediawiki.org/wiki/Support_policy_for_PHP,
https://phabricator.wikimedia.org/T228342
* March 2020: The “Deprecation policy” was updated and is now the Stable
interface policy. –
https://mediawiki.org/wiki/Stable_interface_policy,
https://phabricator.wikimedia.org/T193613
* April 2020: We added some structure, boilerplate, and documented common
stakeholder questions. These changes enable RFC authors to go through the
process quicker, and to steer more of it on their own. –
https://mediawiki.org/wiki/Requests_for_comment,
https://phabricator.wikimedia.org/T216308
--
Timo Tijhof
Principal Engineer
Wikimedia Foundation