Wikimedia Hackathon 2026 recap

, .

Two weeks ago, I took part in the Wikimedia Hackathon 2026, which took place on 1–3 May (Friday–Sunday) in Milan, Italy. Like in previous years, I wanted to write a bit about the experience.

I came into this hackathon with one planned presentation / session (T423292): Cool new things in JavaScript + CSS. This is the continuation of two sessions I did at the 2023 hackathon, Cool new things in PHP and Cool new things in MediaWiki code. The goal of these sessions is twofold: to make people aware of these features at all, and also to let them know that these features are now available and can be used. I’ve spent far too much time trying to figure out if I’m allowed to use a feature based on the browser support matrix and resources like Can I use… or MDN (this is somewhat more tedious in JavaScript+CSS than in PHP, where we at least only have one engine with a single minimum version); gathering all the available features in one place (with a separate section at the end for features that we can’t use yet but can look forward to) should hopefully make this no longer necessary.

I also came to Milan with three ideas for projects: making language names in the CLDR extension translatable (T231755), a project I’ve been working on at hackathons since 2024; adding support for QUERY requests to the Action API (T410883); and, motivated by the “Cool new things in JS” presentation, an mw.html.format`...` tag function to write HTML as template literals with automatic escaping (T425136). This year, I didn’t really pick up any other projects while at the event, but just ping-ponged between these projects when I had free time. The CLDR project in particular mainly involved talking to other people to find out how this might be best implemented and how we could test the performance; many thanks for enduring my repeated questions go to Brooke (localisation cache), Effie (mw-experimental – unfortunately the conclusion was that this particular change can’t be tested there), and Reedy (deployment / evaluation plan). The other two projects made some more tangible progress, which I demonstrated at the showcase (ca. 21:00–22:15).

Aside from my particular projects, this was pretty much a standard hackathon for me. I met and talked to lots of nice people; I attended some interesting sessions (Fifty Shades of Caching and How LLMs Paint It Black was basically a shared wailing session about the horror that is the present-day web, How MediaWiki code gets deployed and things we are changing was exciting, “Overview of Parsoid architecture and high-level overview of the Parsoid codebase” [no task / link] was super interesting and informative – so many debugging facilities in Parsoid!); and I generally had a nice time. I think the social aspect during the normal program time fell a bit short (there was no Wikimedia Cuteness Association meetup nor anything like the juggling / rubik’s cube sessions of past years), but there were enough social opportunities in the evenings to make up for it.

(Side note: compared to the Northwestern Europe hackathon earlier this year, my impression was that this hackathon had less “vibe coding” / “AI” going on, both during the event and in what people presented at the showcase. But perhaps I just did a better job at evading it, I don’t know. There was a session about Being a developer in the age of AI taking over our profession: how do we deal with it as a community?, which was in such high demand that a second copy of it was scheduled for later in the day; I attended it but don’t think I managed to contribute (or take away) much, to be honest. If you want to know more about that session, read Hay’s summary.)

As for travel, I was fortunate enough to be able to travel to and from this hackathon by train once more; on Mastodon I kept it all in one thread this year (rather than several per-day threads), so you can read about my entire hackathon journey there. And I think that’s all for now – see you either in a few months in Paris, or next year in Albania 🙂