India Hackathon 2011



 India Hackathon Language, Mobile & Offline Mumbai, India, 19–20 November 2011

At the India Hackathon 2011, help us improve access to Wikipedia and Wikimedia's other projects across all languages, via mobile devices, and for people without Internet access! Hackers of all backgrounds are welcome and prior experience with the MediaWiki software is not required. Translators who want to help localize the latest and greatest Wikimedia technology projects are also welcome.

This coding event will happen concurrently with the WikiConference India 2011, and near its venue. About 100–150 participants are expected.

We'll be working on:

Are you coming?

Schedule
The event schedule will be fleshed out by mid-October.

Attendees
This event is free to attend but invitees must be approved. We are currently setting up a registration system. Make a user account, edit this section, and sign with four tildes ( ~ ) to show your interest here.


 * Tomasz Finc - Director Mobile and Special Projects @ Wikimedia Foundation
 * Kul Wadhwa - Head of Business Development @ Wikimedia Foundation
 * Alolita - Director of Features Engineering @ Wikimedia Foundation
 * Santhosh Thottingal - Developer @ Wikimedia Foundation
 * Amir Aharoni - Developer @ Wikimedia Foundation
 * Gerard Meijssen - Localisation Outreach @ Wikimedia Foundation
 * Niklas Laxström - Developer @ Wikimedia Foundation
 * Siebrand Mazeland - Product manager Localisation @ Wikimedia Foundation
 * Kumar Gautam Powered by UD
 * Emmanuel Engelhart - Lead Developer of Kiwix
 * Robin Pepermans - MediaWiki Developer - will try to go
 * Patrick Reilly - Lead Developer Mobile @ Wikimedia Foundation
 * Erik Möller - Deputy Director and VP Engineering @ Wikimedia Foundation
 * User:Jain.dhrj--Jain.dhrj 14:06, 28 September 2011 (UTC)
 * Jimymodi 04:28, 29 September 2011 (UTC) Jimit Modi
 * Karansmehta 22:25, 29 September 2011 (UTC)karansmehta
 * Logicwiki 12:30, 30 September 2011 (UTC)
 * రహ్మానుద్దీన్ 13:56, 30 September 2011 (UTC)
 * Justjkk 18:57, 30 September 2011 (UTC)
 * Manish from Lucknow "Manish0680 05:31, 1 October 2011 (UTC)"
 * Vivek Ranjan 13:12, 2 October 2011 (UTC)
 * User:Faisal Memon 18:12, 2 October 2011 (UTC)
 * User:Nigel C'rasto 18:12, 2 October 2011 (UTC)
 * Josemanimala 08:19, 4 October 2011 (UTC)
 * Preethamchandra 14:43, 5 October 2011 (UTC)

= Proposed Topics =

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 Projects/Browsers Support - | http://meta.wikimedia.org/wiki/Mobile_Projects/Browsers_support_status

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 redering 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
 * Odiya: 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
 * 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.

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

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.

Key hacking resources

 * http://www.mediawiki.org/wiki/Extension:Lucene-search
 * http://lucene.apache.org/

Another goal is to get people and organizations(Academic or Research) to get improve language support in Lucene. This require research on language analyzers, morphology analyzers etc.
 * Goal: WMF wiki projects in prodcution uses Apache Lucene as the search engine - the internal search engine for full text search on the articles. The efficiency of the search depends on how much Lucene support Indic scripts. So to improve the Indic language support, we need to improve lucene language analysers. This item in hackathon aims to identify the bugs for the indic languages in the lucene, and get it reported in Bugzilla.


 * Tasks
 * Filing bugs for issues that are not yet in bugzilla
 * (maybe) porting wmf-lucene to newer version

Lead: Niklas

TODO
 * Learn about differences between WMF-lucene and standard lucene.
 * Get someone who knows Lucene to attend

Requirements
 * Learn about Lucene, optionally, have a running instance in your system.

Automatic script conversion
Resources Goal : Konkani is one language written in multple scripts, Indic, French, And Arabic. The language require a cross language transliteration tool. Tasks :
 * 1) http://silpa.org.in/Transliterate

TODO
 * 1) Identify all the required language pairs, prioritize(based in difficulty to implement and impact)
 * 2) Have parallel data in identified language pairs, transform this to test cases.
 * 3) Document language specif rules and special cases, prepare test cases for this.
 * 4) Use prototype language converter http://silpa.org.in/Transliterate to gather feedback and requirements
 * 1) Ensure Konkani speakers from atleast 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, chinese transliteration is done and get familiar with the methods.
 * 3) Start addressing th 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

Key hacking resources

 * Mobile Projects workspace
 * MobileFrontend extension for MediaWiki (the code that powers Wikimedia's mobile sites)

SMS & USSD Wikipedia
Access to Wikipedia right now is limited to users who have browsers that can speak over HTTP/S. While this captures a large amont of our users it misses anyone who either doesn't have a fast internet connection, doesn't have a data plan, or simply wants a basic view of Wikipedia. With SMS we have the opportunity to reach more of our global users through one of the most ubiquotes messaging systems. Using the Vumi project from the Praekelt foundation and the SMS bridge provided by , let's create a SMS gateway to deliver the sum of all human knowledge to everyone regardless of their data plan.


 * Goal: Launch a beta SMS Wikipedia service using praekelts vumi project to read any article
 * Tasks
 * Deploy service to virt cluster
 * Test!
 * TODO:
 * Invite someone from praekelt to join.
 * Work with a carrier to white list an SMS interface or figure out emulator scenario.
 * Build a test virt with Vumi
 * Build a test app framework (point to the examples)
 * Define protocol for using sms gateway (this depends on the application)
 * Lead: Kul, Praekelt

Other ideas

 * Develop a language switcher for MobileFrontend
 * Article Rating mobile widget (mini feature)
 * Share a photo using the mobile web (uploading a phone camera photo to Commons)
 * New article creation based on location data via GPS
 * Add images to articles "near me" (GPS based) which do not have images for that 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

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

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