Wikimedia Hackathon 2023/Documentation

Photos, videos & slides

 * Wikimedia Hackathon Athens 2023 category on Wikimedia Commons
 * Replay: opening session and closing session
 * Slides on Wikimedia Commons

Blog posts

 * https://wmhack2023.github.io/
 * https://sswiergosz.github.io/blog/wikimedia-hackathon/
 * https://ral-arturo.org/2023/05/31/hackathon.html
 * https://blog.legoktm.com/2023/05/31/2023-wikimedia-hackathon-recap.html
 * https://taavi.wtf/posts/wikimedia-hackathon-athens-2023/

Projects

 * Phabricator board of the hackathon

If you project does not appear below yet, feel free to add a new section!

RealMe

 * Phabricator task: T324535 T322717
 * Brief (2-3 lines): It is now possible to mark links to Wikimedia user pages as verified on your Mastodon profile (or other software using rel=me links)
 * Relevant links: https://wikis.world/@taavi https://www.mediawiki.org/wiki/Help:Extension:RealMe
 * Contact(s): Taavi and Kunal
 * Status (e.g., early concept, ready for beta deployment, production, etc.): production
 * Okay with being recorded: Yes

Toolhunt (Now With Searching!)

 * Phabricator task: https://phabricator.wikimedia.org/T332910
 * Brief (2-3 lines): Toolhunt now has a search bar. Users will no longer be at the mercy of random chance.
 * Relevant links: https://docs.google.com/presentation/d/1lWbdYE3AKWG3So3Jrk7H73QylkLkRx4cWjDoPeATg6Q/edit?usp=sharing
 * Contact(s): @NicoleLBee
 * Status (e.g., early concept, ready for beta deployment, production, etc.): ready for deployment
 * Okay with being recorded: Yes

Accordion component for Codex DS

 * Phabricator task: https://phabricator.wikimedia.org/T326665
 * Brief (2-3 lines): The Accordion component for the Codex Design System offers a flexible way to organize and present content, supporting multiple sections with customizable headers and content.
 * Relevant links: https://drive.google.com/file/d/1SWupASwHkARi25apJtwi_KD2D5ZjUXA5/view?usp=share_link (recording)
 * Contact(s): Szymon Świergosz (@Sswiergosz)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): MVP
 * Okay with being recorded: Yes

Improving Depictor

 * Phabricator task: https://phabricator.wikimedia.org/T337173
 * Brief (2-3 lines): Depictor now preloads images to speed up the depicting process and locks the user interface when making an edit. Also a little preview of things to come.
 * Relevant links: https://hay.toolforge.org/depictor/
 * Demo: https://www.youtube.com/watch?v=XptuXknDt2Y
 * Contact(s): Hay Kranen (Husky)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): production
 * Okay with being recorded: Yes

Modernizing MultimediaViewer codebase

 * Phabricator task: https://phabricator.wikimedia.org/T337030 and https://phabricator.wikimedia.org/T337102
 * Brief (2-3 lines):
 * Use packageFiles and require to import JS.
 * Use ES6 features such as classes, arrow functions, const/let, string templates.
 * Relevant links:
 * https://phabricator.wikimedia.org/F37026769 and https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MultimediaViewer/+/921502/12/resources/mmv/ui/mmv.ui.progressBar.js
 * Contact(s): simon04 and Jon
 * Status (e.g., early concept, ready for beta deployment, production, etc.): patches merged/pending
 * Okay with being recorded: Yes

MCR integration for TemplateData

 * Phabricator task: T56140
 * Brief (2-3 lines): Proof-of-concept of using a dedicated JSON content slot for storing TD
 * Relevant links: https://docs.google.com/presentation/d/1xdTyoxDoEcY5pJpSrUqu59ZgszJAH8GY3hiGkx0XsmU/edit?usp=sharing (recordings)
 * Contact(s): Máté Szabó (@mszabo)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): proof-of-concept
 * Okay with being recorded: Yes

