User:Psbots/gsoc2014: Difference between revisions

From SMC Wiki
No edit summary
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 24: Line 24:


* '''Will you continue contributing/ supporting the Swathanthra Malayalam Computing after the GSoC 2014 program, if yes, which area(s), you are interested in'''?
* '''Will you continue contributing/ supporting the Swathanthra Malayalam Computing after the GSoC 2014 program, if yes, which area(s), you are interested in'''?
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.
I'm proud that SMC is promoting Indian Language Computing and is striving to remove the language barrier to technology. I'll definitely continue contributing to the community both by development as well as events and other activities of the Organisation. Infact, during the course of preparing this proposal, I've identified 2 projects related to language computing which are out of scope of GSoC, which I'd love to work on.




Line 31: Line 31:




== Implementing built in support for Indian language IMEs in Firefox OS  :  Project Abstract ==
== Implementing support for various regional 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 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". During GSoC, my project would be to implement various local Language input support to the core Firefox OS codebase. Different mobile specific IME implementations will be researched on and implemented. The jquery.ime library, which has a wide collection of input methods in 60+ languages will be used as a reference point.  The deliverable will include complete support for Indic languages (with feedback from the local Mozilla community) and experimental extension to more than 60+ regional languages of the world. An automated syncing mechanism will also be implemented to leverage the active community development and extension of the jquery.ime and keep the Firefox OS IME implementation updated.
 


== The Problem ==
== 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.
Language is a very big barrier for users to engage with technology. There is currently not much support for many regional Languages on Firefox OS. Most of the currently supported languages are limited to latin origin. Owing to its philosophy of targeting lower end, low cost hardware, in order for it to be successful, Firefox OS must have support for the various local languages of the world. This is the basic problem that the project intends to solve.
Apart from this, there is a need for exploration of different types of Touch-based input methods. This project also acts as a starting point for optimisation of Mobile-specific input methods and their applicability.




== The Solution ==
== 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.
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. Also the library is designed for input based on latin keyboard layout for computers. Hence the project would involve using jquery.ime library only as a reference to create a new mobile optimized Input Method engine in Javascript. A sysncing mechanism to update changes in input rules of jquery.ime library will also be developed.
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 ==
== 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 :
* Manual Porting and implementation of one of the input methods to plain Javascript on Firefox OS.
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.
* Development of Tool :
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.
* Testing framework :
A testing framework will also be devised for testing the functionality of the ported Javascript library.


'''Deliverable 2''' : Indian Language IMEs for Firefox OS
'''Deliverable 1''' : Regional Language IMEs for Firefox OS
* The default Gaia Keyboard in Firefox OS can be configured and modified to include Indian Language IMEs.
* The default Gaia Keyboard in Firefox OS can be configured and modified to include different 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 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 [https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Customizing_the_keyboard MDN].
* 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 [https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Customizing_the_keyboard MDN].
* The final IME will be pushed to the core Gaia repositories, maintained by Mozilla.
* The final Indic IMEs will be pushed to the core Gaia repositories, maintained by Mozilla.
* The remaining lanugage IMEs will be released for feedback from the various communities and further development/improvement.
 
