Google Code-in/2013

Google Code-In is a contest to introduce pre-university students (ages 13-17) to the many kinds of contributions that make open source software development possible. Students must complete tasks (see examples), one at a time. The Google Code-in 2013 contest runs from November 18, 2013 to January 6, 2014.
 * 2013-11-01: Mentoring Organizations for Google Code-in 2013 are announced (Google's announcement)
 * 2013-11-01: Wikitech-l: Google Code-in: YES, WE ARE IN! (our community annoucement)

Instructions for GCI students
These instructions are common to all the GCI tasks. Each category of tasks has further instructions.

(Coming soon, or feel free starting them)

Tasks
This selection shows the variety of tasks available. The descriptions of the tasks are not final, and we are still polishing them. We can generate more tasks for most categories. As a reference, currently we have identified about 240 annoying little bugs.

Code
(Mentors: please add here the common instructions for the tasks under this category)

Tasks related to writing or refactoring code.
 * [] Make SimpleSearch parameters to ApiOpenSearch configurable. has some detailed explanation; basically just add a new config variable to DefaultSettings.php and use it where appropriate. Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * [] Provide CSS class (hlist) to define horizontal lists in MediaWiki core. Entails copying a chunk of code from en.wp's common.css and pasting it into a new module in core (explained in detail in bug comments). Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * [] newmessageslinkplural and newmessagesdifflinkplural shouldn't use fake values for the number of changes. Details in . Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * [] Merge ExpandTemplates extension into MediaWiki core. Copy the new special page and register it the way core special pages are registered. Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * [] jQuery.makeCollapsible: support table captions. The code that needs to be modified is very straightforward (if a little boring and repetitive). Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * [] collapsibleTabs code cleanup: null != undefined, undefined variables passed to .data. Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * [] [Echo extension] Mention notification text broken if there is no section. Needs finding out the place where the link is constructed (just search for the message key that's used there), if-ing out the case where section is empty and adding&using a new message there. Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * [ & ] Interwiki tooltip shouldn't start with a dash on the main pages; interwiki tooltip: " should not be double-escaped. Explanation for each in bug comments; they're both simple fixes in the same area of code, so sticking them together. Matma Rex (talk) 18:34, 18 October 2013 (UTC)
 * [] Migrate legacy redirectToFragment to modern structure. It's a little function that needs love, things to do listed at . Matma Rex (talk) 19:36, 18 October 2013 (UTC)
 * [] Create a VisualEditor plugin tool to add/edit maths blocks: This was a GSoC 2013 project, but there is still a lot can be improved, such as . --Jiabao Wu (talk) 08:15, 26 October 2013 (UTC)
 * [] Make the Parser Functions extension deliver correct instead of guessed results of incomplete dates and make this behaviour configurable. Krabina (talk) 08:18, 4 November 2013 (UTC)

Kiwix for Android
Kiwix is a Wikipedia offline reader. These are tasks related to the new release of its Android app. Instructions to compile the app can be found here (Android section):
 * Share button, to help happy users to spread the word using chat/email/social networks.
 * Share this text selection, to allow to share a pre-selected text with friends using chat/email/social networks.
 * Fullscreen mode, to be able to fully enjoy Wikipedia articles.
 * Go back to top, an overlay button displayed a the end of any article to be able to quickly come back to it's top.
 * Add a simply history viewer, to allow in two clicks to travel back to a random article.
 * Add tabs, to allow to open many articles at the same time.

Lua templates
1. Wikipedia and other Wikimedia projects have dozens of old Wikitext-based templates waiting to be rewritten in Lua. We can list many more here. There is also Wikipedia:Lua requests. 2. Find TEI equivalent of Author template on Wikisource. - Rtdwivedi
 * en:Template:Taxobox / zh:Template:Taxobox (not exactly the same thing as the one in English Wikipedia)

4. Improvements to LUA modules
 * commons:Module:Languages needs cleanup: All template-constructions (e.g. in,  ,  ) should be substituted by calls to MW's LUA API,   should not use   (because it's too expensive), documentation must be added, ... Rillke (talk) 13:39, 2 November 2013 (UTC)
 * Compare and evaluate different documentation approaches for LUA modules in different Wikis and port the best elements to Commons. Rillke (talk) 13:43, 2 November 2013 (UTC)

JavaScript gadgets
This program is perfect for fixing and updating gadgets written in JavaScript. We are harvesting tasks from Gadget kitchen/Requests and Bugzilla.
 * Write and promote a module that detects both, usage deprecated JavaScript functions as well as extremely bad coding style and syntax errors in JavaScript files. This might be a good template. Rillke (talk) 14:11, 2 November 2013 (UTC)
 * Write a module using the above (deprecation checker) to iterate over all JavaScript files in a wiki's MediaWiki-namespace creating a report. Rillke (talk) 14:11, 2 November 2013 (UTC)
 * Identify gadgets at Wikimedia Commons and other scripts that still make use of deprecated functions and make suggestions how to replace them. Rillke (talk) 14:11, 2 November 2013 (UTC)
 * Create a script capable "packaging" gadgets so they can be shared with other wikis using ResourceLoader. Rillke (talk) 14:11, 2 November 2013 (UTC)
 * Bug fixes and new features for the slideshow
 * Fix the positioning/sizing-bug for the "main picture"
 * Toggle keyboard-observers when slideshow is closed/opened (so it does not interfere with other gadgets when closed)
 * Add option to hide the caption/info-container
 * Use thumbnails that are available on page (and thus do not have to be loaded again) for the thumbnail preview bar, if possible
 * Add Touch&Swipe support, for both the thumbnail-bar and the "main picture" for touch and mice (where it is actually drag&drop-like).
 * Create and document an API so external tools may a) provide a list of images asynchronously b) add jQuery-Objects or DOM-Elements to the caption/info-container (e.g a button for votes). Rillke (talk) 14:11, 2 November 2013 (UTC)
 * Apply MediaWiki's coding-style to Common's Stockphotot gadget, outsource style (maybe create a sprite for all the images), make it modular: Input: HTML-string; Output: An object containing all the links -- this allows us to re-use this gadget inside other tools. Rillke (talk) 14:17, 2 November 2013 (UTC)
 * Media uploads via websockets as HTTP multipart/form-data submission streaming to avoid firewalls.

