India Hackathon 2011



 MUMBAI | मुंबई 

November 19 and 20 2011

Registration


If you have been invited for the hackathon, or if you are able to contribute expertise to the hackathon goals, please fill out the registration form. You will not be formally registered until you receive a positive reply to your registration. Evaluation of your registration may take up to a week.

= 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 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
 * 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 - 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.

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.

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

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