Code for adding OpenStreetMap IDs to Wikidata

 * Phabricator task: T337180
 * Brief (2-3 lines): There are 2 million wikidata tags on objects in OpenStreetMap.
 * Wikidata now has properties for OSM relation, way and node IDs. These properties need to be populated with OSM IDs.
 * I'm working on software to generate a list of IDs to load into Wikidata.
 * Relevant links: https://edwardbetts.com/wmhack/ https://www.wikidata.org/wiki/Property:P11693
 * Contact(s): Edward Betts (User:Edward)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): proof-of-concept
 * Okay with being recorded: Yes

Central CollabPad - first steps

 * Phabricator task: https://phabricator.wikimedia.org/T337124
 * Brief (2-3 lines): Working together in VE with other authors at the same time is possible with CollabPad. But the installation is not trivial. A central installation to allow an easy usage for everybody could be a solution. For this the CollabPad would need to import external wiki pages. See how far we got in the screencasts in the ticket! :)
 * Relevant links: https://bawolff.net/collabpad/w/index.php/Special:CollabPad
 * Contact(s): lilients, bawolff
 * Status (e.g., early concept, ready for beta deployment, production, etc.): proof of concept
 * Okay with being recorded: Yes

Migrating VideoCutTool from MongoDB to PostgreSQL

 * Phabricator task: https://phabricator.wikimedia.org/T330755
 * Tool: https://videocuttool.wmcloud.org/ (Login to use the tool - On going bug, fixed - Yet to be deployed)
 * Document: https://commons.wikimedia.org/wiki/Commons:VideoCutTool
 * Brief (2-3 lines): MongoDB is not approved by the OSI as an open source license, so moved to PostgresSQL
 * Relevant links: https://gerrit.wikimedia.org/r/c/labs/tools/VideoCutTool/+/896129/
 * Contact(s): @Gopavasanth (team: Sohom Datta, Punith and Varun)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Merged (Not deployed yet)
 * Okay with being recorded: Yes

Link to Special:Diff in default summary for undo edits

 * Phabricator task: https://phabricator.wikimedia.org/T333113
 * Brief (2-3 lines): The default edit summary for an undo edit specifies the revision number that is being reverted, but that number used to be shown as plain text in the edit summary and page history. The revision number is now a wikilink to Special:Diff, so it can be clicked to navigate to the original edit. This had already been done locally on the Portuguese wikipedia, now it is implemented directly in core.
 * Relevant links:https://pt.wikipedia.org/w/index.php?diff=58875945
 * Contact(s): Alberto Leoncio, Waldir
 * Status (e.g., early concept, ready for beta deployment, production, etc.): merged, deployment next week
 * Okay with being recorded: Yes

Provide local user id via meta=globaluserinfo

 * Phabricator task: https://phabricator.wikimedia.org/T330230
 * Brief (2-3 lines): It is currently possible to query the Global ID of an account via the API from the Local ID of a wiki, however the reverse was not possible.
 * Relevant links:
 * Contact(s): Alberto Leoncio
 * Status (e.g., early concept, ready for beta deployment, production, etc.): merged, deployment next week
 * Okay with being recorded: Yes

Telegram announcements bot for Hackathons, etc

 * Phabricator task: https://phabricator.wikimedia.org/T337083
 * Brief (2-3 lines): An automated bot for sending out announcements to selected Telegram group chat.
 * Relevant links: https://github.com/wmhack2023/wmhack2023.github.io/tree/main/_telegram
 * Contact(s): Dimitrios Ringas, Spyridon Eftychios Kokotos (aka. Spyros)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Production
 * Okay with being recorded: Yes
 * Presentation link: https://docs.google.com/presentation/d/19B9tYglBAFvzjiPJ2vFoiHVaTJrcBKp_1iPJBBfDetM/edit?usp=sharing

