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.

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

Code
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)

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
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.
 * en:Template:Taxobox / zh:Template:Taxobox (not exactly the same thing as the one in English Wikipedia)

JavaScript gadgets
This program is perfect for fixing and updating gadgets written in JavaScript. We are harvesting tasks from Gadget kitchen/Requests and Bugzilla.

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
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)

Outreach/Research
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
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
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)

Mentors' corner
The application deadline for organizations is October 28, 2013 at 19:00 UTC. 10 organizations selected will be announced on November 1. Check the instructions for mentors and org admins to know all the details.

We want to apply having at least 40 tasks with at least 5 from each of the 5 categories: code, documentation, outreach, quality assurance and user interface. Requirements of a task:
 * 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. ~