Google Summer of Code/2023

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

Read information for participants  Read information for mentors

Program timeline
See full timeline

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

1. Commons Android app: Make upload more reliable
Built with Java and Kotlin, this Android app allows contributors to upload pictures they have taken with their phone/tablet to Wikimedia Commons. Unfortunately, upload often fails, and loses some metadata. The goal of this project is to fix these few bugs. Our friendly team mostly uses GitHub and chat for code collaboration.
 * Tech stack: Java, Kotlin
 * Mentor(s): Syced, Kaartic (maintainer of the app).
 * Relevant links: GitHub issue, Phabricator issue

2. Improve the functionality of VideoCutTool
VideoCutTool is a tool to edit videos in Wikimedia Commons. It's widely used by the volunteers to edit videos on the fly and re-upload back to Commons in simple few clicks instead of downloading video from Commons and using external software applications to edit and re-upload. The goal of this project is to improve the tool, fix some existing bugs, add additional functionality and write the unit tests.
 * Tech stack: React JS, Node JS
 * Mentor(s): Vasanth Gopa, Soham
 * Relevant links: Phabricator issue

3. Adding a Menu and Keyboards to Scribe-iOS
Scribe makes Wikidata powered keyboards that help language learners remember grammar points as they type :) For GSoC we'd like to work with one or more mentees to improve the base app experience and add keyboards so that more people can make use of Scribe. These tasks will add skills with Wikidata Query Service, Swift and Python.
 * Tech stack: Swift, Wikidata Query Service Scripts, Python
 * Mentor(s): Andrew McAllister
 * Relevant links: GitHub issue for a new menu, New keyboard issues on GitHub

4. End-to-end test coverage for Abstract Wikipedia's Wikifuntions
Abstract Wikipedia is an idea that people can create and maintain Wikipedia articles in a language-independent way. A particular language Wikipedia can translate this language-independent article into its language. Code does the translation. This code will be run on Wikifunctions.

Wikifunctions is a new Wikimedia project that allows anyone to create and maintain code. This is useful in many different ways. It provides a catalog of all kinds of functions that anyone can call, write, maintain, and use.

When Wikifunctions launches, the team wants the core features to be covered by end-to-end test that can be run against any patch review. We are leveraging existing selenium tools and patterns to write the tests, and a novel GitLab Kubernetes based CI pattern that integrates with Gerrit (MediaWiki's legacy git version control server).

The aim of this GSoC project will be to write e2e (end-to-end) tests using Selenium and integrate them into the Wikifunction pipeline. A stretch goal of this project working on "production-izing" pipeline itself, and documenting the pattern for other teams to evaluate and implement.


 * Tech stack: Javascript, Selenium, GitLab CI, Kubernetes, Rust
 * Mentor(s): SDunlap-WMF, Jdforrester (WMF), CMassaro (WMF), Denny
 * Relevant links: Phabricator issue

5. Improve Programs & Events Dashboard UX for Article Scoped Programs
Programs & Events Dashboard has a powerful set of features for defining the scope of articles that you want to track edits to, which are enabled by selecting the 'Article Scoped Program' event type. However, these features are not very intuitive or discoverable. The goal of this project is to improve the event creation user experience so that event organizers can more easily configure the Dashboard to track only the articles they want to track, using whichever of the available scoping methods (assignments, categories, templates, PetScan, and/or PagePile) is most appropriate for their program.

The user interface should explicitly note the methods for scoping a course at the point of choosing the program type, it should guide users who have created an ArticleScopedProgram that doesn't have any in-scope articles yet on how to set up the desired scoping, and it should make the current scoping settings more obvious (eg, as part of the Home tab) when viewing such a program.

The event creation UI is primarily done via a client-side frontend built with React.js. Advice for prospective interns working on the Dashboard.
 * Tech stack: Web design / prototyping, React.js, Familiarity with Ruby is helpful but not required, Familiarity with wikis and/or Wikidata helpful but not required, Experience with or interest in user research helpful but not required
 * Mentor(s): Sage Ross
 * Relevant links: Phabricator issue

Recommended steps for accepted candidates
See Google_Summer_of_Code/Participants

Contact

 * Reach out for general questions on the #gsoc23-outreachy26 Zulip chat.
 * Organization administrators for this round are: Gopa Vasanth, Srishti Sethi, Soham Datta.
 * Read how to communicate effectively and get help on technical questions.