'''Deliverable 2''' : Syncing mechanism
An automatic/semi-automatic syncing mechanism to maintain the frequent community updates of jquery.ime input method collection.
 
 
== Miscellaneous ==
* Apart from the above mentioned deliverables, the remaining languages in jquery.ime input methods will be supported for Firefox OS and released for feedback from the local communities and subsequently developed.
* Input suggestions and other input methods are also an area to be tapped into and projects like [http://silpa.org.in Sipla] and [http://www.varnamproject.com Varnam] can be suitably adapted for Touch-input and further refinement of the project can be done post GSoC.
 


== Previous Experience ==
== Previous Experience ==
Line 65: Line 68:
== Tentative Timeline ==
== Tentative Timeline ==


'''During Community Bonding Period'''  :
'''During Community Bonding Period'''  :  
* April 21 - May 11 : Study the implementation and architechture of jquery.ime library
* April 21 - May 11 : Study the implementation and architechture of jquery.ime library.
* May 11  - May 19 : Improve upon the [http://psbots.blogspot.in/2014/03/indian-language-support-on-firefox-os.html Proof of Concept] made before application proposal and learn about IME's in other platforms
* May 11  - May 19 : Improve upon the [http://psbots.blogspot.in/2014/03/indian-language-support-on-firefox-os.html Proof of Concept] made before application proposal and learn about IME's in other platforms.


'''Coding Period Begins'''
'''Coding Period Begins'''
* May 19 - May 28  :  Commence Manual porting of one of the input methods of jquery.ime
* May 19 - May 28  :  Commence development of the IME engine using jquery.ime as a reference. Research on different implementations of Keyboard layouts.
* 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.
* May 29 - June 4  :  Build on the developed engine and optimize it for a single language initially. Extend the engine to support support layout rearrangement and key label rendering.
* June 5 - June 19  :  Implement the manually ported input method in Firefox OS. Continue development of Automatic porting tool.
* June 5 - June 19  :  Continue implementation of the various languages, all the while taking feedback from the various communities.
* 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 20 - June 23 :  Apply the input method engine to the default Firefox OS keyboard by using the layout.js keyboard structure as specified in Gaia.
* June 24 - June 27 :  Complete development of Automatic Porting Tool
* June 24 - June 27 :  Optimization of the engine, first round of bugfixing.


'''Mid-Term Evaluation'''
'''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.
* June 28 - July 12      :  Implement testing methods for the engine, adapting the large test cases in jquery.ime ; Research on inscript and other keyboard layout implementations 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 13 - July 29      :  Thorough testing of the IME. Begin documentation phase. Tweaking the code to improve its quality.
* July 30 - August 1    :  Get review from SMC for keyborad layouts implemented and improve on it.
* July 30 - August 1    :  Get review from SMC for keyborad layouts implemented and improve on it. Finish and extend complete support to all Indic languages.
* August 2 - August 5 :  Push the code to core Gaia codebase maintained by Mozilla. Documentation, fine-tuning and bug-fixing.
* August 2 - August 5 :  Push the code to core Gaia codebase maintained by Mozilla. Documentation, fine-tuning and bug-fixing. Release IMEs of different languages for review by respective communities
* August 5 - August 19 : General bugfixing and Buffer time for unforeseen delays.
* August 5 - August 19 : General bugfixing and Buffer time for unforeseen delays.


Line 87: Line 90:




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.
I have discussed the project with Anivar, Hrishikesh and Santhosh. Santhosh originally designed the jquery.ime library, and has helped me review my Concept.
[[Category:GSoC 2014 Student proposals|Psbots]]
[[Category:GSoC 2014 Student proposals|Psbots]]

Latest revision as of 17:20, 20 April 2014

Personal Information

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


  • Do you have any past involvement with the Swathanthra Malayalam Computing or another open source project as a contributor?

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.

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


  • Why do you want to work with the Swathanthra Malayalam Computing?

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.


  • Do you have other obligations between May and August ?

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.


  • Will you continue contributing/ supporting the Swathanthra Malayalam Computing after the GSoC 2014 program, if yes, which area(s), you are interested in?

I'm proud that SMC is promoting Indian Language Computing and is striving to remove the language barrier to technology. I'll definitely continue contributing to the community both by development as well as events and other activities of the Organisation. Infact, during the course of preparing this proposal, I've identified 2 projects related to language computing which are out of scope of GSoC, which I'd love to work on.


  • Why should we choose you over other applicants?

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.


Implementing support for various regional 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". During GSoC, my project would be to implement various local Language input support to the core Firefox OS codebase. Different mobile specific IME implementations will be researched on and implemented. The jquery.ime library, which has a wide collection of input methods in 60+ languages will be used as a reference point. The deliverable will include complete support for Indic languages (with feedback from the local Mozilla community) and experimental extension to more than 60+ regional languages of the world. An automated syncing mechanism will also be implemented to leverage the active community development and extension of the jquery.ime and keep the Firefox OS IME implementation updated.


The Problem

Language is a very big barrier for users to engage with technology. There is currently not much support for many regional Languages on Firefox OS. Most of the currently supported languages are limited to latin origin. Owing to its philosophy of targeting lower end, low cost hardware, in order for it to be successful, Firefox OS must have support for the various local languages of the world. This is the basic problem that the project intends to solve. Apart from this, there is a need for exploration of different types of Touch-based input methods. This project also acts as a starting point for optimisation of Mobile-specific input methods and their applicability.


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. Also the library is designed for input based on latin keyboard layout for computers. Hence the project would involve using jquery.ime library only as a reference to create a new mobile optimized Input Method engine in Javascript. A sysncing mechanism to update changes in input rules of jquery.ime library will also be developed.


Implementation Details

Deliverable 1 : Regional Language IMEs for Firefox OS

  • The default Gaia Keyboard in Firefox OS can be configured and modified to include different 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 Indic IMEs will be pushed to the core Gaia repositories, maintained by Mozilla.
  • The remaining lanugage IMEs will be released for feedback from the various communities and further development/improvement.

Deliverable 2 : Syncing mechanism An automatic/semi-automatic syncing mechanism to maintain the frequent community updates of jquery.ime input method collection.


Miscellaneous

  • Apart from the above mentioned deliverables, the remaining languages in jquery.ime input methods will be supported for Firefox OS and released for feedback from the local communities and subsequently developed.
  • Input suggestions and other input methods are also an area to be tapped into and projects like Sipla and Varnam can be suitably adapted for Touch-input and further refinement of the project can be done post GSoC.


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 development of the IME engine using jquery.ime as a reference. Research on different implementations of Keyboard layouts.
  • May 29 - June 4  : Build on the developed engine and optimize it for a single language initially. Extend the engine to support support layout rearrangement and key label rendering.
  • June 5 - June 19  : Continue implementation of the various languages, all the while taking feedback from the various communities.
  • June 20 - June 23 : Apply the input method engine to the default Firefox OS keyboard by using the layout.js keyboard structure as specified in Gaia.
  • June 24 - June 27 : Optimization of the engine, first round of bugfixing.

Mid-Term Evaluation

  • June 28 - July 12  : Implement testing methods for the engine, adapting the large test cases in jquery.ime ; Research on inscript and other keyboard layout implementations in Gaia.
  • July 13 - July 29  : Thorough testing of the IME. Begin documentation phase. Tweaking the code to improve its quality.
  • July 30 - August 1  : Get review from SMC for keyborad layouts implemented and improve on it. Finish and extend complete support to all Indic languages.
  • August 2 - August 5  : Push the code to core Gaia codebase maintained by Mozilla. Documentation, fine-tuning and bug-fixing. Release IMEs of different languages for review by respective communities
  • 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. Santhosh originally designed the jquery.ime library, and has helped me review my Concept.