Google Summer of Code/2022

Read information for participants  Read information for mentors

Program timeline
Also see the full timeline.



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

Edit Request Wizard
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

Improve the picture selector of the Commons Android app
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

Modernize JavaScript build process and dependencies for Wiki Education Dashboard
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

Rewrite the Wikidata Infobox on Commons in Lua
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

Extending the WikidataComplete plugin for enabling data donations, recommendations, and gamification
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

Command-line interface for Canasta
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

Deprecate VirtualRESTService
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

Contact

 * Reach out for general questions on the #gsoc22-outreachy24 Zulip chat.
 * Organization administrators for this round are: Srishti Sethi, Jay Prakash, Gopa Vasanth,  Aisha Khatun.
 * Ask a technical question in the support places.