User:Psbots/gsoc2014

Personal Information

 * Name : Praveen Sridhar
 * Email Address : prvn431@gmail.com
 * Blog URL : http://psbots.blogspot.in
 * Freenode IRC Nick : psbots


 * Current Education : 3rd year, B.Tech [Mechanical Engineering] from School of Engineering, CUSAT, Kochi

I have been involved with SMC recently for the "Workshop on Open Mobile Platforms" at ICFOSS, where I had the opportunity to take a session on Firefox OS. I'm also part of the Diaspora Yatra Campaign planned by the SMC members.
 * Do you have any past involvement with the Swathanthra Malayalam Computing or another open source project as a contributor?

I'm also a contributor to various Mozilla projects, especially Gaia, which is the UI of the Firefox OS platform.

I firmly believe that language should not be a barrier for interaction with technology. I am sure that with SMC, I can work for the benefit of the Indian Society at large while learning more about Indian Language Computing and various open source technologies.
 * Why do you want to work with the Swathanthra Malayalam Computing?

I have my college holidays during May and June, during which I'll be fully devoted for the project. Even after the college reopens in August, I'm sure I'll be able to devote more than 40 hours a week for the project at hand.
 * Do you have other obligations between May and August ?

I'm proud that SMC is promoting Indian Language Computing and is striving to remove the language barrier to technology. I'll defnitely continue contributing to the community both by development as well as events and other activities of the Organisation.
 * Will you continue contributing/ supporting the Swathanthra Malayalam Computing after the GSoC 2014 program, if yes, which area(s), you are interested in?

I am a strong supporter of open technologies - both software and hardware. I believe that my project proposal has a good value for the community. I have good command over Javascript and problem solving in general, which make me an ideal choice for the project at hand.
 * Why should we choose you over other applicants?

Implementing built in support for Indian language IMEs in Firefox OS :  Project Abstract
The advent of 'smartphones' have changed the way people interact with technology. But language is still a barrier for many people to engage with the Web. Firefox OS is a new platform, built with the technology of the "Open Web". India is a big market for the platform owing to its philosophy of targeting lower end, low cost hardware. In order for it to be successful, Firefox OS must have support for local languages. During GSoC, my project would be to implement Indian Language input support to the core Firefox OS codebase. The jquery.ime library would be used for the implementation. The plan is to port the library to pure Javascript. An automatic porting tool in Python will be developed for the same.

The Problem
There are two problems being addressed in this project. One is that there is currently no support for Indian Languages on Firefox OS. The other is regarding jquery.ime library. The library was designed for working in multiple browsers and uses jQuery to abstract away the browser specific issues. But situations arrive where this is not needed, the best example being Firefox OS, which is based on Gecko. Besides, a pure Javascript library would also enable developers using modern libraries like AngularJS and EmberJS to add language support without any dependency on jQuery. Also by writing a generic porting tool, it will be easy for developers to extend the tool to support their programming language of choice.

The Solution
The User Interface of Firefox OS, called Gaia is written entirely in HTML5/CSS and Javascript. This enables the use of jquery.ime library. But since Firefox OS runs Gecko, there is no use of the extra code that jquery provides for browser support. Hence the project would involve porting the jquery.ime library into pure Javascript. An automatic porting tool will be implemented in Python after studying the detailed implementation of the jquery.ime library. Using the plain Javascript library developed in the first phase of the project, the Firefox OS UI, Gaia will be tweaked to add support for Indian Language IMEs. The final IME created would be pushed to the official Gaia codebase maintained by Mozilla, which would mean that the Indian Language support will come default within the OS.

Implementation Details
Deliverable 1 : Porting tool for jquery.ime The porting tool for jquery.ime library will be implemented using the Python language. The development will consist of the following 3 stages : This would allow the assessment of the library. Once the structure of the library is understood, a plan for the porting tool can be built. The tool will be coded in such a way that it is Generic in nature and anyone would be able to extend it to support porting to other programming languages. A testing framework will also be devised for testing the functionality of the ported Javascript library.
 * Manual Porting and implementation of one of the input methods to plain Javascript on Firefox OS.
 * Development of Tool :
 * Testing framework :

Deliverable 2 : Indian Language IMEs for Firefox OS
 * The default Gaia Keyboard in Firefox OS can be configured and modified to include Indian Language IMEs.
 * For phonetic/transliteration based input methods, the layout.js specified in Gaia Keyboard needs to be updated with the different language IM engines and dictionaries. Dictionary suggestions can be displayed as an overlay just above the keyboard. Such type of IME have been implemented in Chinese and Japanese languages for Firefox OS.
 * For InScript Keyboard, a new layout needs to be designed and implemented to include the various characters of the languages. This is supported by the new KeyboardIME API of Firefox OS. More details on Gaia Keyboard can be found on MDN.
 * The final IME will be pushed to the core Gaia repositories, maintained by Mozilla.

Previous Experience
I am an open web enthusiast and part of the Mozilla Community. I have contributed to Mozilla projects, especially the Gaia, which is the UI of Firefox OS. I also help in fixing bugs for the platform. I've also done a feasibility study of the project by implementing a crude IME for Hindi which can be read on my blog.

Tentative Timeline
During Community Bonding Period :
 * April 21 - May 11 : Study the implementation and architechture of jquery.ime library
 * May 11 - May 19 : Improve upon the Proof of Concept made before application proposal and learn about IME's in other platforms

Coding Period Begins
 * May 19 - May 28 :  Commence Manual porting of one of the input methods of jquery.ime
 * May 29 - June 4  :  Complete Manual porting of one input method. Commence development of Automatic porting tool in Python using information obtained in the manual porting.
 * June 5 - June 19  :  Implement the manually ported input method in Firefox OS. Continue development of Automatic porting tool.
 * June 20 - June 23 : Device a strategy to test the automatically ported library. Research on implementation of Keyboard layouts. Continue development of Automatic porting tool.
 * June 24 - June 27 : Complete development of Automatic Porting Tool

Mid-Term Evaluation


 * June 28 - July 12     :   Implement testing methods for the ported code and general bug fixing of tool. Research on keyboard layout implementation in Gaia.
 * July 13 - July 29      :  Thorough testing of the ported Javascript library and Documentation. Implementing IME's on Firefox OS - Gaia. Tweaking the tool to improve its quality.
 * July 30 - August 1   :  Get review from SMC for keyborad layouts implemented and improve on it.
 * August 2 - August 5 : Push the code to core Gaia codebase maintained by Mozilla. Documentation, fine-tuning and bug-fixing.
 * August 5 - August 19 : General bugfixing and Buffer time for unforeseen delays.

End-Term Evaluation

I have discussed the project with Anivar, Hrishikesh and Santhosh. Hrishikesh suggested to keep the porting tool generic so that it can be extended for other programming languages. Santhosh originally designed the jquery.ime library, and has helped me review my Concept.