India Hackathon 2011



 MUMBAI | मुंबई 

November 19 and 20 2011

Registration
Registrations have been closed. If you were invited by Wikimedia Staff, please send an e-mail to hackathon-india-2011wikimedia.org.

= Proposed Topics =

There are three main topics in this Hackathon. Please go directly to your desired area:


 * Language
 * Mobile
 * Offline

Key hacking resources

 * Indic language support requirements
 * WebFonts extension for font support
 * Narayam extension for input method support (running in production e.g. on Malayalam Wikipedia
 * Mobile browser testing matrix

Font Delivery

 * Goal: Improve font delivery for mobile browsers/devices and web browsers in general from on Wikipedia
 * Tasks
 * Using the browser testing guide the following list of issues has emerged:
 * WebFonts work with Android, But for Indic scripts, Android should support the complex script rendering support
 * XXTODO: ADD ISSUES!
 * Requirements: Proper font delivery, input and rendering for the following scripts:
 * XXTODO: ADD LIST OF SCRIPTS!
 * TODO: Contact Device and OS makers for client integration. This may be specific to device, vendor or rendering engine.
 * Lead: Google/Nokia/etc contact + Santhosh

Font Testing
The Lohit font family for Indic languages was released by Red Hat as open source fonts in  2004. This font family today supports 16 major Indic languages. Wikipedians in various languages need to have more complete font support for Indic  languages and other non Roman languages built into MediaWiki's  infrastructure to support both reading and editing on desktop  and mobile. In this project we are aiming to integrate and test the Lohit font family support for mobile Wikipedia browsing. We invite Indic localizers to help us test and report bugs for enhancing our mobile  user experience.


 * Goal: Test the Lohit family of fonts (https://fedorahosted.org/lohit/ ) for on demand mobile rendering.
 * Tasks
 * Test Lohit fonts library for each of languages listed below:
 * Assamese, Bengali, Devanagari (Hindi, Kashmiri, Konkani, Maithili, Marathi, Nepali, Sindhi), Gujarati, Kannada, Malayalam, Oriya, Punjabi, Tamil, and Telugu
 * For the ones that don't work research what other families exist and how we can contribute upstream
 * Target platforms: Symbian S40/S60 & Android 2.2.x+
 * Requirements: Proper render and Input
 * TODO: Expand browser testing guide to Indic languages
 * Define test cases for Indic language support on various browsers / platforms
 * Define criteria for passing tests
 * Loading on-demand fonts - what needs to happen on the web server side + mobile gateway
 * FAQ
 * Font not found
 * Font not installed
 * Font not rendered
 * 
 * Hardware support: Phone devices being tested.
 * Lead: Santosh and Gerard

Key mappings for desktop
Key Resources
 * 1) Narayam

Key mappings are also known as "keyboard mappings" or "keyboard bindings".

MediaWiki has an extension that supports key mapping called Narayam. Narayam adds language input methods for all MediaWiki text input fields. The primary users of this extension are from wikis that use non-latin scripts. Currently supported typing schemes are:


 * Indic languages
 * Assamese: Avro (Phonetic), InScript, Bornona, Transliteration
 * Bengali: Avro (Phonetic), InScript, National Keyboard
 * Hindi: InScript
 * Kannada: Transliteration, InScript
 * Malayalam: Transliteration (Mozhi), InScript
 * Nepali: Transliteration, InScript
 * Odia: Transliteration, InScript
 * Sanskrit: Transliteration, InScript
 * Sinhala: Singlish (Partial phonetic), Wijesekara
 * Tamil: Transliteration, Tamil99
 * Latin
 * Esperanto: Esperanto x-code transcription


 * 1) Add new key mapping for the scripts

On-screen keyboards for desktop
Goal : Add onscreen keyboard support for input fields, preferable with the Narayam extension.

Possible ways:
 * Ask Google to open source their input methods?
 * http://www.codeproject.com/KB/scripting/jvk.aspx - not properly free (non-commercial)
 * http://mottie.github.com/Keyboard/index.html
 * http://www.greywyvern.com/code/javascript/keyboard (user contributed versions available)

Tasks:
 * Design and finalize the User interface.
 * Identify the javascript library
 * Explore the option Integrating with the already existing Narayam keymappings. If not define the layout definition format.

Lead: Santhosh, Siebrand

Webkit or Chrome rendering
We are experiencing multiple issues with Indic languages and JavaScript support. Need to add relevant bug numbers. Bugs: Lead: Santhosh, Gerard
 * 1) Bug 66630
 * 2) Bug 15256
 * 3) Chromium does not render Bold or Italic indic text
 * 4) Chrome does not respect zwj, zwnj in Indic, Arabic, Sinhala text

