Hello Everyone,

TL;DR:
New mailing list for local dev discussion -> https://lists.wikimedia.org/mailman/listinfo/local-dev
New wiki page for updates -> https://www.mediawiki.org/wiki/Wikimedia_Release_Engineering_Team/Local_Dev_Updates

This year’s developer satisfaction survey[0] revealed that many people felt there wasn’t enough communication around local dev improvement efforts. In fact, some people didn’t even know that there were any. The following is a brief history of those efforts and an update on what we have in progress, as well as some ways for us to communicate and keep informed about the local development space.

A little under 2 years ago, I took on the task of developing a container-based development environment for mediawiki and services, partially since our production deployments are moving in that direction. As someone who had never done development on Mediawiki and its surrounding extensions and services, and whose job was not to do that development, this was (and is) a challenge. Here’s a quick outline of what I, with other contributors, did since then:
  1. Coded and analyzed the 2019 developer satisfaction survey[1] and did one on one interviews with developers to understand the problems faced by developers.
    • This research provided insights into areas in and out of the scope of local development that probably deserve more attention
  2. Created a prototype in minikube[2]
    • Brennen Bearnes created the dev-images repo to support this work
    • Demonstrated at the Prague Hackathon in 2019
    • Did not generate much interest
    • Confirmed suspicions that kubernetes is not an ideal tool for developing
  3. Led local-dev work group meetings
  4. Presented findings and ideas at Tech Conf in 2019[3] with Brennen
    • Together with session attendees, decided to create mediawiki-docker[4], a lightweight dev solution for pure mediawiki developers.
    • Had another session to attempt to figure out what kinds of services, etc, could be grouped together for more complex development environments, but didn’t explain this in a way that session attendees understood, and they probably left frustrated
  5. Continued work on mediawiki-docker, and a cli[5] to simplify repetitive docker commands
    • Kosta Harlan, along with Brennen, Mukunda Modell, and James Forrester headed this up
    • Zeljko Fillipin (and a bunch of other people!) worked on documentation of setting up a number of extensions to use with mediawiki-docker, which indicates some adoption of mediawiki-docker
You can collaborate with us or track our progress by visiting our phabricator work board[6]. Tasks welcome :)

As a preview, some open tasks are:
We’re still exploring the best way to manage docker-compose files for different extensions and services for a more complex development environment.

To address the concerns about lack of communication in a more consistent manner, I’d like to introduce a long-overdue way for us to have discussion on local dev topics through a new local-dev mailing list: https://lists.wikimedia.org/mailman/listinfo/local-dev. I’ve also created this wiki page for updates about local-dev: https://www.mediawiki.org/wiki/Wikimedia_Release_Engineering_Team/Local_Dev_Updates. Since I’ve recently created this page, there is not much to see there at the moment.

If you've made it this far, thanks for reading! I hope these changes will help improve communication and collaboration with everyone who wants to participate.

[0] https://www.mediawiki.org/wiki/Developer_Satisfaction_Survey/2020
[1] https://www.mediawiki.org/wiki/Developer_Satisfaction_Survey/2019
[2] https://gerrit.wikimedia.org/g/releng/local-charts
[3] https://docs.google.com/presentation/d/1ZuQGkzXylvJnPSmP4epKjsS7TghXvK99AwXTHdNng4c/edit?usp=sharing, https://docs.google.com/presentation/d/15a5yxOyPGlOADIQ6D4MmxM7ucvkec2ySpeRv-6p85o4/edit?usp=sharing
[4] https://www.mediawiki.org/wiki/MediaWiki-Docker
[5] https://gerrit.wikimedia.org/g/mediawiki/tools/cli
[6] https://phabricator.wikimedia.org/tag/mediawiki-docker/

--
Jeena Huneidi
Software Engineer, Release Engineering
Wikimedia Foundation