Google Summer of Code/2018/Ideas for projects

Ideas we showcased for the Google Summer of Code 2018 are below. Out of these 16 projects; we accepted proposals for 12 projects.

[Wikimedia Commons app] Feedback on how pictures uploaded to Commons get used: statistics, barnstars, light gamificationEdit

The Wikimedia Commons Android app allows users to upload pictures from their Android phone or 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. One-way communication can become monotonous, so how about a page that shows how the pictures uploaded are being used? The project aims at sharing feedback about uploaded photos, educating people about topic & copyright and adding some gamification to drive engagement.

Skills required Android SDK and UI design, understanding of RxJava, basic knowledge of Wikimedia APIs

More details

Difficulty easy

Mentors Vivek Maskara, Josephine Lim

[Wikimedia Commons app] Allow users to browse Commons from appEdit

The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. The main concern of Wikimedia Commons App is to upload photos to Wikimedia Commons. However, according to user feedback, people want to be able to search photos on Commons via the app also. We think this feature will also let people see examples, and consequently increase the quality of uploads.

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

More details

Difficulty easy

Mentors Neslihan Turan, Nicolas Raoul

[Education dashboard] Build an Article Finder tool for program leaders and participants to find good topics to work onEdit

The Wiki Education Programs & Events Dashboard is a Ruby on Rails + React.js application that helps people organize groups of newcomers to contribute to Wikipedia. It's used by the global Wikipedia Education Program for Wikipedia writing assignments in college and high school classes, the Art + Feminism editathon campaign, and many other thematic in-person and online outreach projects. One of the initial first steps towards successful Wikipedia authorship is the selection of appropriate content to edit or create. An "Article Finder" tool will help instructors and students search for and select articles in need of editing and contribution. The basic concept is to build a tool that lets users explore a particular topic area on Wikipedia to identify articles that are in need of improvement and are relevant to their program or event, so that participants have a good set of possible topics to work on. The dashboard has a rough, simplistic proof-of-concept, but it's not practical for use by instructors and program organizers and is not integrated into the rest of the dashboard.

Skills required Ruby on Rails, JavaScript, React.js and Redux, User interface design, etc

More details

Difficulty easy

Mentors Sage Ross, Jonathan Morgan

Improve the Cargo Special:Drilldown pageEdit

The Cargo extension's Special:Drilldown page provides an automated drill-down interface for all the data in a wiki stored via Cargo. It provides two major benefits: letting users see the overall layout of data at a glance (e.g., this wiki has information about 1,000 museums, 600 of which are in North America); and letting users find specific pages. It is a valuable tool, but there are many ways in which it could be improved. This project is about adding improvements to Special:Drilldown.

Skills required Knowledge of JavaScript, PHP and CSS are all required for this project. Experience with SQL would be very helpful as well, as would an interest in designing user interfaces.

More details

Difficulty easy

Mentors Yaron Koren, Derick N. Alangi, Feroz Ahmad

Add a spreadsheet interface for modifying multiple pages to the Page Forms extensionEdit

The Page Forms extension allows for editing only one page at a time. Normally this is fine, but in some cases an administrator or "power user" may want to change many pages at the same time - for instance, if there has been a change to the data structure, like a parameter/field getting added to a template. What is needed is a new "special page", defined by Page Forms, that displays a spreadsheet interface for editing many pages, where each row represents a single template call and each column represents a template parameter, i.e. form field. There may be more than one call to a template on the same page, so this interface would need to handle that case as well. This interface should most likely be implemented using the jsGrid library, which thankfully is already in use by Page Forms for other purposes.

Skills required Knowledge of Javascript and PHP required

More details

Difficulty easy

Mentors Yaron Koren, Nischay Nahata

Signed statements for WikidataEdit

Wikidata is Wikimedia's knowledge base. It holds data about all kinds of concepts in the world. Some of this data is donated by large institutions. It is then referenced to that institution. Since anyone can edit the data on Wikidata the data might be changed to something completely different from what the reference says. We'd like to give institutions the option to cryptographically sign the data they contribute. This will help keep the data quality in Wikidata high and the data useful as Wikidata grows.

Skills required Knowledge of Javascript, PHP and PGP required

More details phabricator:T138708

Difficulty medium

Mentors User:Amir Sarabadani (WMDE), User:Lydia Pintscher (WMDE)

Improvements for the Toolforge 'webservice' commandEdit

/usr/local/bin/webservice is a Python application used by Toolforge members to start and stop web services for their tools. This project is about fixing a lot of outstanding bugs and addressing feature requests to make this widely used command nicer.

Skills required Familiarity with Python, Toolforge and Wikimedia movement

More details

Difficulty easy-medium

Mentors Andrew Bogott, Bryan Davis, Madhumitha Viswanathan

