Google Summer of Code/2019/Ideas for projects

Ideas we showcased for the Google Summer of Code 2019 are below. Out of these 12 projects; we accepted proposals for 10 projects. In addition, two other projects we accepted were proposed by students.

Make notification counts update without page reload
Extension:Echo provides a notification system for MediaWiki. This system includes a set of icons in the header that are updated with a count of notifications on page load. There is a long-standing request for the notifications count to update without requiring a page reload, similar to how Special:RecentChanges provides live updates.

This project will involve:


 * updating the notifications count via a polling mechanism. There is some existing code (Echo/+/126201, Echo/+/239766) and discussion that can be used as a reference point.
 * (optional) Writing the code and user preference to temporarily display the notification text using the mw.notify library
 * (optional) Providing a visual cue that the count has updated

Skills required Knowledge of JavaScript. PHP knowledge will be helpful

More details: T219222

Mentors Kosta Harlan (@kostajh), Roan Kattouw (@Catrope)

Build statistics toolset to support WM-HU editor retention grant
Wikimedia Hungary is kicking of a one-year project to improve editor retention in the Hungarian Wikipedia (supported by a WMF grant). See details here. Doing this effectively will require much more detailed statistics than currently available. This project is about building a contributor statistics portal for the Hungarian Wikipedia that displays statistics and editor lists relevant for the program.

Skills required Familiarity with PHP, Python or Node.js, MediaWiki's API, Hungarian Wikipedia, etc.

More details: https://phabricator.wikimedia.org/T218277

Mentors Gergő Tisza (@Tgr), Tamás Mészöly (@Samat)

Improve the interface of Special:ViewData in the Cargo extension
Extension:Cargo defines a page, Special:ViewData, that serves two purposes: a) display additional query results when a user clicks on "More results" from within a main set of query results and b) provide a user interface to run any Cargo query. The interface of the page could be improved to support text input with auto-completion, validation, format-based inputs, etc. It could be helpful to look at existing interfaces that do similar things like those of phpMyAdmin or the Semantic MediaWiki Special:Ask page for inspiration.

Skills required Knowledge of PHP, JavaScript, and Ajax and interest in interface design

More details https://phabricator.wikimedia.org/T213513

Mentors Yaron Koren

Add an editable calendar interface to Page Forms extension
This project is about adding an interface to Extension:Page Forms that allows creating and editing pages from a calendar interface. This interface would most likely use the FullCalendar JavaScript library. This interface may require the presence of the Cargo extension, or at least would have more features if Cargo is installed.

Skills required Knowledge of PHP, JavaScript, and Ajax

More details https://phabricator.wikimedia.org/T213759

Mentors Yaron Koren, Erik Biegert

Develop code samples in Javascript and PHP to demonstrate the use of MediaWiki Action API modules
Note: This project has received a lot of interest and contributions from potential candidates already and no longer needs more applicants.

This project is about developing sample code in two or more programming languages (e.g., Javascript and PHP) to demonstrate the use of MediaWiki Action API modules. Here is what this entails:


 * Design and embed a tabbed window on the API pages (like on the right here), possibly via a template or Gadget.
 * Generate code samples for modules that received documentation improvements in Phase 1 and Phase 2: Phab:T198916
 * Write a code generator (output files in Javascript or PHP) for modules supporting GET requests like here
 * Write sample code for API modules for which code generator may not work


 * Document the code samples on-wiki
 * (OPTIONAL) Develop one or two demo apps around the use of Action APIs

Skills required Basic PHP and/or Javascript programming

More details https://phabricator.wikimedia.org/T215681

Mentors Srishti Sethi, Sarah Rodlund

Develop a tool for use by Wikimedia event organizers to track developer activity
Note: This project has received a lot of interest and contributions from potential candidates already and no longer needs more applicants.

Wikimedia uses Bitergia's analytics tool for the technical community metrics. This tool provides useful information and is convenient for community managers who are familiar with its every know-how. However, this tool is cumbersome to use for others (e.g., sponsorship committee reviewers, event organizers, etc.) as it requires too many steps to obtain statistics for a topic and there is a bit of learning curve to get comfortable with the tool. AWMD stats tool generates monthly statistics of technical contributors to Wikimedia projects from Africa. Seeking inspiration from this tool, the goal of this project is to design and develop a proof of concept that demonstrates what an extended version of AWMD tool for use by others in the Wikimedia movement would look like.

Skills required Familiarity with Python and Web APIs

More details https://phabricator.wikimedia.org/T202233

Mentors Srishti Sethi, Derick Alangi, Suchakra Sharma

Implement support for Flagged Revisions in Pywikibot
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 https://phabricator.wikimedia.org/T57081

Mentors Gergő Tisza, John Vandenberg

[Education Dashboard] Create an Android app that acts as an alternative frontend for the WikiEducation Dashboard
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. This project is about creating an android app to act as an alternative frontend for the WikiEducation dashboard utilising the existing Ruby on Rails API, increasing the ease of access for the users.

Skill Required Knowledge of Java, Android and Ruby

More Details https://phabricator.wikimedia.org/T216179

Mentors Sage Ross

[Education Dashboard] Improve the Dashboard's capabilities for tracking the right set of edits for multi-wiki contributions
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. This project would revolve around improving the multi-wiki tracking for the dashboard, tracking just the right set of articles. The selected candidate would work on adding a clear UI and data model for multi-wiki contributions, also allowing to mark edited articles not to be tracked.

Skill Required Knowledge of React, Ruby and Ruby on Rails

More Details https://phabricator.wikimedia.org/T216181

Mentors Sage Ross

Create a subpage for statistics and charts related to a hashtag search
The Hashtags tool allows users to search for uses of hashtags (e.g. #1Lib1Ref) in Wikimedia edit summaries. Its current functionality is quite basic - a few simple search options and listed results, with the option to download the results as a CSV or read them as JSON. A number of Wikimedia campaigns use this tool to track edits and would like to be able to delve into the data a little more. We would therefore like to add a page users can click through to for a given search showing more detailed statistics, graphs, and charts.

Skill Required Familiarity with Python, Django and HTML/CSS.

More Details https://phabricator.wikimedia.org/T186706

Mentors Sam Walton, TBA

Add Structured Commons support to Commons Android app
The 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.

Structured Commons is really important for us because it allows our app to be truly multilingual.

Skill Required Android SDK, Android UI design, understanding of RxJava, basic knowledge of Wikimedia APIs and familiarity with Kotlin

More Details https://phabricator.wikimedia.org/T217265

Mentors Nicolas Raoul, Ashish Kumar

Improve the article recommendation pipeline
Article recommendation API suggests missing articles for creation. For example, here you can see that articles similar to 'Book' and identified by Wikidata item IDs are missing from enwiki and thus are being suggested for creation. These recommendations are useful for editors who either want to create articles from scratch or by translating existing articles. This project is about improving various parts of the article recommendation pipeline.

Skills Required: (one or a combination of) MySQL, Python, Javascript

More Details: https://phabricator.wikimedia.org/T217655

Mentors Bahodir Mansurov