Bots
PyWikibot is a Python-based framework to write bots for MediaWiki. The project just moved its bug database to Wikimedia's Bugzilla and there are many potential tasks to pick from.
 * Improvement of interacting with Wikidata including redesigning interwiki.py and improving harvest_templates.py Ladsgroup (talk) 17:25, 28 October 2013 (UTC)
 * Porting scripts and tasks of compat to core Ladsgroup (talk) 17:25, 28 October 2013 (UTC)
 * Making PWB compatible with Python 3 (forward compatibility). Ladsgroup (talk) 17:25, 28 October 2013 (UTC)
 * Improvement in efficiency of PWB when It's interacting with WMF Labs. Ladsgroup (talk) 17:25, 28 October 2013 (UTC)

Documentation/Training
(Mentors: please add here the common instructions for the tasks under this category)

Tasks related to creating/editing documents and helping others learn more. How can these students help fixing Bug #1?


 * [] Watchlist and recent changes should include a legend for the N, m, b, ± icons. They have description tooltips, the text could be reused with minor changes. Matma Rex (talk) 19:36, 18 October 2013 (UTC)
 * Review and polish browser test automation docs for newcomers.--Qgil (talk) 22:27, 22 October 2013 (UTC)
 * Sort out Category:Tutorials.--Qgil (talk) 22:27, 22 October 2013 (UTC)
 * More tasks to be extracted from Technical communications/What you can do. guillom 08:56, 23 October 2013 (UTC)
 * Unify 1, 2, [3https://wikisource.org/wiki/Wikisource:ProofreadPage 3], 4 to have a reference documentation for proofreading and use of ProofreadPage extension. Rtdwivedi 14:00, 4 November 2013 (UTC)
 * List the Lua modules active on various Wikisources here. Rtdwivedi 14:00, 4 November 2013 (UTC)

Outreach/Research
(Mentors: please add here the common instructions for the tasks under this category)

Tasks related to community management, outreach/marketing or studying problems and recommending solutions.


 * [] Make tutorial video on how to use Bugzilla.--Qgil (talk) 22:22, 22 October 2013 (UTC)
 * Create a Promotion landing page explaining ways to promote MediaWiki and related software projects. To be linked from How to contribute.--Qgil (talk) 22:34, 22 October 2013 (UTC)
 * How to get volunteers involved in Operations / sysadmin tasks. See Sysadmin hub & wikitech-l thread.--Qgil (talk) 22:34, 22 October 2013 (UTC)
 * Starter kit summarizing all the things seasoned MediaWiki editors and contributors assume and forget to explain.
 * Self-help guide to organize events. See Events kit and how WordPress does it.--Qgil (talk) 22:34, 22 October 2013 (UTC)
 * Plan a Guided Tour at mediawiki.org.--Qgil (talk) 22:34, 22 October 2013 (UTC)
 * Improve the confirmation email sent to new registered users and sync Template:Welcome.--Qgil (talk) 22:34, 22 October 2013 (UTC)
 * Check/update Wikimedia's info page at OpenHatch and SocialCoding4Good.--Qgil (talk) 22:34, 22 October 2013 (UTC)
 * What to do with the social media stats being collected at Talk:Community metrics?--Qgil (talk) 22:34, 22 October 2013 (UTC)
 * Sort out Wikimedia Mobile engineering pages.--Qgil (talk) 22:34, 22 October 2013 (UTC)

Quality Assurance
(Mentors: please add here the common instructions for the tasks under this category)

Tasks related to testing and ensuring code is of high quality.


 * [] Triage (test) any 10 of the Vector skin (default) issues tracked on . [There are currently 38 open sub-bugs, so this could be split in up to 4 tasks.] Matma Rex (talk) 15:55, 18 October 2013 (UTC)
 * First part: Read and understand Bug_management/Bug_report_life_cycle. Then edit the embedded file Bug_Life_Cycle_Diagram.svg with a Vector graphics application (e.g. Inkscape) and update the file (also the PNG version) to also include the recently introduced "PATCH_TO_REVIEW" status which only comes before "RESOLVED FIXED" (but none of the other resolutions). This needs graphic skills how to present information in a non-confusing way. Second part: Follow the steps on How_to_report_a_bug and check if they are all still correct in the new "guided bug entry form" which can be tested on . --AKlapper (WMF) (talk) 16:04, 22 October 2013 (UTC)
 * [] Continuous integration: Customize Jenkins email notifications --Zeljko.filipin(WMF) (talk) 17:04, 22 October 2013 (UTC)
 * [] Browser automation with Selenium + continuous integration: Select a set of stable and quick tests for smoke test suite --Zeljko.filipin(WMF) (talk) 17:04, 22 October 2013 (UTC)
 * [] Browser automation with Selenium + documentation: Extract browser automation setup information to a separate page --Zeljko.filipin(WMF) (talk) 17:04, 22 October 2013 (UTC)
 * [] Browser automation with Selenium: Investigate if Selenium can fake HTTP headers --Zeljko.filipin(WMF) (talk) 17:04, 22 October 2013 (UTC)
 * [] Browser automation with Selenium + documentation: Cleanup of Test backlog page --Zeljko.filipin(WMF) (talk) 17:04, 22 October 2013 (UTC)

User Interface
(Mentors: please add here the common instructions for the tasks under this category)

Tasks related to user experience research or user interface design and interaction.


 * [] Fix any 3 of issues reported with interface translation messages needing rewording or documentation tracked on . [There are currently 78 open sub-bugs, so even if not all fit this we have basically infinite supply. Some of them are more complicated, though… a quick triage might be needed.] Matma Rex (talk) 18:14, 18 October 2013 (UTC)


 * Make MediaWiki High-density display friendly. Bugs from [], some selected below:
 * [] Vector: Add SVG version of magnifying-glass icon. It would have to be redrawn as an SVG image (it's pretty simple) and added to our LESS styles with the background-image-svg mixin (like, for example, arrow-down-icon.svg). Matma Rex (talk) 19:36, 18 October 2013 (UTC)
 * [] Vector: Add SVG version of the watch star icon. Create and integrate an SVG version, and use CSS animation for interactive state. Possibly unifying with mobile assets ([). Pginer (talk) 11:04, 22 October 2013 (UTC)
 * [] Wikipedia and other site logos pixelated, blurry on high-resolution screens. Use vector-based version of logos. Pginer (talk) 11:04, 22 October 2013 (UTC)
 * [] Create and integrate an SVG version of the WikiLove "heart" icon. Pginer (talk) 11:26, 22 October 2013 (UTC)
 * [] WikiEditor: Add SVG versions of editing toolbar icons. Create and integrate a SVG version of several icons. Pginer (talk) 11:26, 22 October 2013 (UTC)
 * [] Link type icons are low-resolution. Create and integrate a SVG version for different link types (news, external...). Pginer (talk) 11:26, 22 October 2013 (UTC)
 * [] Enhanced Recent Changes collapse/show arrows are low-resolution. Create and integrate an SVG version. Pginer (talk) 11:26, 22 October 2013 (UTC)
 * [] RSS/Atom feed icon for sidebar is low-resolution. Find and integrate an SVG version. Pginer (talk) 11:26, 22 October 2013 (UTC)
 * [bug 56563] Create mockup for tour of Wikisource using GuidedTour. Rtdwivedi 14:00, 4 November 2013 (UTC)

Mentors' corner
First things first:
 * 1) Become an official mentor in Google's Melange.
 * 2) List above the tasks you want to create at the GCI site.
 * 3) Before starting creating tasks, please contribute to the common boilerplate text.
 * 4) Watch this page for more instructions, or ask for them.
 * 5) Be ready to learn with the rest of us along the way.  :)