[#1Lib1Ref] Build a "worklist" tool for campaigns and in-person editing eventsEdit

In various Wikipedia outreach campaigns and events such as editathons, participants often want to collaborate on improving articles that share a common theme or perhaps exhibit a common problem, such as being too short or lacking sufficient citations. For example, in the #1Lib1Ref campaign, librarians are encouraged to make simple edits to Wikipedia articles through the Citation Hunt tool, but we’ve observed that participants are also greatly motivated to make more substantial edits in articles about about their own cities, thus would like to be able to define a set of articles (or article sections) which need work. Many current activities or campaigns will currently manually develop these worklists on-wiki, which can be challenging to manage for new users, or require using tools not designed for tracking completion of limited tasks (for example, the Programs and Events Dashboard which tracks work by whole article or by editor.). To that end, we would like to develop a new tool to facilitate collaboration on worklists of articles that could be used for campaigns, in person editing events or other similar activities.

Skills required Familiarity with Python, Javascript, Toolforge, Database (MySQL) and Mediawiki API knowledge

More details

Difficulty medium

Mentors Guilherme Gonçalves, James Hare

Predict relevance of search results from historical clicks using a Neural Click ModelEdit

A research paper entitled "A Neural Click Model for Web Search" proposes generation of relevance predictions from click data using neural networks. The findings show a decent improvement over Dynamic Bayesian Network, which we use today. We have all the necessary input data to train this model; it would be nice to build it out and evaluate it's performance generating labels for our MLR pipeline . The prepared data would be aggregated click counts and contain no query strings. This task will require a reasonable amount of computing, so might require access to WMF analytics compute resources.

Skills required Research, familiarity with Python, and knowledge of Neural Networks

More details

Difficulty medium

Mentors Erik Bernhardson, Trey Jones

Improve Data Explorer on query.wikidata.orgEdit

Improve existing Explorer Dialog and Graph Result View.

Skills required Java Script, CSS, HTML.

More details,

Difficulty medium

Mentors Jonas Kress, Stas Malyshev

Convert MediaWiki extensions WikiLove, MassMessage and MultimediaViewer to use OOUIEdit

This project is about converting MediaWiki extensions WikiLove, MultimediaViewer and MassMessage to use OOUI.

Skills required Javascript, HTML, PHP, Familiarity with OOUI

More details

Difficulty easy

Mentors Prateek Saxena, Bartosz Dziewoński

Implement support for Flagged Revisions in PywikibotEdit

MediaWiki extension FlaggedRevs metadata is not available in Pywikibot. It would be useful to identify the edition of a Page which has been reviewed, and if a Page has any stable edition. This project will involve working closely with one Wiki community that has FlaggedRevs implemented, to ensure Pywikibot works correctly on that wiki.

Skills required Javascript, HTML, PHP, Python

More details

Difficulty medium

Mentors John Vandenberg, Gergő Tisza

Build a similar to @NYPLEmoji bot for Commons imagesEdit

People who tweet an emoji to @NYPLEmoji get a similar image from the collections in response. The code for the project lives here: The proposed project is about creating a similar bot for Commons images. It will introduce a lot of people to the Commons collection and because it uses emoji, not words, it would translate for mobile/desktop users worldwide.

Skills Required Analysis, basic software architecture, JavaScript, NodeJS, Toolforge

More details

Difficulty easy

Mentors Ariel Glenn, Sébastien Santoro, Derick N. Alangi

[Analytics] Improvements to Wikistats2 front-endEdit

Wikistats2 is the public statistics website of the Wikimedia Foundation. It is a public dashboard and dataset for metrics related to how people read and contribute to Wikimedia projects. This project contains ~12 subtasks that correspond to very easy to medium self-contained bug fixes and small improvements to Wikistats2 front-end.

Skills Required Familiarity with JavaScript, HTML, Vue and interest in data analytics

More details

Difficulty easy

Mentors Marcel Ruiz Forns, TBA

[Fund raising] Machine learning for fraud detectionEdit

WMF uses it's own fundraising forms in conjunction with the CiviCRM contact database. The proposal is to build a system that would learn from donation inputs & outcomes to better identify fraudulent donation attempts. (This project has been proposed by a prospective student)

Skills Required CiviCRM, Machine Learning, php

More details

Difficulty hard

Mentors Eileen McNaughton, TBA

Add a "User" filter to RecentChanges filtersEdit

Recent Changes Filters help users search through RecentChanges in a wiki in a controlled fashion with an array of filters. This task is meant to add another filter, a "user" filter, that allows to view results based on users or to exclude results that were edited by certain users from the list.

Skills required: PHP, JavaScript/jQuery

More details:

Difficulty: Medium

Mentors: Moriel Schottlender, TBA