shortcut: GSOC21

Google Summer of Code/2021

Jump to navigation Jump to search

Read information for participants Read information for mentors

GSoC logo

Program timeline[edit]

Also see the full timeline.

February 20 Mentoring organization application deadline
March 10 Mentoring organizations announced
March 29 Student application period begins
April 13 Student application deadline
May 17 (previously May 4) Student projects announced
May 17 to June 7 (previously May 4 to May 31) Community bonding period
June 7 to August 16 (June 1 to August 24) Coding period

Ideas for projects[edit]

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

Add autocompletion to Page Forms spreadsheet display[edit]

The Page Forms extension provides a spreadsheet-style editing display in two places: in the page Special:MultiPageEdit (for editing many pages at the same time) and in regular forms, with the setting "display=spreadsheet" (for editing multiple instances of the same template within one page). This spreadsheet-style editing can make use of a number of helpful input types (dropdown, date, etc.) for different cells, but it does not allow - unlike regular Page Forms forms - for doing autocompletion. This project would add this capability.

More details: phab:T273530

Skills required: PHP, JavaScript

Mentors: Yaron Koren, Sahaj Khandelwal

Upgrade WebdriverIO to the latest version for all repositories[edit]

MediaWiki is a free and open-source Wiki application. It powers a lot of websites including Wikipedia, Wiktionary, and Wikimedia commons.

Delivery of optimal quality software with unique and innovative features is always a priority. However, without evaluating software components under various expected and unexpected conditions, one cannot guarantee these aspects. Therefore, testing is performed to test every software component large and small. To increase the efficiency of the testing process and to maximize test coverage, automation is imperative. Automation not only improves the quality of testing but also makes it faster and reduces the cost involved.

We use WebdriverIO as a browser driver for our test automation framework. We are currently using version 6 (2 repositories still at v4). WebdriverIO v7 was released on February 9, 2021. CodeSearch: v4, v6

The major goal for the Google Summer of Code 2021 internship is to migrate all repositories to v7

More details: phab:T274579

Skills required: JavaScript (Node.js), WebdriverIO

Mentors: Soham Parekh Vidhi Mody

Update the front-page of Wikimedia projects[edit]

In 2016, the front page of Wikipedia:, underwent a subtle refresh. The code was moved from a series of scripts on into a Git repository utilizing Mustache templates and a build step to generate the final HTML page. Unfortunately, Wikimedia’s other projects, like Wikiquote, Wikisource, Wikibooks, etc. we left out of this refresh and their pages are still generated via the scripts on This project aims to convert these pages into HTML templates so that they can run through the same build-step as

More details:

Skills required: This project is well suited for anyone interested in semantic HTML & CSS and front-end build steps. The specific technologies involved are: Handlebars templates, Less CSS, plain JavaScript, Node.js scripts and a build-step powered by Gulp.js. There is no server-side component to this project.

Mentors: Jan Drewniak

Develop a web dashboard or a command line tool to help inventory and/or monitor database and backup objects[edit]

Wikimedia uses over 200 MariaDB instances to store content and metadata for Wikipedia and other free knowledge projects. It also uses Bacula, mydumper and xtrabackup to perform backups of its hundreds of terabytes of data in its infrastructure. While standard open source tools for both monitoring and automation are used when possible, there are some tasks that require custom development. A few suggestions for improving existing monitoring tools or developing web frontends for them in order to maintain an inventory and track several objects distributed among the database and backups infrastructure, to choose among:

  • MariaDB instances inventory (zarcillo web interface)
  • Database object inventory
  • Database backup inventory improvements
  • Improve WMF Bacula monitoring
  • MySQL account metadata inventory

More details: phab:T274636

Skills required: cli or web development basics, Python (preferred, probably with Django or Flask), PHP, basic databases and SQL/file management knowledge

Mentors: Jaime Crespo aka #jynus (@jcrespo), Manuel Arostegui (@marostegui).

Develop a UserScript/Gadget tutorial on similar to Wikipedia:The_Wikipedia_Adventure[edit]

User scripts are programs written in JavaScript for use on Wikimedia projects by users. User scripts enable the Wikimedia user account to do many things that they otherwise couldn't. Like changing DOM, appending HTML snippets in DOM, and changing Interface according to browsers events etc.

The project is about to create a guided adventure tour on MediaWiki and MetaWiki to give users insight on “How to create userscript on Wikimedia projects”. The adventure will be designed like The Wikipedia Adventure which will have 3-4 missions.

More details: phab:T274635

Skills required: HTML, CSS, JavaScript, and jQuery

Mentors: Jayprakash, KCVelaga, and Enterprisey

Add zooming and panning to the Wikisource Pagelist Widget[edit]

The Wikisource Pagelist Widget is an OOUI based widget that streamlines the process of creating a pagelist for new (and existing) users of Wikisource.

Currently, while using the Pagelist widget, the user is presented with the picture of a scanned page and is asked to identify the page number on the scan. However, there is no option to zoom or pan the scanned image inside the Pagelist widget. Adding the option to zoom and/or pan the image will allow users to see the page number for scans that have a very small font, or have lots of text (for example newspapers scans)

During the course of the project, the following should be accomplished:

  • Review and test various zooming and panning libraries available.
  • Integrate the library with the current code of the pagelist widget.
  • Work on integrating the library with ResourceLoader (the system used by Wikimedia to serve JavaScript, CSS and Image assets).
  • If time permits, work on replacing the old jQuery-based zooming and panning library used by the Page: namespace editor.

More details: phab:T262146

Skills required: JavaScript, (a basic knowledge of PHP may be required)

Mentors: Sohom Datta, Satdeep Gill, Sam Wilson

Gamified Knowledge Base Completion Plugin for Wikibase/Wikidata[edit]

Open data collections -- like Wikidata -- are created and maintained by volunteers and are thriving on community knowledge. Missing or new information needs to be added by community members, otherwise the knowledge base will dry out and be obsolete after a while. Hence, completing a knowledge base is a crucial task within any community-driven initiative. We propose here to implement a Wikibase plugin that is dedicated to facilitate the Wikidata completing process. While navigating through Wikidata, the plugin will show to the user facts extracted from textual sources as well as other knowledge bases (e.g., Wikipedia) which need to be validated. Hence, the Wikibase plugin is showing users suggestions of facts that should be added or changed within the Wikidata knowledge base.

More details: phab:T275102

Skills required: JavaScript, (a basic knowledge of PHP may be useful)

Mentors: DD063520, AnBo-de, Gabinguo, Aleksandr.perevalov

Create Cypress tests for Wikipedia-Preview[edit]

At the Inuka-Team we are building a plugin for partners to show wikipedia content available as contextual information on 3rd party sites.

The major goal for the Google Summer of Code 2021 internship is to write Cypress tests for the plugin.

MediaWiki page:

Demo Page:

More details: phab:T277284

Skills required: JavaScript (Node.js), Cypress

Mentors: Vidhi Mody Soham Parekh Gabriel Pita

Add a custom picture selector to the Commons Android app[edit]

The Commons app lets the user select a picture to upload.

Your role is to create a new picture selection UI that shows differently pictures that have been uploaded already.

More details: phab:T278015

Skills required: Android, Java

Mentors: Madhur Gupta, Nicolas Raoul

Retrain models from ORES to be deployable on Lift Wing[edit]

This project aims to have a Google Summer of Code intern work in designing and training three ML models over the course of the internship which recreate the performance of three currently deployed ORES models.

More details: phab:T278261

Skills required: Python, Machine Learning

Mentors: Chris Albon, Chaitanya Mittal


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: Feedback, questions and support.