Lutz, an editor gender gap vizualization tool

 * Phabricator task: https://phabricator.wikimedia.org/T337181
 * Brief (2-3 lines):
 * Relevant links: https://lutz.toolforge.org/
 * Contact(s): Chico Venancio
 * Status (e.g., early concept, ready for beta deployment, production, etc.): beta
 * Okay with being recorded: Yes

Spamblacklist improvements

 * Phabricator task:
 * Brief (2-3 lines): We made process of blocking spam much more user-friendly
 * Relevant links: https://en.wikipedia.org/wiki/MediaWiki:Spam-blacklist vs https://phab.wmfusercontent.org/file/data/i4mqe3me5vo34wrbxf4b/PHID-FILE-fhkn3hlxayghivpowkhi/grafik.png and https://phab.wmfusercontent.org/file/data/m6djby77wfrzj7uuf7f5/PHID-FILE-mnfvq6l5qtqqxeprgtgr/grafik.png
 * Contact(s): Ladsgroup (Amir Sarabadani)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Ready for beta deployment
 * Okay with being recorded: Yes

Interactive scribunto templates (Monstranto)

 * Phabricator task: https://phabricator.wikimedia.org/T336632
 * Brief (2-3 lines): Experiment with letting lua templates make animated SVGs
 * Relevant links: https://www.mediawiki.org/wiki/Extension:Monstranto http://bawolff.net/monstranto/index.php/Module:Circle
 * Contact(s): Bawolff
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Proof of concept
 * Okay with being recorded: YES

Wikipedia section & discussion summarizer

 * Phabricator task: https://phabricator.wikimedia.org/T336692
 * Brief (2-3 lines): We developed user-script (s) to create sumamries of Wikipedia sections. At this point the script uses ChatGPT chat-completion endpoint. We also ported it to support Discussion pages.
 * Relevant links: https://github.com/tonythomas01/wikipedia-section-summaries/tree/main
 * Demo: https://www.youtube.com/watch?v=mja1C6FnWes
 * Contact(s): @Alexey_Skripnik, @01tonythomas, @Tgr
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Ready for use via user-script.
 * Okay with being recorded: Yes

Wikipedia Preview browser bookmarklet and user script

 * Phabricator task:
 * Brief (2-3 lines): Wikipedia Preview is a tool developed by the Inuka team that shows Wikipedia article previews upon hovering on Wikipedia links. But it relies on webpage owners to include a script on their pages. This browser bookmarklet and user script let users use this tool on any webpages they would like to.
 * Relevant links: https://gitlab.wikimedia.org/diegodlh/wikipedia-preview-extension
 * Contact(s): @DiegodlH
 * Status (e.g., early concept, ready for beta deployment, production, etc.): early concept
 * Okay with being recorded: Yes

Graceful webservice restart

 * Phabricator task: https://phabricator.wikimedia.org/T337182
 * Brief (2-3 lines): I wrote a new patch to make `webservice restart` restart Toolforge tools more gracefully under Kubernetes.
 * Relevant links: https://gerrit.wikimedia.org/r/c/operations/software/tools-webservice/+/921620
 * Contact(s): Lucas Werkmeister
 * Status (e.g., early concept, ready for beta deployment, production, etc.): partially reviewed, not yet merged
 * Okay with being recorded: Yes

VisualEditor toolbar search

 * Phabricator task: https://phabricator.wikimedia.org/T66905
 * Brief (2-3 lines): Adds an easily-accessible search popup to VisualEditor that gives quick access to most actions
 * Relevant links: https://en.wikipedia.beta.wmflabs.org/wiki/Zebra?veaction=edit (then type `\` or `cmd/ctrl + shift + p`) or https://www.youtube.com/watch?v=No3KeWNFVGA
 * Contact(s): David Lynch
 * Status (e.g., early concept, ready for beta deployment, production, etc.): merged, deployment next week
 * Okay with being recorded: Yes

