Google Summer of Code/2017

About
Wikimedia has applied as a mentoring organization for the Google Summer of Code 2017.

All major projects of Wikimedia are developed with help from contributors from all around the world using MediaWiki. MediaWiki is the software that powers Wikipedia, its sister projects and thousands of wikis all over the world. MediaWiki runs on most operating systems, is written in PHP, primarily uses the MySQL and MariaDB database servers and uses jQuery as the client JavaScript library.

Confused about the differences between MediaWiki, Wikimedia, Wikipedia and Wiki? Figure them out here.

To learn about the full program timeline, visit the official website.

Recommended Next Steps

 * 1) Look at the GSOC manual for students to get started.
 * 2) Learn how to have a successful project in the context of an outreach program with Wikimedia.
 * 3) Get a brief overview of projects available under Project Ideas section on this page. Choose a project that you really like and best fits your skill set. Express your interest in working on the project by commenting on the corresponding task on Phabricator. Post in the task comments, ask intelligent and explicit questions ("Could you tell me more about this?" is a bad example), do your research thoroughly, don't expect spoon-feeding. That's the recipe for a perfect intern!
 * 4) Learn basic skills required for contributing to the MediaWiki development.
 * 5) Read the guidelines to prepare a GSOC proposal. Examples of some really good proposals that were accepted for the previous round:
 * 6) * https://phabricator.wikimedia.org/T148287
 * 7) * https://phabricator.wikimedia.org/T147727
 * 8) * https://phabricator.wikimedia.org/T148074
 * 9) If you would like to work on your own project idea, communicate with relevant developers first.

Project Ideas
Watch this space for project ideas! We are in the process of recruiting projects and mentors for this round. Once they are finalized, we'll add them below.

Write a Zotero translator and document process for creating new Zotero translator and getting it live in production
Citoid is a service that allows people to easily add references on Wikipedias. It relies heavily on Zotero's translation-server, which in turn uses various translators to get citation metadata from specific pages. Watch the related tech talk here. However, it would be nice to have a page on MediaWiki that details how to do this with citoid specifically in mind. Learn how to write a Zotero translator here. However, this documentation is only available for writing translators for the browser plug-in, not translation-server. Translators often work both in the browser and translation server, but for citoid's purposes it is necessary for any new translators to work in translation-server, so more targeted documentation specifically for citoid would be nice. If relevant, adding/fixing documentation on Zotero's wiki as well as on MediaWiki can be part of the scope of the project. Writing a new translator for Zotero's translation server is also within the scope of the project as part of the process of documenting it. Translators are in Javascript. Familiarity with HTML is helpful as translators are essentially web scrapers. There are many requested translators on the translator repo so there are lots to choose from.

Getting Started

Follow the instructions to install Zotero's translation server: https://github.com/zotero/translation-server

Skills Required Javascript, Documentation

Tags VisualEditor, Citoid

Link https://phabricator.wikimedia.org/T115158

Mentors Marielle Volz, Czar, Luis Villa

Provide some love to the quiz extension
The Quiz extension was created by a volunteer and is currently installed on several WMF projects, such as Wikiversity. However, it is not under active development and there are a number of reported bugs as well as requested features. There are a number of tasks that should be done to improve the extension: Getting Started
 * Import all the bugs reported on the wiki page to the phabricator board. Here is an example.
 * Re-check and triage all of the old bugs
 * Fix any high priority bugs
 * Implement new desired features, for example T148613

Install mediawiki locally. It is easiest (often) to use vagrant for this. Quiz is not available as a role in vagrant, so follow these directions to manually add lines to LocalSettings.php in vagrant, and include the line require_once("$IP/extensions/Quiz/Quiz.php"); You can test that the extension is working by adding a sample quiz to your test wiki in wikitext. The quiz syntax is well documented here.

You can find the quiz extension in the vagrant repository by navigating to mediawiki/extensions/Quiz. If you haven't already, you will need to set up git, gerrit, and git-review, and install a Gerrit hook to begin submitting commits to the Quiz extension.