Become a Wikimedia GCI mentor
Register as mentor. If you have technical problems send your GCI username to Quim.

Requirements of a task
All the tasks listed here must be also listed in Melange well before November 17, since that is the interface that students will use. We can discuss the details e.g. having a basic boilerplate task description pointing to bug reports with all the details.

Mentors can add tasks at any time, also after GCI has started. Usually this is what happens when students are finishing tasks, they have already learned about a specific area, and they want more tasks related to it.
 * Tasks are supposed to take 2-3 hours to an experienced contributor. It is fine if the first task takes even 2-3 days to a student because they must understand many concepts and setup their environment first. And it is also ok if students specialize in a type of task, so every new task takes less time to complete until they are also able to complete them in a couple of hours.
 * Tasks are self-contained. Students must be able to complete it without much knowledge of the context, or the background.
 * By default, tasks are described in a bug report with the keyword "easy" and 1-2 mentors CCed and volunteering explicitly in the comments.

A list of potential candidate bugs is available as the GCI candidate bugs saved search on Bugzilla (MediaWiki and extensions, +easy, -gci2013, no patches pending).

Candidate bugs should have " gci2013 https://www.mediawiki.org/wiki/Google_Code-In#Candidate_tasks " added to their Whiteboard field to make it easy to track them.

Org admins Quim Gil and Andre Klapper go through proposed tasks and confirm them. CC us in the bug reports.
 * [] Bug description. Detailed explanation. ~

Common instructions for tasks
We want to use common texts in tasks wherever it makes sense to simplify the process of creating good task descriptions. Let's draft different levels of common texts: generic for all, specific to a category, specific to a type of task. When creating a task, use the levels that make sense. Let's link to on-wiki instructions and background as much as possible. This gives us freedom to improve content without having to edit multiple tasks.