Google Summer of Code/2022

GSoC logo

Program timeline edit

Also see the full timeline.

GSoC and Outreachy Welcome Session, June 2022
February 7 - 18:00 UTC Mentoring organization application deadline
March 7 - 18:00 UTC List of accepted mentoring organizations published
April 4 - 18:00 UTC GSoC contributor application period begins
April 19 - 18:00 UTC GSoC contributor application deadline
May 20 - 18:00 UTC Accepted GSoC contributor projects announced
May 20 - June 12 Community Bonding Period
June 13 - September 12 Coding period
July 29 - 18:00 UTC Phase 1 Evaluation deadline (standard coding period)
September 12 - 18:00 UTC Final project submission due

Accepted projects edit

Name Location Project Mentor(s) Updates
Nivas Ramisetty India Campaigns Retention Metrics Dashboard KCVelaga, Jayprakash12345 Joined Zulip
Ayan Sarkar India Improve the picture selector of the Commons Android app Syced, Aditya Joined Zulip
Lalit Suthar India Extending the WikidataComplete plugin for enabling data donations, recommendations, and gamification Gabinguo, Aleksandr Perevalov Joined Zulip
Ankit Gupta India Edit Request Wizard Enterprisey, SD0001 Joined Zulip

Report 0
Report 1
Report 2
Report 3
Report 4

Shashwat Khanna India Modernize JavaScript build process and dependencies for Wiki Education Dashboard Sage (Wiki Ed), Dhruvdutt Jadhav Joined Zulip

Report 1

Report 2

Report 3

Report 4

Report 5

Final Report

Lennard Hofmann Germany Rewrite the Wikidata Infobox on Commons in Lua Mike Peel Joined Zulip.

Report 1
Report 2
Report 3
Report 4
Final Report

Amal Paul India Command-line interface for Canasta Jeffrey Wang, Yaron Koren Joined Zulip

Recommended steps for accepted candidates edit

See Google_Summer_of_Code/Participants#Accepted_participants

Ideas for projects edit

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

  Warning: Application Peroid Ended! See accepted participants list above.

1. Edit Request Wizard edit

Create a step-by-step form to help beginners submit a Wikipedia edit request. An edit request is a request for someone to change some text in an article. Edit requests are an important part of Wikipedia. The form you create will help the edit requests comply with Wikipedia policy. For example, if the edit request cites a source, that source should be reliable.

Why? To fulfill Wikipedia's mission, it must be easy for anyone to become an editor. However, Wikipedia has a lot of rules. It's not easy for beginners to follow them. This project will guide beginners as they make their first edits. Most of their attempts will need further help, so we will submit them as edit requests.

This project will make editing more accessible for people from all backgrounds.

More details: T300454

Skills required: This project has frontend and backend components, but the backend is simple. HTML/CSS/JS, any frontend framework (preferred), any backend framework required (Python or Rust preferred).

Possible mentors: User:Enterprisey, User:Firefly, User:SD0001

Expected size of project: 350 hours

Difficulty rating: medium

2. Improve the picture selector of the Commons Android app edit


The Commons app allows Android users to select pictures from their phone for upload to Wikimedia Commons.

The picture selector is great but could be improved:

  • Fast scrollbar.
  • UI to mark some pictures as "not for upload" (for instance family pictures).
  • Hide/unhide marked pictures.
  • Minor change to the selection indicator.
  • Gestures and indicator when previewing a picture full-screen.

More details: GitHub issue

Skills required: Android development, Git. No Mediawiki experience required.

Possible mentors: User:Syced and Aditya

Expected size of project: 350 hours

Difficulty rating: medium

3. Modernize JavaScript build process and dependencies for Wiki Education Dashboard edit

Wiki Education Dashboard (the Ruby on Rails app that powers Programs & Events Dashboard) is a complex web app for keeping track of contributions to Wikimedia projects. It's widely used by the global Wikimedia community for edit-a-thons, classroom wiki writing assignments, and a variety of other initiatives.

The goal of this project is to improve the system's JavaScript by updating dependencies, replacing unmaintained libraries, and generally trying to take advantage of recent improvements in the JS ecosystem.

More details: T301731

Skills required: strong JavaScript, ideally some experience with Webpack. Ruby experience helpful but not required.

Possible mentors: User:Sage (Wiki Ed)

Expected size of project: 350 hour

Difficulty rating: medium

4. Rewrite the Wikidata Infobox on Commons in Lua edit

Wikimedia Commons is a multilingual project that hosts over 80 million freely licensed multimedia files, which are available for use on Wikipedia and other websites. These files are organised using categories, around 4 million of which display a multilingual infobox (example for the South Pole Telescope) that fetches information from Wikidata to describe the category's contents in over 200 languages. It is currently coded using MediaWiki ParserFunctions and calls to Lua modules, and it currently consumes a lot of server resources and is slow to load.

