Google Summer of Code/2024

shortcut: GSOC24
From mediawiki.org


GSoC logo

Wikimedia will be taking part as a mentoring organization for Google Summer of Code 2024.


Program timeline[edit]

Google Summer of Code 2024's timeline
Date Action by Item
February 6, 18:00 UTC WMF Mentoring organization application deadline
February 21, 18:00 UTC Google Inc. List of accepted mentoring organizations published
March 18, 18:00 UTC Applicants GSoC contributor application period begins
April 2, 18:00 UTC Applicants GSoC contributor application deadline
May 1, 18:00 UTC Google Inc. Accepted GSoC contributor projects announced
May 1 - 26 Applicants GSoC contributors get to know mentors, read documentation, get up to speed to begin working on their projects
May 27 – August 26 Applicants Coding period
September 3 Applicants Initial results of Google Summer of Code 2024 announced
September 3 – November 4 Applicants GSoC contributors with extended timelines continue coding
November 11, 18:00 UTC Applicants Final date for mentors to submit evaluations for GSoC contributor projects with extended deadlines

Applicants = Wikimedian mentors and GSoC developers.

Ideas for projects[edit]

Watch this space for project ideas! We will keep adding ideas below between now and when the application period opens.

1. Commons app: Improve upload queue management[edit]

The Commons app is an open source Android app that allows anyone to upload pictures to Wikimedia Commons (the image repository used by Wikipedia, Wikinews and other projects). The goal of this GSoC is to improve upload queue management, and modernize the app:

  1. Improve upload queue management
  2. Modernize the app by replacing Kotlin Android Extensions and Butterknife with ViewBinding: https://github.com/commons-app/apps-android-commons/issues/4664
  3. Improve the "Nearby" feature.

2. [Programs & Events Dashboard] Improve the training module creation and update process[edit]

The training modules on Programs & Events Dashboard - https://outreachdashboard.wmflabs.org/training - can be created, edited and translated by users. Each piece of training content is based on a corresponding page on meta.wikimedia.org.

However, creating new modules is tedious, involving the creation of .json pages to define a new Library or Module, and a set of required formatting conventions for individual training slides. It would be nice to switch to a simpler and more user-friendly way of creating and editing training content, perhaps by removing the need for .json pages and allows the configuration of Libraries and Modules to be done from the Dashboard itself.

  • Tech stack: Ruby (required), JavaScript and React (helpful)
  • Size: Large (350 hours)
  • Difficulty: Hard (This project involves one of the more complex subsystems of the Dashboard, in which the Dashboard database gets data drawn from a set of structured wiki pages (currently), and some of that system will need to be rewritten to be updated via a UI within the Dashboard.)
  • Mentor(s): Sage Ross
  • Phabricator task: T356572

3. Improve InlineComments extension[edit]

This project idea has quite a few strong proposals from folks so you may want to look at another project idea.

InlineComments is a relatively new MediaWiki extension that provides a long-missing feature for MediaWiki: the ability to do inline annotation on pages, in the manner of Google Docs, Confluence and other content-management systems. This extension already works fairly well, but it could use some improvements that would take it to the next level:

  • Add user mentions, i.e. selecting a user or users to "ping" about the current discussion by typing "@" and then selecting a username from the dropdown (phab:T355942)
  • Make sidebar creation more skin-neutral - currently, the "sidebar" in which comments are displayed is created on somewhat of a skin-by-skin basis; it would be good to have the code handle all skins in a standard way, via CSS and/or JavaScript (phab:T355948)
  • Add correct display of username and date/time of posting, on comment creation - currently, these are only displayed correctly for comments created before the page was loaded (phab:T355943)

There are other improvements that could be made to the extension, although mostly they are smaller; one is even listed as a microtask. However, it is possible that more potential improvements could be suggested during the project, by either the mentors or the student.

  • Tech stack: JavaScript (ideally including jQuery), PHP, CSS
  • Size: 175 hours
  • Difficulty: Intermediate
  • Mentor(s): Yaron Koren, Brian Wolff
  • Phabricator task: T356436

4. [Programs & Events Dashboard] Improve system for copying courses from one Dashboard to another[edit]