Indic language support metrics
Need to prepare questions for script support. Get at least one subject matter expert present per script. http://www.mediawiki.org/w/index.php?title=Internationalization_and_localization_tools/Requirements/Indic_language_support

Tasks
 * 1) Fill the above support metrics table by collecting more data as possible.
 * 2) If something not supported or buggy, get bugs filed.

Lead: Amir and Santhosh.

Automatic script conversion
Resources Goal : Konkani is one language written in multiple scripts - Latin, Arabic, and several Indic ones. The language requires a transliteration tool. Tasks :
 * 1) http://silpa.org.in/Transliterate
 * 2) Automatic conversion in Konkani language

TODO
 * 1) Identify all the required language pairs, prioritize (based in difficulty to implement and impact)
 * Conversion between Indic scripts is probably relatively easy and similar to Serbian.
 * Conversion to Latin cannot be perfect because of capital letters.
 * Conversion from Arabic is impossible if the vowels aren't written (but maybe they are). --Amir E. Aharoni 01:02, 12 October 2011 (UTC)
 * 1) Have parallel data in identified language pairs, transform this to test cases.
 * 2) Document language specif rules and special cases, prepare test cases for this.
 * 3) Use prototype language converter http://silpa.org.in/Transliterate to gather feedback and requirements
 * 1) Ensure Konkani speakers from at least few language pairs attend hackathon to give information
 * 2) Get volunteer developer, preferably from the language,  assign specific goals.

Requirements
 * 1) Get a mediawiki instance running in your systems
 * 2) Have a look at how Serbian (sr), Chinese (zh) and Kazakh (kk) transliteration is done and get familiar with the methods.
 * 3) Start addressing the goal, get specific questions to work at hackathon

Lead: Niklas and Amir

Localisation tools for translators
There are many localisation platforms, and even more localisation tools around. Many of the platforms have different focus and purpose, and there isn't much discussion between developers. Also translators are segregated, because the tools and processes and wildly different. In this session we should at least get to know each other and what we are doing, and preferably find things where we can cooperate.

Key hacking resources

 * translatewiki.net and KDE UserBase Wiki
 * Translate extension documentation for page translation feature


 * Goals:
 * Get to know each other
 * Get to know how the other tools are doing it
 * Share experiences and best practices
 * Find ways to collaborate with tool and process development
 * Find ways to make it easier for translators to move from one tool to another
 * Tasks:
 * Presentations of localisation tools (for translators and developers?)
 * Short tours about localisation tools
 * Sharing experiences on important aspects of translation workflows
 * Time from translation to deployment in production
 * Supporting translators with message documentation, ways to ask support
 * Coordinating and collaboration inside language community
 * Coordinating and collaboration between language communities

Lead: Siebrand and Niklas
 * Actually i think that i should do it. --Amir E. Aharoni 01:02, 12 October 2011 (UTC)

Wikimedia Incubator
Add Narayam and WebFonts extension support for Wikimedia Incubator

Lead: Robin

User preferences interface for language tools
The MediaWiki user interface for anonymous and logged out users needs to be unified with regards to choosing User Interface language, input methods and display with web fonts. During the hackathon a design should be made for these functionalities.

Lead: Brandon, Siebrand