The aim of this project is to rewrite the Wikidata Infobox completely in Lua, so that it loads significantly more quickly and efficiently, and to make sure it is easy to expand it in the future.

More details: T302098, microtasks: T302101, T302102

Skills required: Experience with Lua coding is the only requirement, you can gain Wikidata, Commons, and Mediawiki experience during the project.

Possible mentor(s): Mike Peel

Expected size of project: 350 hours

Difficulty rating: medium

5. Extending the WikidataComplete plugin for enabling data donations, recommendations, and gamification edit

Wikidata is a huge structured data repository of the Wikimedia Foundation, used for example by smart assistants like Siri and Amazon Alexa. The Knowledge is maintained similarly to Wikipedia in a Wiki manner. Different institutions are contributing or adding data to Wikidata. The goal of this project is to allow data donations to be inserted into Wikidata after an approval process which should be as easy as possible for the human Wikidata editors. WikidataComplete and WikidataComplete Gadget (from GSoC 2021) is a first step toward this direction.

More details: T301613

Skills required: We search for someone who is confident both in the backend and the front-end. We are aiming in developing this using Java with the Spring Boot framework, or Python with Flask for the back-end and using React in the front-end.

Possible mentor(s): DD063520, Gabinguo, AnBo-de, Aleksandr Perevalov

Expected size of project: 350 hours

Difficulty rating: medium

6. Command-line interface for Canasta edit

Canasta is a Docker image for MediaWiki that contains, in addition to core MediaWiki, a variety of skins and extensions that are geared for enterprise users. One thing currently lacking is a set of commands to make administration easier. Useful commands would include:

  • Installing a container
  • Updating a container (by deleting and reinstalling it)
  • Moving (cd) into the main directory of a Canasta installation
  • Backing up an installation's database and uploaded files
  • Restoring a wiki from a backup

If there is additional time, it would be great to also include:

  • Improved support for an installation within Kubernetes, instead of the default Docker Compose
  • Support for AWS and Microsoft Azure

It may be possible to make use of an existing CLI library for this task (like Cli), but most likely this would be better done as a new library, which could thus be created in any language. The current plan is to use Python for this set of scripts, although we are open to other options.

More details: T301893

Skills required: No skills are required, though knowledge of Docker, Kubernetes and Python would all be helpful.

Possible mentors: Jeffrey Wang, Yaron Koren

Expected size of project: 350 hours

Difficulty rating: medium

7. Deprecate VirtualRESTService edit

VirtualRESTService was introduced to encourage the internal use of HTTP services. This is similar to the older mechanism for internal calls to the web API, which now have been deprecated by T169266 (Clarify recommendations around using FauxRequest).

Since using VirtualRESTService has the same fundamental problems as using FauxRequest, it should also be deprecated and phased out. This should be simple enough, since it has never seen wide spread use.

The intention of this RFC is to remove the generic framework for exposing internal services via VirtualRESTServiceClient. Instead, those would use the native approach of a service locator like MediaWikiServices, without pseudo urls and path/query strings.

More details: T179680

Skills required: PHP, MediaWiki, Web Services, REST

Possible mentor(s): Daniel Kinzler, Derick Alangi

Expected size of project: 350 hours

Difficulty rating: medium

8. Campaigns Retention Metrics Dashboard edit

In Wikimedia, campaigns are activities run annually by many volunteer and partner-led communities to encourage new and existing users to contribute images, data and information in categories like earth, science, monuments, art etc. One of the key impacts of campaigns is, it acts as a way to introduce the Wikimedia projects for users who are new to the contributing side of it. Campaigns are considered to be an easy gateway for new users to get acquainted with the process of adding and modifying content across the Wikimedia projects like uploading a document/image to Wikimedia Commons or editing an article on Wikipedia. As new users enter the Wikimedia ecosystem through campaigns, it would be interesting to track the statistics of these users in order to understand user retention and quantify impact of campaigns in this area.

With inspiration from Wiki Loves stats tool, the idea is to develop a dashboard that can track and share retention metrics of participants, especially newcomers after a particular campaign ends. For this, we need to monitor the contributions of the users across Wikimedia projects after the end of a particular campaign. Initially, our scope will be limited to new users from photo campaigns and understand their retention over various Wikimedia projects after the end of the campaign over regular time intervals: 3, 6, and 12 months.

More details: T304826

Skills required: SQL and Python for data analysis (good expertise is required), basics of HTML/CSS + Flask/Django would be helpful.

Possible mentor(s): KCVelaga, Jayprakash12345, Sadads

Expected size of project: 350 hours

Difficulty rating: hard

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.