There are two production instances of the WikiEduDashboard software: Programs & Events Dashboard (https://outreachdashboard.wmflabs.org/) and Wiki Education Dashboard (https://dashboard.wikiedu.org/). The system includes a tool to copy a course page from one Dashboard to the other, but the copied content is incomplete. If a course with Timeline content is copied, the Timeline content is not included, making it difficult to re-use assignment plans from Wiki Education Dashboard on Programs & Events Dashboard. In this project, you will improve the course copying feature so that useful Timelines and other content can more easily be transferred across servers.

  • Tech stack: JavaScript & React, Ruby
  • Size: 350 hours
  • Difficulty: Intermediate (This is a moderately complex feature with frontend and backend components, but it touches a limited and well-defined portion of the codebase with code that is all in our control.)
  • Mentor(s): Sage Ross
  • Phabricator task: T356573

5. Improve searchability and filtering of PageTriage feed[edit]

PageTriage is an MediaWiki extension that allows patrollers on the English Wikipedia to track, categorize and deal with problematic new pages. One of it's features is the VueJS based New pages feed which allows patrollers to filter specific interesting pages they might want to patrol based on certain criteria. However, these filters are often limited and there has been some interest amongst the community to introduce newer filters and in general improve the ability to search for specific content on the New pages feed.

As part of this project, we would like to enhance the filtering and searching capabilities of the New pages feed. Particularly, we would like to add AI based topic prediction (leveraging the ORES API), the ability to search for a specific keyword in a article, filter by how many pageviews a article gets and be able to search by how similar a particular page is to other deleted pages. While other ideas are also welcomed, they might need to be reviewed by community members before being implemented.

  • Tech stack: VueJS, some familiarity with PHP
  • Size: 350 hours
  • Difficulty: Intermediate
  • Mentor(s): Sohom Datta, Sammy
  • Phabricator task: T357337

6. Scribe-Data: Refactor into a multi purpose Wikidata language pack CLI tool[edit]

This is one of two projects for Google Summer of Code 2024 for the Scribe organization that makes keyboard applications for second language learners using Wikidata and other Wikimedia projects as a basis for the data. The goal of Scribe is to provide everything that a user needs to help them with their second language in any app without them needing to leave their keyboard to look up grammar or other needed information. One focuses on Scribe-iOS (phab:T358063), and the other on Scribe-Data (phab:T358064).

We are a Wikimedia Project for New Developers and would love to work with you!

  • Tech stack: Python, SPARQL query language, maybe Docker
  • Prerequisites: prior experience with Python and data analytics is a plus
  • Size: 350 hours
  • Difficulty: Intermediate
  • Mentor(s): Will Yoshida (Primary), Andrew McAllister (Secondary), Henrik Thomasson (Tertiary)
  • Phabricator task: T358064

7. Scribe-Data: Refactor into a multi purpose Wikidata language pack CLI tool[edit]

This is one of two projects for Google Summer of Code 2024 for the Scribe organization that makes keyboard applications for second language learners using Wikidata and other Wikimedia projects as a basis for the data. The goal of Scribe is to provide everything that a user needs to help them with their second language in any app without them needing to leave their keyboard to look up grammar or other needed information. One focuses on Scribe-iOS (phab:T358063), and the other on Scribe-Data (phab:T358064).

We are a Wikimedia Project for New Developers and would love to work with you!

  • Tech stack: Swift, maybe Python, maybe SPARQL query language
  • Prerequisites: the intern needs to develop on Mac as they need access to Xcode, prior Swift experience is a plus
  • Size: 350 hours
  • Difficulty: Intermediate
  • Mentor(s): Andrew McAllister (Primary), Henrik Thomasson (Secondary), Will Yoshida (Tertiary)
  • Phabricator task: T358063

8. Wikimedia Portals codebase modernization[edit]

Help modernize the code that generates www.wikipedia.org. This codebase was originally written in 2015 and now many of it's NPM dependencies have become outdated. This project will involve cleaning up, refactoring, adding tests and removing unnecessary dependencies for one of the most viewed pages on the internet.

9. Add For User Badges[edit]

Implementing user badges in a system similar to Stack Overflow enhances user engagement, incentivizes positive contributions, and recognizes users for their expertise and contributions. This feature adds a gamification aspect to the platform, making it more interactive and rewarding for users.

10. Lingua Libre SignIt[edit]

This project idea has quite a few relevant applicants so you may want to look at another project idea.
Screenshot.

Lingua Libre's mission has been extended to Sign Languages in 2019. Both a click-and-translate Firefox extension and a video recording studio have been developed. Both system UI exist in 35+ languages allowing the global documentation and learning of various sign languages. As Manisfest v2.0 extensions are being phased out, the project is under threat. A full revamp into manifest v3.0 and a modern extension structure would allow the project to be compatible with all web navigators. This project must navigate updated in browser web extension security constrains and new web extension API.


11. Lingua Libre v3.0 enhancement and migration[edit]

This project idea has quite a few strong applicants so you may want to look at another project idea.
Lingua Libre v.2.0, Homepage

In the field of Language diversity, Wikimedia Foundation and Wikimedia France have supported LinguaLibre.org, a single page VueJS application to rapidly record vocabularies of the world. Over 240 languages and 1.2 millions words have been audio recorded into Wikimedia sites through this open project. Current back end (wikibase, blazegraph) while interesting have shown limitations, mostly limited query speed, no API, and duplication of data. A revamp have been engaged (here) but requires further full stack work to be expanded into a maintainable code base, pushed into production, upgraded into an elegant service for native speakers.

Lingua Libre v.2.0, Recording Studio


Recommended steps for accepted candidates[edit]

See Google_Summer_of_Code/Participants#Accepted_participants

Accepted projects[edit]

Applicant Location Phabricator project Mentor(s) Updates

Contact[edit]

We encourage applicants to communicate in the public streams and refrain from sending private emails/messages whenever possible. Open communication allows fellow applicants to learn from your questions. It also gives all community members a chance to answer your queries. This way, queries get answered sooner and the administrators do not become a bottleneck. Also see our communication tips.