Skills Required PHP

Tags MediaWiki-extensions-quiz

Link https://phabricator.wikimedia.org/T148969

Mentors Marielle Volz, Sam Reed

Localize one or more major WMF software products related to new editor retention to hu.wikipedia
Like many other language versions, Hungarian Wikipedia is in a decline, driven by the inability to attract new editors. The Wikimedia Foundation and the movement produced various software to address that issue, but a significant part of that did not reach local communities because the last-mile effort of localization did not happen. ("Localization" is used in a wide sense here, including software localization on translatewiki.net, but also writing local documentation, adapting local gadgets, advertize new features to editors etc.). The primary goal of this project would be to improve that situation by improving the localization of some major software products. The secondary goal is to make such localization easier for other wikis easier by documenting the process and its learnings. The exact selection of software features is up for discussion and might depend on the candidate's skills and interests; some suggestions: There is rough consensus for most of these changes (see here for some past discussion).
 * VisualEditor: finish interface translation, translate and adapt documentation, identify most used templates and add TemplateData (possibly write software tool for converting hu.wikipedia's old template documentation system), enable Citoid, write Zotero plugins for major Hungarian information sources, convert the old CharInsert-based character map, make sure all custom edit buttons/tools for which it makes sense are ported, review gadgets on large wikis and import the most useful ones, update wiki help pages, popularize VisualEditor (especially amongst mentors) and forward feedback to Phabricator
 * Flow: finish interface translation, translate and adapt documentation, organize and set up a trial (see T119365), collect feedback, maybe help with adapting local bots
 * ORES: organize a workforce to finish the "damaging" campaign and possibly do other campaigns; if really ambitious, modify FlaggedRevs to use ORES scores for auto-reviewing
 * build a local version of the teahouse

Skills Required Tags Localization
 * Has to speak Hungarian
 * Community Engagement (ideally some level of familiarity with the Hungarian editor community)
 * Coding skills: Javascript would be the most useful; Python (esp. Pywikibot), Lua, PHP, MediaWiki templating skills could also be put to good use. Coding skills are optional - it's also possible to find enough work for an Outreachy-sized project by only picking subtasks which require no programming.

Link https://phabricator.wikimedia.org/T147618

Mentors Gergő Tisza

Implement a feature for MediaWiki’s Notifications tool: Make it possible for a logged-in user to get a reminder of an article after a few days
MediaWiki’s Notifications is an engagement tool for Wikimedia and MediaWiki sites to inform users about new activity in a unified way. It provides notifications to users of various events related to their account, including new talk page messages, edit reverts, mentions, or links. The goal of the project proposed is to add a functionality in the Notifications tool that allows logged-in users to get a reminder of an article after a few days. The Notifications project is being developed by the Wikimedia Foundation’s Collaboration team. Some getting started resources: Skills Required PHP, Javascript, familiarity with MediaWiki in general
 * Get a quick overview of the basic skills needed for MediaWiki development: https://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker
 * Browse the technical developer guides of the Notifications project: https://www.mediawiki.org/wiki/Notifications

Tags Notifications

Link https://phabricator.wikimedia.org/T2582

Mentors Moriel Schottlender (IRC username & channel: mooeypoo #wikimedia-collaboration, Phabricator), Matthew Flaschen (IRC username & channel: matt_flaschen #wikimedia-collaboration, Phabricator)

Some other ideas
Look through the possible-tech-projects for more project ideas. Some of them might not be ready to be mentored (for example missing discussion or mentors), but if you show your interest in working on those projects, it's likely that someone from the community would be willing to support you!

Contact

 * For any application or program-specific question, come and talk to us in the IRC channel #wikimedia-devrel or reach out to the organization admins Srishti Sethi ssethi[at]wikimedia[dot]org or Anna Liao.
 * For a project-related question, either communicate with mentors on the corresponding task in Phabricator or reach out to them in their project's IRC channel.
 * Mailing list for program specific discussion: wikitech-l@lists.wikimedia.org.