Jump to content

MediaWiki Code Jam

From mediawiki.org

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

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

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

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]

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/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/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/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/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