User:Diadara536/GSoC

Name and contact information
Name:Nithin P Saji

Email: nithin111@undefinedgmail.com

IRC or IM networks/handle(s):diadara

Location:Kerala, India

Typical working hours: 11 am to 2 pm IST (+5:30 GMT)(flexible)

Synopsis
My primary objective will be to add an onscreen keyboard to Jquery.ime plugin which will serve two purposes.

1.Enter text in the absence of a physical Keyboard.

2.Help users while using a non-transliteration input method such as inscript keyboard layout with an English keyboard by showing the key mappings

3 .I would also like to add key bindings to switch quickly between previous used input methods so that user can easily input content in multiple languages on the same page..

4 .I will also add an option to save the ime preferences as a cookie or in browser local storage (depending on browser compatibility) so that the user doesn't have to set the preferences for every new page in a site.

required

 * A visual keyboard with an option to show two keyboard layouts at once so that it can serve the dual purpose of an onscreen keyboard as well as a layout helper.
 * Support for saving preferences in the cookies or local storage (depending on browser compatibility)
 * Implement a ULS style menu for selecting input methods, setting key mappings and on screen keyboard preferences.
 * unit testing using QUnit

If there's time

 * Key bindings for cycling between previous used input methods.

About you
I am Nithin P Saji pursuing dual degrees in Physics and Computer Science from Bits Pilani, Pilani, India. Currently I am in my third year of study here. I love hacking things using a variety of programming languages and JavaScript is my latest crush.I have been playing around with node.js and angular.js lately .This project gives me an opportunity to improve my skills as well as contribute to a very popular project.In fact I ended up here from  another GSoC project to integrate jquery.ime to their  website. I have added jquery.ime the site and wanted to add a few enhancements to it and saw this idea.

Implementation Details
A number of GPL, MIT and BSD licensed onscreen keyboards are available which can be used as a starting point for this project such as
 * jquery ui keyboard which is used in MediaWiki extension Narayam.
 * osk
 * gnome-shells visual keyboard which is written in JavaScript and css (I am not 100% sure)

I have gone through the sources of a few of these and believe that they can be easily modified to use ime rules directly without writing additional keyboard layouts.

My priority will be to add better integration with jquery.ime and also provide customization options for the developer to style the keyboard and position it.

I will write the css from scratch without any dependencies on jquery ui or any other framework.

Addition of persistence features to preferences will be done, jquery.ime.preferences has unimplemented functions for the same.

Key bindings can also be implemented quite easily but care will be taken to avoid using popular browser key bindings.

With addition of more features, the ime selector may get cluttered, a universal language selector style advanced menu will be used to turn on features.

Past open source experience
Although I haven't contributed to any large scale projects before, I have experience in hacking together things in a variety of languages like python, ruby, c, c++, c#, bash, avr c, Java, JavaScript. You can find my past projects hosted on github like a google maps api based mashup to help people find land records in a town, or a rails application to share food with people near you or a python script to display your music player details on your screen and many more. I am fairly comfortable using git as I have been using it for 6 months now. I use a an Archlinux box exclusively and vim is my editor of choice. I have been using tons of opensource stuff and I want to give back to the community.

Before June 17 (Community Bonding Period):
I am quite familiar with jQuery.IME code-base thanks to the youtube videos on this plugin .So I will spend this time learning to use QUnit and also explore more open source onscreen keyboards and their compatibility with jQuery.IME(use IME rules directly wherever possible).This will also give me enough knowledge to write my own keyboard extension if I can't modify an existing one.

week 1 and 2
I will make mockups for the keyboard and start making the keyboard using html and css according to feedback from my mentor and community.I am currently inclined towards gnome-shell onscreen keyboard style keyboard which does not get in the users way.I will also be testing this with different screen sizes.

week 3
Write the JavaScript part for capturing keyboard input and clicks and integrating it with ime transliterate function without changing too much of the original source.

Week 4
I will work on making all the available input rules that uses a non English layout work with the virtual keyboard and make provisions to revert back to a standard keyboard layout for methods that uses a transliteration approach.

week 5 and 6
I will start working on unit testing, browser compatibility testing and documentation.

July 29 (Mid-term Evaluation):
The on screen keyboard should be fully functional  by now.

week 7
I will be working on saving the preferences and loading it from cookies/local storage

week 8
Key bindings for switching languages and compatibility with browsers.

week 9 and 10
ULS style advanced menu for selecting recently used languages, viewing keyboard shortcuts, turning on and off features.

Week 11 and Week 12
Unit testing, browser compatibility testing and more documentation.

POST GSOC
I would like to remain contributing to the project and also package this as an extension for chrome and firefox.