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…
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:
- Command-line wrapper for interacting with core's docker-compose stack -
https://phabricator.wikimedia.org/T246111
- Tasks under this task to make the CLI more useful
- Set up distribution of MediaWiki-Docker CLI -
https://phabricator.wikimedia.org/T250241
- Accomplishing this means devs can use cli commands to interact with
mediawiki-docker without cloning the cli repo and building the project
- Set up CI for mediawiki-docker -
https://phabricator.wikimedia.org/T248779
- So we can avoid regressions
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….
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/1ZuQGkzXylvJnPSmP4epKjsS7TghXvK99AwX…,
https://docs.google.com/presentation/d/15a5yxOyPGlOADIQ6D4MmxM7ucvkec2ySpeR…
[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