Key hacking resources

 * Mobile Projects workspace
 * Feature Corral and Hackathon topics
 * MobileFrontend extension for MediaWiki (the code that powers Wikimedia's mobile sites)

Help make mobile Wikipedia a world-class mobile experience. There is so much to do, and the results will directly benefit users in India. Here is a high-level summary:
 * Participatory features and apps - Make mobile Wikipedia editing-friendly and more engaging, in ways that really make sense on mobile devices. These features are among the most groundbreaking in the Mediawiki world - help our mission of retaining and growing the editor user base!
 * Carrier solutions - Wikimedia staff are actively engaging carriers around the world in groundbreaking projects such as Wikipedia Zero, which gives mobile users in developing countries free access to Wikipedia - that includes India!
 * UI and Usability - Jorm will be on hand to help you craft some exciting changes to the overall user experience and any new ideas you may have.
 * Languages on mobile - Among other vital tasks, help create the page visitors see when they access Wikipedia in India - feature Indic languages and tailor the design to an Indian audience.

See all the features ideas, and pick what you would like to work on: Feature Corral and Hackathon topics

Here are some sample projects:

Wikipedia Zero
Major mobile operators around the world and in India are interested in WIkipedia Zero, a way of offering free access to Wikipedia on practically any phone! The view of WIkipedia will be without images, but data access will be free. Another version of this service would include WIkipedia on the operator's portal, again with free data access.

The features needed for this are simple:
 * Display a banner showing the operator's name across the top of the screen, based on access via specific IP addresses
 * Warn users when they click on links to images and external sites that data charges may be incurred

Check out the details on the Feature Corral page.

SMS Wikipedia
Access to mobile Wikipedia right now is mostly by web browser. While this is suitable for some users it misses anyone without a fast internet connection or a data plan. With SMS we have the opportunity to reach more of our global users through one of the most ubiquitous messaging systems. Using the Vumi project from the Praekelt foundation and the SMS systems of local carriers, let's create an SMS service to deliver the sum of all human knowledge to everyone regardless of their data plan.


 * Launch a beta SMS Wikipedia service using praekelt's vumi project to read any article

Details on the Feature Corral page.

Font sizes
Mobile sites are viewed on a wide variety of screen sizes and types, and on most phones there is no general zoom option. Yet even on the iPhone, some mobile sites and apps are offering simple font size options. The most general solution would be to enable normal and large sizes through a button or menu item. Can you help the world save their eyesight? And in some cases this may mean the difference between being able to read an article or not at all.

See this and more usability ideas on the Feature Corral page.

India landing page
This one is actually two features. The first part is re-doing the main wikipedia.org page for mobile and turning on country detection, as shown under "UI and usability." That could establish a mechanism for presenting a country-specific landing page when one is available.

In the case of India, and many other countries, a country-specific landing page makes a lot of sense. Wikipedia is in many languages, and many countries use multiple language versions of Wikipedia. India is a fine example - and who knew that about 10 Indic language versions already exist?

How many countries typically use more than one version of Wikipedia? See for yourself:


 * Page views by country

See this idea and more on the Feature Corral page.

Input methods on mobile
For Android phones which can render Indic languages, Multiling Keyboard app  and  plugin for Hindi (includes support for other indic languages) are available. See also wikipedia article on indic computing

Relevant links:
 * https://mentor.ieee.org/stds-india/bp/Software_IT_focus_area

Key hacking resources

 * Offline Projects workspace
 * Kiwix, an open source offline reader application supported by the Wikimedia Foundation
 * OpenZIM, a free and open standard for offline distribution supported by the Wikimedia Foundation

Kiwix on Android

 * Goal: Prototype a version of Kiwix for Android to both download and read openZim articles
 * Tasks
 * Getting a dev. VM where to compile Gecko and run Kiwix for Android.
 * Compile and run xulrunner/Gecko for Android
 * Compile and run C++ XPCOM with xulrunner for android
 * Embed Kiwix in the usual Android java launcher glue
 * Lead: Emmanuel, Santosh, Patrick

Kiwix UX testing

 * Goal: Test Kiwix with indic languages

Offline Collection tools

 * Goal: Further develop offline collection tools (needs to be expanded)
 * Further develop the MediaWiki tools to create offline collections (TBD based on Yuvipanda's recs
 * TODO
 * Lead: Tomasz & Jessie
 * Lead: Tomasz & Jessie

Other ideas

 * Add offline saving of articles to MobileFrontend
 * Develop openZim library support within the PhoneGap framework
 * Port wiki-to-go to Android
 * Improve the PDF rendering library for complex scripts using pyPDFLib http://lists.wikimedia.org/pipermail/wikimediaindia-l/2011-February/002198.html

Meet the Developers
Session in the main conference on Friday. Get as many developers there as possible.

Goal : Provide a common session for developers and users. This is to address too many talk submissions received on bug reports, enhancement ideas. Generally users are not aware of how to report bugs.

Plan


 * 1) Anybody  can raise any technical issue,  enhancement idea, alternates to the developers.
 * 2) There will be a session on "How to file a bug in Mediawiki Bugzilla"
 * 3) If there is any Issue, Enhancement request not reported in Bugzilla so far, it will be reported during the session itself.
 * 4) If there are reported bugs, but not given any priority or attention, It can be raised
 * 5) Attendees can ask questions too.
 * 6) There will be moderator.

Time : 1 hour (Exact time will be announced once conference schedule is prepared) Nov 18th, Post lunch slot -- Conference Schedule

Lead: Santhosh

Hacking without coding
these tasks could be run in parallel with the main conference doing the testing and the devs responding to bugs


 * Create content packages of offline wikipedia in indic languages
 * Testing of new deployment methods (post Kelson's stint)
 * Testing of feedback mechanisms
 * Testing with your mobile telephone (scripts, rendering, etc.).