MediaWiki Code Jam
Welcome to MediaWiki Code Jam December 2023! Code Jam is a virtual hackathon that helped developers get started contributing to MediaWiki. The Code Jam is for WMF Internal staff only and ran from Dec 11 2023 to Dec 15 2023.
We kicked off the CodeJam on Monday and offered help to folks throughout the week in our Code Jam Collab sessions (times available for Eastern and Western hemisphere). We closed out the week with a Code Jam showcase where people shared what they accomplished for the week. You can find tickets on the workboard and #Project Proposals.
Code Jam was open to all WMF staff and we looked forward to helping you jam away on MediaWiki.
Results
[edit]Number of participants (including MediaWiki Engineering) - 54
Number of non-MWE participants - 38
Phab tickets taken on or completed - 21
- phab:T353192
- phab:T353130
- phab:T344862
- phab:T353012
- phab:T353417
- phab:T352320
- phab:T353284
- phab:T207384
- phab:T353017
- phab:T353015
- phab:T312482
- phab:T350977
- phab:T348590
- phab:T161976
- phab:T168763
- phab:T353170
- phab:T283260
- phab:T312323
- phab:T299369
- phab:T353245
- phab:T337435
Survey Results
- Survey Results
- 16 participants
- Main takeaways
- Code Jam was a welcomed change from day-to-day
- The timing in early December conflicted with a lot of end of year / holiday timing so participation could have been better
- The resources (code jam collabs, Timo's videos, phab board) were very helpful to get folks setup
- The quick setup was used by about half of the respondents and they found it easy to use
- Having more collaboration spaces and easier project sign up will improve future Code Jams
Areas of improvement
- JSDocs
- Mediawiki installer UI improvements
- Wiki portals accessibility improvements
- Extensions:
Coordination
[edit]Slack Channel: #codejam-mediawiki
Phabricator project workboard: phab:project/board/6874/
Project Proposals: https://docs.google.com/document/d/148-krDq75JjTnD8DIiFBGrBXwPBUVYizvHQq-DpnhAw/edit
Code Jam Survey: https://docs.google.com/forms/d/e/1FAIpQLSeSQpu7elw3ZswO3vp4chmdvfqvWvsJBRXwtZk4T4AsIH026g/viewform
Schedule (all times UTC)
[edit]There were a few ways to join the events
- Add the MediaWiki Engineering Group Google calendar to join each event.
- Use the links below to join each meeting.
- Add the "Mediawiki Engineering Group" Calendar to your subscribed calendars, then add yourself to each event.
Monday
[edit]Kickoff - Noon UTC - Recording.
Code Jam Collab: Western Hemisphere Edition - 5pm UTC
Tuesday
[edit]Code Jam Collab: Eastern Hemisphere Edition - 10am UTC
Code Jam Collab: Western Hemisphere Edition - 5pm UTC
Wednesday
[edit]Code Jam Collab: Eastern Hemisphere Edition - 10am UTC
Code Jam Collab: Western Hemisphere Edition - 5pm UTC
Thursday
[edit]Code Jam Collab: Eastern Hemisphere Edition - 10am UTC
Code Jam Collab: Western Hemisphere Edition - 5pm UTC
Friday
[edit]Code Jam Showcase! - 3pm UTC - Recorded
Get started
[edit]1. Set up your development environment
[edit]Manage your MediaWiki development environment locally using PHP and Composer.
Use the MediaWiki CLI tool to set up a containerized development environment with MediaWiki, Nginx, and MySQL.
2. Take a tour of the MediaWiki codebase
[edit]Familiarize yourself with MediaWiki's core code by learning about entry points and top-level directories.
3. Run unit tests
[edit]MediaWiki uses the PHPUnit framework for unit and integration testing of PHP code. See Manual:PHP unit testing to run tests and find information about writing tests.
4. Find a task
[edit]Checkout the CodeJam Phabricator Workboard for tasks that are good for people just getting started or if you are a long time contributor.
5. Join a CodeJam Collab
[edit]CodeJam Collab is an open space to get support with your task and collaborate with MediaWiki Advisors and your fellow CodeJammers. There are two times available to accommodate our global team. Check out the #Schedule_(all_times_UTC) and come join us.
6. Watch MediaWiki Intros Videos
[edit]Timo Tijhof has put together very informative MediaWiki Introduction videos to help you understand and navigate MediaWiki.
MediaWiki Advisors
[edit]A group of engineers experienced with MediaWiki that can help you answer questions about your project or task.
- API Platform Team
- Aaron Schulz, Bill Pirkle, Daniel Kinzler,
- Content Transform Team
- C.Scott Ananian, Subramanya Sastry
- MediaWiki Platform Team
- Timo Tijhof, Gergő Tisza, Bartosz Dziewoński, Derick Alangi, Piotr Miazga
Participating Teams
[edit]- MediaWiki Engineering Group
- Security
- Community Tech
- Design System Team
- Web Team
- Developer Experience Team
Project Proposals
[edit]- https://phabricator.wikimedia.org/T117279
- Description: Goodbye Special:MobileDiff
- Desired Outcome: The work on inline diffs in core means much of Special:MobileDiff in MobileFrontend is no longer needed. It is several bug fixes and a config change away. Having to support two diff pages has been a pain for some time so if you are interested in helping get this over the finish line come talk to me!
- Proposed By: Jon Robson
- https://phabricator.wikimedia.org/T311866
- Description: Migrate Database::select usages to SelectQueryBuilder.
- Desired Outcome: Reduce the amount of raw SQL in the codebase.
- Proposed By: Amir Sarabadani
- https://phabricator.wikimedia.org/T350075
- Description: Migrate raw SQL building in conditions to expression builder in WMF-deployed extensions.
- Desired Outcome: Reduce the amount of raw SQL in the codebase.
- Proposed By: Amir Sarabadani
- https://phabricator.wikimedia.org/T337435
- Description: Redesign MediaWiki Installer
- Desired Outcome: A modern looking installer for mediawiki
- Proposed By: Amir Sarabadani
- https://phabricator.wikimedia.org/T189767
- Description: Scribunto Needs Love
- Desired Outcome: Investigate a number of Scribunto improvements; could include redirects, Lua 5.4 support, JavaScript support, localization (or this), github integration (or this), separation of code and markup … the sky’s the limit! (Also, hook up MCR to Scribunto (slots for doc subpages, etc; could also do this with TemplateData.)
- Proposed By: C. Scott Ananian
- https://phabricator.wikimedia.org/T346984
- Description: Improve chaining abortable API promises using abort signals
- Desired Outcome: At least one other person understands and approves my core patch to introduce abort signals, and we update some extensions together to use the new mechanism
- Proposed By: Bartosz Dziewonski
- https://phabricator.wikimedia.org/T352308
- Description: JSDoc migration
- Desired Outcome: All public stable APIs in JavaScript is fully documented on docs.wikimedia.org. Need help improving documentation and work on the theme.
- Proposed By: Jon Robson
- https://phabricator.wikimedia.org/T303409
- https://phabricator.wikimedia.org/T289402
- Description: Add new lints to Parsoid & Linter (based on New Linter requests on the Linter phabricator board)
- Desired Outcome: Parsoid’s Linter class has logic for new linters, Linter extension has code to enable new linters, https://www.mediawiki.org/wiki/Help:Lint_errors has doc stubs for these new linters
- Proposed By: Subramanya (Subbu) Sastry
- https://phabricator.wikimedia.org/T182050
- Description: Goodbye MediaWiki UI
- Desired Outcome: MediaWiki UI is deprecated and Codex is the future. Help us get there! On the long run this will help us roll out a dark mode on our projexcts quicker and give our interfaces better design cohesion.
- Proposed By: Jon Robson
- https://phabricator.wikimedia.org/T295007
- Description: Let’s fix upload-by-url
- Desired Outcome:upload-by-url works asynchronously, allowing us to accept larger uploads, improved UX
- Proposed By: Giuseppe Lavagetto
- https://phabricator.wikimedia.org/T283257
- https://phabricator.wikimedia.org/T283260
- https://phabricator.wikimedia.org/T353170
- https://phabricator.wikimedia.org/T353166
- Description: Improve accessibility of Wikipedia portals
- Desired Outcome: Improve experience for screen readers users for the landing page for wiki projects
- Proposed By: Bernard Wang
- https://phabricator.wikimedia.org/T349118
- https://phabricator.wikimedia.org/T246299
- https://phabricator.wikimedia.org/T319138
- https://phabricator.wikimedia.org/T311361
- Description: Grab-bag of Wikimedia Portals bugs! Update or remove ancient NPM modules, fix accessibility issues, address inherent design flaws...
- Desired Outcome: A cleaner codebase and the ability to upgrade the Portals build process to the latest version of Node.
- Proposed By: Jan Drewniak
- https://phabricator.wikimedia.org/T353139
- Description: API Client JS Library
- Desired Outcome: A plugin or wrapper for superagent that takes care of at least retries. Stretch goal: throttling, redirects, and authentication.
- Some early attempts at https://gitlab.wikimedia.org/daniel/mw-api-client
- Proposed By: Daniel Kinzler (would appreciate help from someone who is less confused about the internals of promises)
- https://phabricator.wikimedia.org/T166010
- Description: The Great Namespaceization Effort
- Desired Outcome: Bring consistency to namespace and directory naming across Mediawiki
- Proposed By: Amir Sarabadani
- https://phabricator.wikimedia.org/T351336
- Description: Static analysis for dependency tracking
- Desired Outcome: A script that for a given set of PHP files will output a table containing information about which method calls which other method. Probably based on deptrac.
- Proposed By: Daniel Kinzler (originally proposed by Tyler Cipriani)
- https://phabricator.wikimedia.org/T272937
- Description: Add a Parsoid-specific implementation of this extension's tag handlers. This is a fairly simple extension that can also expose someone to Parsoid's tag processing model. One thing to note is that this extension has *no* tests. So, separately we may have to figure out if we can add tests.
- Proposed By: Subramanya (Subbu) Sastry