Google Summer of Code/2020/Ideas for projects

Ideas showcased for Google Summer of Code 2020 are below.

Develop a mechanism to send Wikimedia-specific Zulip welcome messages
New contributors find their way to Wikimedia's Zulip chat quite frequently. It is also used for GSoC, Outreachy and GSoD discussions. One of the first questions they usually ask is information on getting started. The answer seems to be fairly consistent -- pointing them to some beginner resources. In this project, we try to develop a mechanism to automate this process.

More details: T233478

Skills required: Python3 (+ any Python framework), JavaScript (+ any JS framework) and Linux Administration (for Toolforge)

Mentors: Pavithra Eswaramoorthy, Derick Alangi, Medha Bansal

Remove use of jQuery UI from Page Forms
jQuery UI is a library that was added to MediaWiki in version 1.16, in 2010, at the same time as its "sister" library, jQuery. jQuery remains popular (and extremely useful), but jQuery UI is not popular, at least among MediaWiki developers. This project involves removing the use of jQuery UI from Page Forms - A MediaWiki extension that allows users to add, edit and query data using forms.

More details: T241632

Skills required: PHP, JavaScript

Mentors: Yaron Koren, TBD

Support 'maps' parameter in TemplateData GUI editor
TemplateData is a MediaWiki extension that introduces a tag and an API which together allow editors to specify how templates should be invoked. This project involves supporting the 'maps' parameter in the TemplateData Editor directly. Currently, it is only possible in source editing mode. The maps parameter is used by citoid and other third-party gadgets, and supporting it would be a good addition.

More details: T208305

Skills required: JavaScript

Mentors: Marielle Volz, Thalia Chan, Moriel Schottlender (only available for answering high-level questions related to the codebase)

Internet in a Box Enhancement
Internet in a Box (IIAB) is a platform to provide offline access to Wikimedia Foundation wikis and other content and applications. It is used by Wiki-Project Med as an information appliance for Healthcare Providers. This project involves implementing some technical enhancements to IIAB.

More details: T242997

Skills required: TBD

Mentors: Tim-moody, Pratyush Singhal

Develop an editing widget for Proofread Page extension
The pagelist creation process supported by the Extension:Proofread Page, in its current shape and form, is difficult for new users, and not particularly fast for experienced users. This project is about developing a new editing widget for it, so it can be edited more easily without relying on external applications.

More details: T172953

Skills required: Familiarity with PHP & JavaScript

Mentors: Sam Wilson, Satdeep Gill

Add leaderboard based on user's edits using Commons Android app
The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Commons is not only the image repository for Wikipedia, but an independent project that seeks to document the world with photos, videos and recordings. This project is about adding a leaderboard based on user's edits using Commons. The feature will include only edits made with the mobile app, and users who have shown interest in this activity.

More details: T244197

Skills required: Android SDK, Android UI design, Understanding of RxJava, Basic knowledge of Wikimedia APIs

Mentors: Vivek Maskara, Nicolas Raoul

Improve Wiki Education Dashboard's error monitoring
The Wiki Education Dashboard is a Ruby on Rails + React app that runs dashboard.wikiedu.org as well as outreachdashboard.wmflabs.org. For this project, you'll develop a system for capturing and surfacing errors in the course update process, so that it's easy for users to find out what went wrong with their particular course when data-related errors occur. This will involve capturing data about such errors when they occur, saving it in association with a particular course, and displaying that information in an appropriate way to Dashboard program leaders and admins.

More details: T244428

Skills required: Requires knowledge of Ruby and Rails, experience with JavaScript, and particularly React, will be helpful.

Mentors: Sage Ross, TBA

Improve Wiki Education Dashboard javascript build pipeline and reduce bundle size
The Wiki Education Dashboard is a Ruby on Rails + React app that runs dashboard.wikiedu.org as well as outreachdashboard.wmflabs.org. The app has a JavaScript frontend built mostly in React, but it's evolved gradually over the last several years, through a number of trends in JavaScript frontend technology. The build uses both  and , and there are a number of libraries — including jquery — that should be updated or in some cases removed. The focus of this project will be to improve the Dashboard's build tooling.

More details: T244427

Skills required: Requires knowledge of JavaScript; experience with React and with configuring and using Webpack will be very beneficial. Knowledge of Ruby and Rails will be helpful, but not necessary.

Mentors: Sage Ross, TBA

Add 'Reverted' filter to RC Filters
The RecentChanges page contains a list of recent changes to Wikipedia. It would be valuable to be able to filter out or highlight edits that have already been "rolled back" or "undone". This can be a huge improvement for using Recent Changes as a review tool, reducing the effect of stepping onto other reviewers feet (reducing frustration and saving time). This project will involve tagging edits that have been reverted with a "reverted" tag, and then expanding on the tooling (T152434) to improve revert detection.

More details: T164307

Skills required: Requires knowledge of PHP.

Mentors: Kosta Harlan, Roan Kattouw

Design and Develop a tool to correct false depicts claims manually on Wikimedia Commons
A significant part of structured data has been entered through other applications(tools) which have been developed to collect structured data for the images on Commons. Though this is a fast way to collect structured data, we realized that in tools like ISA, where campaigns are organized and the participants will have prizes as top contributors, this may push some participants to enter ‘wrong’ or ‘unclear’ information which needs to be verified. In this project we try to build a tool which volunteers/admins will use to verify the structured data which have been added.

More details: T245758

Skills required: Python,Javascript and related libraries,HTML/CSS,SQL

Mentors: Eugene Egbe, Navino Evans

Create or improve a tool for monitoring or automating tasks for Wikimedia databases
Wikimedia uses over 200 MariaDB instances to store content and metadata for Wikipedia and other free knowledge projects. While standard open source tools for both monitoring and automation are used when possible, there are some tasks that require custom development. There are 2 options for a project to choose here:

1. Proof of concept of a web-based dashboard that will be used for inventory and/or summary of the status of the MariaDB fleet. While there is already an existing tool, Tendril, it has degraded over time and doesn't take advantage of (or integrate with) modern technologies available at Wikimedia such as prometheus+grafana metrics monitoring, performance_schema, pt-heartbeat, or our database backup system. There is also the need of a d3-based (javascript) replacement for https://dbtree.wikimedia.org.

2. Small-scope command line utilities to perform maintenance and monitoring tasks, such as: data checks between servers, data transfers, consistency checks between data and metadata, strange MariaDB process monitoring, and more. Integration of existing libraries and tools should be preferred when possible, rather than custom solutions, as well as focusing on future extensibility and maintainability rather than a large scope.

Skills required: Python (preferred) or PHP, SQL

More details:

Mentors: Jaime Crespo aka #jynus, Manuel Arostegui

Upgrade WebdriverIO to the latest version for all repositories
We use WebdriverIO as a browser driver for our test automation framework. We are currently using version 4. Version 5 was released more than a year ago. Version 6 will be release any day now.

More details: T247844

Skills required: JavaScript/Node.js

Mentors: John Bolorinos, Željko Filipin

Evaluate WebdriverIO replacements for our browser automation framework
We use WebdriverIO as a browser driver for our test automation framework. There are at least a couple of good alternatives. Evaluate how much work would it be to switch to an alternative.

More details: T247835

Skills required: JavaScript/Node.js

Mentors: Jose Gabriel Pita, Željko Filipin