Extension:Translate/Usability improvements 2014

Critical bug fixes for Translate extension
 Public URL:  https://www.mediawiki.org/wiki/User:Kunalgrover05/GSoc_Proposal  Bugzilla reports: Bug 35489, 51533,  37297 & 39415,  34098, 36298

Name and contact information
 Name: Kunal Grover  Email: kunalgrover05@gmail.com IRC Nick:  kunalg on freenode, channels: #mediawiki and #mediawiki-i18n Mediawiki User Profile: Kunalgrover05 GitHub page:  Github page Timezone: UTC+5:30 (IST - India) Location: New Delhi, India Typical working hours:  10 am - 4 pm and 8 pm - 12 am (IST) (Flexible to ensure deadlines are kept)

Current experience with Translate extension and Mediawiki
Setup the development and debug environment for working with Mediawiki core. Installed and configured the Translate extension on my local machine. Basic familiarity with code and coding conventions. Worked towards solving a few bugs.

Project outline and approach
The wiki page translation feature of the Translate extension has become really successful for multi-lingual wikis. It has been implemented in several wikis. There is a list of improvements which needs to be implemented in order to ensure smooth user experience and further expansion.

Optionally translatable page title when using the Translate extension
The page title while using translate extension is always selected for translation. In a few cases, the title mightn't be relevant and it shouldn't be translated. So, it should be possible to choose whether to translate the page title or not, as it would save translators' time. Requirement: Translating title of a page should be optional and it should be possible to select whether it should be translated while submitting the page for translation. Approach: When submitting a translation, to implement a checkbox for the admin who can select whether to have it for translation or not. By default the checkbox should be unchecked ie title not selected for translation.

The content language for multilingual wikis should not be fixed
Currently the Translate extension assumes that the source language of the translation is the same as the content language of the wiki. The user is unable to set the page source language. It makes the extension less useful on wikis with multilingual content where content might be created in any language and the translation tool used to make it available in the other languages of the wiki. Requirement: Ability to change the content language on a per page basis so that content can be created in any language. Translators should be able to see the page in a language of their preference if a translation exists and is reviewed. Approach: The feature needs to be implemented in Mediawiki core. Each page should have a language selector which can be stored in the database as a "property" of the page so that content can be created in any language. The page can then be translated by translators into other languages. The translate extension should be able to read the content language of the page.

Translated page is not updated when moving or deleting translation units
Requirement: When deleting or moving a page that is a unit in a translatable page, that translatable page has to be updated. Approach: The process can be fixed by having a hook to whenever a unit translatable page is deleted or moved which runs the fuzzy bot to update the translatable page.
 * If a single translation unit page is deleted, the translation page won't be updated to reflect it. Current work-around is to make a dummy edit on another translation unit page which is very inconvenient.
 * In case of moving a single translation unit page, the change doesn't show the change on either of the translation pages.
 * Example from Bugzilla: In case of translatable page A/zh, A/ja, Translation:A/str1/zh (Translation:A/str1/ja does not exist). If Translation:A/str1/zh is moved to Translation:A/str1/ja, neither A/zh nor A/ja is updated.

Redesign of interface on pages and language bar.
The interface on pages has some issues which need to be addressed
 * Language selection takes too much space and is difficult to use in case of many languages.
 * Indicators
 * Completion indicators on page regarding translation being 100% complete and % of completion are unnecessary for most users.
 * Header 'This page is a translated version of...' is obtrusive for readers.
 * Integrating 'Mark page for translation' for administrators as well in language bar in order to reduce space required.
 * Indicator for page having been translated needn't be on top of page.
 * Need to manually add tag to the page.

Requirements: Approach:
 * Design a less bulky interface for translation and selecting language.
 * Integrate submitting for translation in the language bar.
 * Unnecessary indicators and headers should not be on top of page.
 * Placement of Headers and Indicators
 * Header 'This page is a translated version of...' to be shifted to bottom of page.
 * Incomplete/Outdated translation indicator to be kept at top of page.
 * Indicators for translation % completion to be either removed or shifted to bottom of page.
 * Required to finalize the design for language bar after discussions. Possible solutions
 * Having just a Translate button(which links to translate the page) with a drop down list which opens up a language selector.
 * Wikipedia style language selection from sidebar.
 * Language bar should be integrated into every page and should contain a few commonly used languages. The list of languages can be accessed similar to the Translate extension language selector. Submitting for translation by clicking on 'Translate' button on language bar.

Change aggregate group descriptions and group name on Special:AggregateGroups
Requirement: Allow aggregate group name and group description to be changed on Special:AggregateGroups.
 * Currently, it is not possible to change an aggregate group description or group name on Special:AggregateGroups. Currently the user has to delete the group and create a new one which is annoying and inefficient.

Tentative Timeline
April 22 - May 18 Reading documentation and getting familiar with all the codes. Discussions for finalizing design for language bar for pages and for page content language selector. Discussions for feature requirements for Special:AggregateGroups. Ideating and discussing implementation for updating Translatable page on deletion of a translate unit page. May 19 Official GSoC coding period begins. May 19 - June 9 (3 weeks) Starting off with solving lesser challenging bugs: Implementing optional title translation for pages Working to make Special:AggregateGroups more featured. June 9 - June 23 (2 weeks) Implementing language bar and translate extension interface for pages. June 24 - June 27 Mid term evaluation period. June 28 - July 12 (2 weeks) Fixing translation page non-updation. July 13 - July 27 (2 weeks) Implement language selector for core and make it usable with Translate extension. July 28 - August 12 (2 weeks) University starts-Work hours shifted to evening and night Final phase of the project-documentation and fixing any bugs reported. August 12 - August 18 Pencils down period. Submitting the project for final evaluation.

Mentors
Niklas Laxström and Robin are my mentors for this project.

About Me
I am Kunal Grover, from New Delhi, India. I am a second year undergraduate student from Indian Institute of Technology, Madras. I was passionate about programming since my High School. In my college, I got introduced to the world of Free Software which made me really interested to get involved in contributing to the community. I have been involved in a few hackathons held in my college. My enthusiasm in developing Free Software was intensified after interaction with Richard Stallman, the founder of the Free Software movement who was in my college recently for a talk. I started my journey in the world of Free Software by hacking with Mediawiki. I recently got involved in working with the Translate extension and found it to be a very amazing extension in terms of the purpose, the implementation and the TUX interface. I am interested to continue developing for Mediawiki after the end of the project as well.

Past Experience in Programming and Open Source
I have been hacking with Mediawiki core for sometime now. I have worked towards solving bugs: Bug:17496 Bug:26032 I am currently working to implement a Special page for core listing Tracking categories. Bug:60333 I recently got involved in the Translate extension. I submitted a patch for Bug:57514 I have been involved in a lot of projects all of which are present on my Github page. Some of my favorite ones :) I was part of a Robotics team representing my college at a Nation-wide level. My job in the team was to develop and implement algorithms for the robots.
 * Chat-site: A P2P chat website using Node.js
 * Virtual mouse: Mouse pointer control on screen using camera.
 * Gesture recognition: Detect the number of fingers using camera tracking.
 * Atmega Motor controller: A electronics-cum programming project aimed at developing a reliable motor control system which can be implemented in the industry for speed as well as position control.