Foolproof Terminology gadget in Translatewiki

 * Phabricator task:
 * Brief (2-3 lines): The terminology gadget had a flaw that let users break the rendering of the Translate UI; now that doesn't happen any more.
 * Relevant links:https://translatewiki.net/wiki/Project:Terminology_gadget
 * https://translatewiki.net/w/i.php?title=Special:Translate&group=mediawiki&language=nb&filter=!translated&action=translate&uselang=en
 * Contact(s): Jon Harald Søby
 * Status (e.g., early concept, ready for beta deployment, production, etc.): In production
 * Okay with being recorded: Yes

Redesigning Special:Notifications with the Codex design system

 * Phabricator task: https://phabricator.wikimedia.org/T337178
 * Brief (2-3 lines):
 * Relevant links: https://www.figma.com/proto/pszmvYHcXK1ais8zrP445T/Notifications---Hackathon-2023-(T328706)?page-id=2649%3A11132&type=design&node-id=2859-21379&scaling=min-zoom&starting-point-node-id=2859%3A27415&hide-ui=1
 * Contact(s): Bárbara Martínez Calvo (@BMartinezCalvo)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): early concept
 * Okay with being recorded: Yes

Porting Special:Notifications to Codex

 * Phabricator task: https://phabricator.wikimedia.org/T337178
 * Brief (2-3 lines): Rebuild the Special:Notifications page with Vue, Codex and Pinia
 * Relevant links: https://patchdemo.wmflabs.org/wikis/ac57b1991f/wiki/Special:Notifications
 * Contact(s): Roan Kattouw (Catrope), Moriel Schottlender (mooeypoo),
 * Status (e.g., early concept, ready for beta deployment, production, etc.): early concept
 * Okay with being recorded: Yes

New-Q5

 * Phabricator task: https://phabricator.wikimedia.org/T337005
 * Brief (2-3 lines): Form to neatly add or update a person's Wikidata-item date of bith and/or date of death
 * Relevant links: https://new-q5.toolforge.org/
 * https://github.com/VDK/new-q5
 * Contact(s): 1Veertje
 * Status (e.g., early concept, ready for beta deployment, production, etc.):
 * in production
 * Okay with being recorded: Yes

Phixing Phabricating Phings

 * Phabricator task: https://phabricator.wikimedia.org/T336167
 * Brief (2-3 lines): Is Phabricator dead?
 * Relevant links: https://we.phorge.it/w/planning_meetings/wikimedia_hackaton_2023_athens_code_sprint/?__print__=1
 * Contact(s): @bozzy Telegram
 * Status: ready for production as usual
 * Okay with being recorded: Yes

