User:SPQRobin/GSoC/application

Identity

 * Name: Robin Pepermans
 * Email: robinp (dot) 1273 (at) gmail (dot) com
 * Project title: Incubator improvements and language support

Contact/working info

 * Timezone: Europe/Brussels (UTC+2)
 * Typical working hours: 11am to 2-3am (UTC+2), but in the first part I have often less time, more like 8pm to 1-2am
 * IRC or IM networks/handle(s): SPQRobin

Project summary
This project is a follow-up to my ongoing work as a volunteer to improve the language support in MediaWiki and to improve the usability of the Wikimedia Incubator.

I would like to include a default list of languages names in English, which is currently in Babel but can be useful in MediaWiki in general, and also for WikimediaIncubator specifically because the automatic info pages otherwise do not recognise language codes such as Wt/max. I'd also improve the current automatic info page on Incubator and extend it to be used as a replacement for Template:Test_wiki. This will include a special page that guides contributors in their first steps to start on Incubator and start a test wiki.

This will be an improvement, on the one hand in core MediaWiki by avoiding duplication of including language names (it is in Babel but would benefit MediaWiki generally), extending its coverage and improving performance. For Incubator there will be a usability benefit by making it easier and more clear starting a new wiki, as well as hopefully making maintenance easier for Incubator administrators.

Required deliverables
Core WikimediaIncubator
 * A cache (probably CDB) for language names (there is currently a performance issue when using the second parameter of  a lot of times). This will enable providing more language names (like those from CLDR) also when not using the second parameter.
 * Include a default list of (English) language names in MediaWiki core, which is currently in Babel but outdated and which will be useful in MediaWiki core for other uses including Wikimedia Incubator
 * Improve the current automatic info pages like Wp/nl and Wt/xyz
 * The project logos should use the localised versions (via wgConf)
 * The info page of missing wikis should include a link "if you want to start this wiki" to a special page ("IncubatorFirstSteps")
 * Create a special page ("IncubatorFirstSteps") that lets you create the main page of the respective test wiki, then update the info page (by creating it using the parser function mentioned below), and set your preferences
 * A parser function for info pages as an improved replacement for incubator:Template:Test_wiki, like  which will show an info page similar to the current one
 * In cases where language codes need to be entered (such as in preferences and in recent changes), it needs to be possible to select the right one with a auto suggestion/filtering of language names/codes (perhaps like the priority languages of the page translation feature)

If time permits
More ambitious things that are likely a bit too much work to include in this project.


 * (Core) Ability to specify a per-page language: a per-revision language passed to getPageLanguage, either core or extension. With a language selector in the edit page to change it.
 * (Core) Intuitive language picker: instead of a list sorted by language code (on Special:Preferences, ...), use an inputbox with suggestions (maybe similar to the one mentioned above)
 * (WikimediaIncubator) If possible, hide prefixes (Wx/xyz/) of links and template calls in the edit form, i.e. you would see  Page title  instead of  Wx/xyz/Page title  but the prefixes are kept or added when saving the page

Project schedule

 * April: familiarize with Git/Gerrit, and maybe set up the Labs project where I could test development (http://incubator-dev.wmflabs.org/, http://incubator.wikimedia.beta.wmflabs.org/)
 * May: plan how to concretely code the various deliverables, coordinate with mentor
 * [May 21: begin coding]
 * First half (Note: exams from about 30 May until 21 June, so I will have less time but still working on it)
 * 21 May - 1 June: language names cache
 * 2 June - 15 June: English languages in core
 * 16 June - 30 June: code IncubatorFirstSteps
 * July 1-9/13: finish anything required (bugfixing, ...)
 * [July 9-13: Mid-term evaluations]
 * July 9/13 - July 20: code info page parser function
 * July 21 - August 1: improve automatic info page (integrating the special page; use localised logos);
 * August 2 - August 10: the language code inputbox improvement
 * August 11 - August 13/20: finish anything required; perhaps any other thing listed as "if time permits"
 * [August 13-20: end]

About you
Starting as a Wikipedian, I became a Wikimedian and since last year an active MediaWikian (:p). Even though I'm studying something like public management (including parts of political sciences & law), I enjoy coding and I love languages.

I believe in making Wikimedia and the MediaWiki software a very multilingual and internationalized project, and that is what I try to work on as much as I can. I work as a volunteer together with the internationalization team, and I've participated in the Mumbai Hackathon to help out.

I also believe in making the Incubator as open as possible so anyone can start a wiki in their own language. I created the WikimediaIncubator extension, which makes things easier on the Incubator. I'm one of the main administrators there.

I'm also a member of the language committee, which approves projects that are active on Incubator into their own separate wiki.

I've also been active on translatewiki.net, both as a translator to Dutch and helping out generally.

Participation
I would commit directly to trunk and the WikimediaIncubator extension (which is already deployed). I still have to get used to Git/Gerrit though :)

When I am online, I am almost always available on IRC (#mediawiki, #mediawiki-i18n, ...). I can communicate my general progress on my blog (blog.robinpepermans.be).

After this project, I will certainly still participate in improving MediaWiki.

Past open source experience
I am a regular contributor to the MediaWiki codebase. I have especially created the WikimediaIncubator extension, and improved the MediaWiki internationalisation, in particular bidirectional support and by introducing the page content language. I have also worked a bit on the Interwiki extension and other extensions. See here for all my commits (at the moment of writing I haven't done any Git commits yet).

Consequently I am familiar with the MediaWiki code, and I learnt a lot of PHP programming through hacking MediaWiki. I also know of course HTML and CSS, but not as much JavaScript as I would like to.

(I also have a toolserver account of which the code is mostly public.)

Any other info
See also Extension:WikimediaIncubator.