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, one at a time.

Slides summarizing Wikimedia's first participation in Google Code-in 2013.
Weekly summary of tasks.
Google Code-in 2013 grand prize award winners

Check Wikimedia's list of tasks in Google Code-in.

The Google Code-in 2013 contest run from November 18, 2013 to January 6, 2014.

Instructions for GCI students edit

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

Feedback and support edit

Each GCI task specifies a public community channel for related questions and comments that might be more efficient than Google Melange. Identifying yourself as a GCI student may help you getting more/faster help from other contributors in addition to your mentor(s).

  • Sometimes the channel is a bug report. See Bugzilla (except for Kiwix tasks which use Sourceforge instead).
  • Sometimes the channel is a wiki discussion page. See Help:Talk pages.

For feedback not tied to a specific task you can use more generic channels like IRC or mailing lists. Avoid private email or support requests in our social media channels. Please be patient when asking questions. Learn more at Communication.

The code of MediaWiki, its extensions, and Wikimedia's server configuration is located in Git repositories. You are expected to provide your work (patches etc.) in both Google Melange and Wikimedia Gerrit for review. See Developer access and Gerrit/Tutorial for more information. In case you have problems with Gerrit, providing your work in the corresponding bug report in Wikimedia Bugzilla is an acceptable workaround.

Suggested reading edit

If you choose a code-related task, you might want to at least skim these pages first to avoid unnecessary setbacks during the review process:

Communicate soon and often edit

If your task has a related bug report, comment on the report that you have started the work and request to have it assigned to you.

If your task requires the creation of wiki pages, create them to draft your text from scratch, and communicate in the Google Melange task the URL of the new page.

By communicating early you will get more attention, feedback and help, not only from your mentor(s) but perhaps from other community members as well.

Once you have started, feel free sharing your progress (or lack of it) as you accomplish little milestones or you get stuck in a problem. As long as you communicate through bug reports or discussion wiki pages you don't have to worry about spamming people: those who follow these bug reports and wiki pages are interested in your work.

Contacting mentors edit

Please be patient when seeking actions from mentors. Think that mentors are humans that eventually leave their laptops to sleep, work, study... Also they might be in different timezones than you.

On IRC, don't ask to ask, just ask: most questions can be answered by other community members too if you ask on a channel. If you can't find your mentors NOW and nobody answers, please ask on the bug report or wiki page related to your task, don't just drop the question. Org admins might be also able to help.

Name IRC nick IRC channel Timezone
Addshore Addshore #wikidata connect CET / UTC +1
Andre Klapper (org admin) andre__ #wikimedia-dev connect CET / UTC +1
Aarti Dwivedi Rtdwivedi #wikimedia-dev connect IST / UTC +5:30
Chris McMahon chrismcmahon #wikimedia-qa connect MST UTC -7
Federico Leva (not in melange) Nemo_bis #mediawiki-i18n connect CET / UTC +1
Guillaume Paumier guillom (or basile when I'm away) #wikimedia-dev connect CET / UTC +1
Himeshi De Silva himeshi #semantic-mediawiki connect IST / UTC +5:30
Jiabao Wu
Kelson Kelson #kiwix connect CET / UTC +1
Liangent
Bartosz Dziewoński MatmaRex #wikimedia-dev connect CET / UTC +1
Pau Giner pginer #wikimedia-design connect CET / UTC +1
Quim Gil (org admin) qgil #wikimedia-dev connect PST / UTC -8
Strainu
Željko Filipin zeljkof #wikimedia-qa connect CET / UTC +1
Kartik Mistry kart_ #wikimedia-i18n connect IST / UTC +5:30
Praveen Singh prageck #wikimedia-dev connect IST / UTC +5:30
Harsh Kothari harshkothari #mediawiki connect #mediawiki-i18n connect IST / UTC +5:30
Jeff Hall JeffHall #wikimedia-qa connect PST / UTC -8
Runa Bhattacharjee arrbee #mediawiki-i18n connect IST / UTC +5:30

Mentors' corner edit

The following section is only interesting for mentors of GCI tasks.

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 edit

Register as mentor, and then request a connection with Wikimedia through "My Dashboard". Quim and Andre will receive a notification and will accept you. From that point you will be able to create tasks, add yourself to tasks, add other mentors to your tasks...

Requirements of a task edit

All the tasks listed on this wikipage must be also listed in Google Melange well before November 17, since that is the interface that students will use. A basic boilerplate task description pointing to bug reports should be added below.

Please add new tasks directly in Google Melange instead of this wikipage. 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.

Bugs which have been made into GCI tasks should have "gci2013" added to their Whiteboard field to make it easy to track them. You can add the URL to the task definition in a comment or URL field.

A list of bugs which have a corresponding GCI task already
ALL whiteboard:gci2013
A list of potential bugs fitting for GCI
MediaWiki and extensions, +keyword:easy, -whiteboard:gci2013, no patches pending ("GCI candidate bugs" saved search).
  • Bug description. Detailed explanation with full URL link to corresponding bug report and links to any information that could be helpful. Hours that it takes to complete the task (be generous!). Arbitrary tags that can be searched for (e.g. programming language). Name of the mentor(s): ~~~~

Org admins Quim Gil and Andre Klapper go through proposed tasks and confirm them. CC us in the bug reports.

Common instructions for tasks edit

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.

For all tasks edit

The last sentence of each task description in Google Melange must be:

Students are required to read 
<a href="https://www.mediawiki.org/wiki/Google_Code-in_2013#Instructions_for_GCI_students">Wikimedia's general instructions</a> first.

Kiwix for Android edit

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). This requires knowledge of the Java programming language. You also need a GNU/Linux distribution. Go to https://sourceforge.net/p/kiwix/kiwix/ci/master/tree/, checkout the code and follow step-by-step the instruction for Android of the "COMPILE" file.

User Interface: SVG Graphics edit

This task requires existing graphics skills working with a Vector graphics application (e.g. Inkscape). Links to SVG file(s) that you have created are welcome. Basic knowledge of CSS might also be helpful for integration.

Pywikibot edit

PyWikibot is a Python-based framework to write bots for MediaWiki. Patches can be submited through the gerrit uploader (you need a MediaWiki.org account). More documentation on gerrit can be found here. After you have successfully claimed this task in Google Melange please do use the bug report in Bugzilla for communication instead of Google Melange. This allows more PWB developers to be reached! General development questions can be asked on the Pywikibot mailing list and the #pywikibot IRC channel.

Visual Editor edit

VisualEditor is MediaWiki's WYSIWYG editor. You can find out more about it here.

Workflow edit

When a student submits a task for review, and you find it is not complete yet, you must change the status of the task to "Needs work". Then you can get back to the student with details to finish the task at Gerrit / Bugzilla / wherever you have agreed. The first time you do this in the task you should also comment in Melange where your feedback is located, just in case.