Right-to-left support in Wikistats

 * Phabricator task: https://phabricator.wikimedia.org/T251376
 * Brief (2-3 lines): Wikistats 2 ( https://stats.wikimedia.org ) doesn't support showing the user interface in right-to-left languages. We (Nick Gkountas and Amir Aharoni) tried to fix it, and we hope it gets deployed :)
 * Relevant links:
 * Contact(s): Amir E. Aharoni (User:Amire80, @amire80)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Submitted to Gerrit, tested on our local machines, waiting for review and deployment
 * Okay with being recorded: Yes

Evaluating chat bridges

 * Phabricator task: https://phabricator.wikimedia.org/T323845
 * Brief (2-3 lines): Chatrooms like #wikimedia-hackathon span multiple networks (IRC, Telegram, Matrix) but usually the message conversion quality is not great. We created a checklist for evaluating chat bridges (tools to translate messages between networks) and evaluated potential options for improving the current setip.
 * Relevant links: https://docs.google.com/document/d/11h0O6c3xEOaDAehPZO4U8Qim843pTT6RxWUaGaIIAQA/edit (t2bot.io), https://docs.google.com/document/d/1YXC5-NX0KojYRQl7x4MfBrECAv6YloPW2kOkX8NGJZY/edit (template)
 * Contact(s): User:Tgr, User:Waldyrious
 * Status (e.g., early concept, ready for beta deployment, production, etc.): documentation-only project. One more bridge to evaluate.
 * Okay with being recorded: Yes

Wikidata Facet Browser

 * Phabricator task: https://phabricator.wikimedia.org/T337000
 * Brief (2-3 lines): How might we allow ordinary users to create interactive Wikidata Query visualizations (like interactive graphs) without knowledge of SPARQL?
 * Relevant links: SLIDES - https://docs.google.com/presentation/d/1v5ofGjb6fPRFQqB-oK-1t3mmeeEy0DZQnM9BCiey76w/edit?usp=sharing
 * Contact(s): Andrew Lih (User:Fuzheado)
 * Status (e.g., early concept, ready for beta deployment, production, etc.): prototype script https://public-paws.wmcloud.org/User:Fuzheado/wikidata-facet-browser/facetbrowser.ipynb
 * Okay with being recorded: Yes/No YES

IP Masking temporary account contributions

 * Phabricator task: https://phabricator.wikimedia.org/T337089
 * Brief (2-3 lines): View edits from temporary counts for a given IP address
 * Relevant links: Demo video: https://www.youtube.com/watch?v=Qo5ufHouL7s
 * Contact(s): Tchanders
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Early concept
 * Okay with being recorded: Yes

Improvements to the MediaWiki installation experience using install.php

 * Phabricator task: N/A
 * Brief (2-3 lines): Installing MediaWiki has never been easy. In particular, the install.php maintenance script can allow this process to be scriptable, but it has several subtle issues. I've worked in improving the script's default options and error messages to be more helpful, as well as various documentation pages in mediawiki.
 * Relevant links:
 * Code changes: 1) https://gerrit.wikimedia.org/r/c/mediawiki/core/+/133222 (from 2014!), 2) https://gerrit.wikimedia.org/r/c/mediawiki/core/+/921626, 3) https://gerrit.wikimedia.org/r/c/mediawiki/core/+/921679
 * Documentation changes: https://www.mediawiki.org/w/index.php?title=Special:Contributions/Waldyrious&target=Waldyrious&offset=20230521235959&limit=34
 * Contact(s): Waldir
 * Status (e.g., early concept, ready for beta deployment, production, etc.): Code changes are made, documentation changes are live
 * Okay with being recorded: Yes

MediaWiki Metal - "bare metal" framework for local development environment

 * Phabricator task: https://phabricator.wikimedia.org/T333678
 * Brief (2-3 lines): ~40 commits, ~20 merge requests. Got working on Debian/Ubuntu and macOS. Supports Apache and php built-in server. Started working on homebrew formula for installing. Added a Status command for showing software installed / to be installed. A config file and commands for showing how the local environment is set up.
 * Relevant links: https://asciinema.org/a/Z6AG7SQgxA3kPMWNWnAR7s1bM
 * https://gitlab.wikimedia.org/kharlan/mediawiki-metal
 * Contact(s): Kosta Harlan, Jack Gleeson
 * Status (e.g., early concept, ready for beta deployment, production, etc.): early concept
 * Okay with being recorded: Yes

Integrating frontend and backend web app on toolforge

 * Brief (2-3 lines): This is documentation descrbing the way to integrating frontend and backend web app on Toolforge.
 * Relevant links: https://wikitech.wikimedia.org/wiki/User:Jayprakash12345/Integrating_frontend_and_backend_web_app_on_toolforge
 * Contact(s): User:Jayprakash12345
 * Status: Deployment config tested
 * Okay with being recorded: Yes

Kiwix offliner

 * Phabricator task: https://phabricator.wikimedia.org/T324866
 * Brief (2-3 lines): Updated Kiwix to use non-deprecated APIs to allow it to generate Wikipedia offline snapshots even after certain deprecated WMF services are turned off later this year
 * Relevant links:
 * Contact(s): User:cscott
 * Status (e.g., early concept, ready for beta deployment, production, etc.): patches in github
 * Okay with being recorded: Yes

Play with Toolforge build service / buildpacks

 * Phabricator task: https://phabricator.wikimedia.org/T337040
 * Brief: I experimented with the new alpha/beta Toolforge build service, explored how it works, updated the documentation a bit, filed some tasks.
 * Contact(s): Lucas Werkmeister (WMDE)

