Quibble Local: Yet Another MediaWiki Local Development Environment
by Željko Filipin
Estimated reading time is 3-4 minutes.
MediaWiki Local Development Environments
At work, I have to set up MediaWiki on my machine frequently. Setting up MediaWiki Core is not a big problem. The problem is when you want to install an extension or a skin. Some extensions and some skins are easy to install and set up. Some are very complicated. Guess which ones I have to install most of the time.
Over the years, I have tried several MediaWiki local development environments. (I’ll use just the environment from now on.) The list below is roughly by the time I started using each tool.
In 2023 I created a task to explore various available options (T344682).
A few environments I didn’t even manage to try yet.
I’m sure I’m missing a few environments. I remember trying some environments that no longer exist.
What’s the point? Obviously, there’s a need for environments. No existing environment has all, or at least most, of the features developers are looking for.
Quibble
I was working on a project that required me to take a good look at Quibble. Quibble is an important part of our continuous integration. It’s the part that installs and configures MediaWiki Core with various combinations of extensions and skins.
As a first step of taking a good look at it, I updated a very old wiki page, Run tests targeting Quibble. I have created the page in 2019, and the last update to the page was in 2021.
I was playing with Quibble and updating the page. I was pretty happy with Quibble features. I was not at all happy with the commands I had to write.
For example, this command installs MediaWiki Core.
docker run -it --rm \
--entrypoint=quibble-with-supervisord \
-v "$(pwd)"/cache:/cache \
-v "$(pwd)"/log:/workspace/log \
-v "$(pwd)"/ref:/srv/git:ro \
-v "$(pwd)"/src:/workspace/src \
docker-registry.wikimedia.org/releng/quibble-bullseye-php83:latestThis one runs Selenium tests.
docker run -it --rm \
--entrypoint=quibble-with-supervisord \
-v "$(pwd)"/cache:/cache \
-v "$(pwd)"/log:/workspace/log \
-v "$(pwd)"/ref:/srv/git:ro \
-v "$(pwd)"/src:/workspace/src \
docker-registry.wikimedia.org/releng/quibble-bullseye-php83:latest \
--skip-zuul \
--skip-deps \
--run seleniumPretty quickly I had enough of copy/pasting long multi-line commands.
In MediaWiki-Quickstart, the same can be done with these commands.
./fresh_install
./run_selenium_testsThat’s way more to my taste.
Quibble Local
In the spirit of xkcd standards comic, the obvious solution was to create yet another environment. Of course. Introducing… Quibble Local. (URL might change in the near future.)
My initial plan was to create simple scripts that would execute very long Quibble commands. I didn’t need to think about how to name the scripts. I could just reuse names from MediaWiki-Quickstart.
So, in Quibble Local, if you want to install MediaWiki Core and run Selenium tests, you would use the same commands as MediaWiki-Quickstart.
./fresh_install
./run_selenium_testsThese were one of the first commands. Quibble Local has much more features these days.
Project readme file documents everything. You can also use the help command to get help for all commands, or about just one command.
./help
./help installI keep adding features and refactoring the code. Let me know if you find it useful, if you find any problems, or if you have any comments. See the footer for contact information.
Claude Code
I took this project as an opportunity to try Claude Code. I wanted the project to have minimal dependencies (Bash, Git, Docker). There was no chance I was going to write a project in Bash. For various reasons.
It is an interesting experience. I’m impressed that a tool can write code that does what I say. Most of the time. I’m not impressed with the quality of the code, or the architecture. Since this is just an experiment, I’m fine with the code as is. If this becomes anything more, I would rewrite it in a language I know better.
Feedback
Thank you for reading. If you want to stay in touch please use the feed or send me an email.
tags: code - wikimedia