Two Wikibase fixes

 * Phabricator task: https://phabricator.wikimedia.org/T336956 https://phabricator.wikimedia.org/T337081
 * Brief: I worked on two Wikibase issues that cropped up. Some other WMDE people did as well.
 * Contact(s): Lucas Werkmeister (WMDE)

Minor tool fixes

 * Links: https://phabricator.wikimedia.org/T337118 https://gitlab.wikimedia.org/toolforge-repos/versions/-/merge_requests/3
 * Brief: I submitted tiny fixes to Toolhub and the Versions tool.
 * Contact(s): Lucas Werkmeister (WMDE)

An open and fast Sparql API endpoint to query Structured Data on Commons

 * Links: https://qlever.cs.uni-freiburg.de/wikimedia-commons https://github.com/ad-freiburg/qlever/issues/985
 * Brief: I asked the developers of QLever to load the SDC data to QLever, and they did! Also, QLever has progressed a lot recently (full Sparql 1.1 grammar, SERVICE for federated queries etc.) so you should check it out.
 * Contact(s): TuukkaH

Native rendering for SVG (wishlist item)

 * Links:https://gerrit.wikimedia.org/r/921379 https://mastodon.social/@TheDJ/110400660105740578
 * Brief: Introduce a MediaWiki configuration option to serve SVGs directly to the browser instead of thumbnailing them to PNG. Mastadon post a screenshot of the new Picture in Picture mode that is going to be possible in Chrome and video.js
 * Contact(s): TheDJ

Converting TMH to ES6 and updating our version of video.js to 8.3.0

 * Links: https://gerrit.wikimedia.org/r/c/mediawiki/extensions/TimedMediaHandler/+/921490
 * Brief: Updated to the latest version of video.js and convert the plugin we use to ES6
 * Contact(s): TheDJ

Ship .gitmessage with MediaWiki core, skins and extensions

 * Αλ;λ/: https://gerrit.wikimedia.org/r/c/mediawάαiki/core/+/921673 https://phabricator.wikimedia.org/T337179
 * Brief: Add a .gitmessage template for more consistent and informative commit messages.
 * Contact(s): Kosta Harlan (kostajh) ά

Improved documentation on data modeling for Structured Data on Commons

 * Links: https://commons.wikimedia.org/wiki/Commons:Structured_data/Modeling (and some new subpages, some still very rough) / more explicit to do list at https://phabricator.wikimedia.org/T335910
 * Brief: More precise documentation, also in preparation for more Lua-driven Infobox templates for Commons files which can be used by e.g. batch upload tools
 * Contact(s): User:Spinster

Events and resources for newcomers
The Wikimedia Hackathon in May 2023 is focused on technical contributors who are already autonomous with finding and working on projects. Therefore, the program items dedicated to newcomers will be limited, and the participants are expected to find their way in the technical environment of the Wikimedia projects.

If you’re new to the Wikimedia project and/or to development, here’s a list of events you could consider joining instead:
 * Small Wiki Toolkits workshops
 * WikiConference India in March 2023 will have a hackathon/technical track
 * Pre-hackathon events organized by local communities
 * Wikimania 2023 is an event that everyone can join and that will include technical sessions

You can also check this list of resources to get on board on technical contribution:
 * Wikimedia Developer Portal
 * Learn about Phabricator
 * Information for new developers
 * Basic skills needed to contribute to development of MediaWiki core and MediaWiki extensions
 * An overview of the MediaWiki Action API
 * The Wikidata Query Service (WDQS) provides a way for tools to access Wikidata data
 * Gerrit, the tool to handle code reviews
 * Special:MyLanguage/Wikibase
 * An introduction to Wikimedia Cloud Services (i.e., Toolforge, PAWS)
 * An overview about Structured Data
 * A basic overview of the implementation of Lua on Wikimedia projects