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 Timezone : +5 30 UTC

Synopsis
jQuery.IME is a very popular project derived from MediaWiki’s Narayam plugin to give give the same functionality of entering text using a variety of input methods on any generic website.This project aims to add an on screen keyboard (OSK)functionality to the existing plugin.This will help in

1. Enter text in the absence of a physical Keyboard. 2.Help users while using a keyboard layout different from their physical keyboard locate keys or provide an alternate .eg (inscript keyboard layout ) 3.Some input methods use a combination of characters to enter certain symbols.An OSK can provide a one click alternative.

This project does not intend to be a replacement for native OSK’s as jQuery may not be able to offer a good user experience(haptic feedback ,slide etc).The plugin can be ported as a keyboard offering for touch screen devices ,or can be made to work with small touch screen devices which will add device specific code to the source and might require more time for testing and development and might not fit in GSoC timeline.

Implementation Details
jQuery.IME provides a variety of input methods (more than 150) and each will require a different approach for supporting an OSK.After a brief inspection of the available input methods,I have identified the major families of input methods as (very crude classification, a more thorough examination needed) Direct key mappings. (User is assumed to be using a us-keyboard ). Eg. Inscript input methods. Transliteration based IMES (for non latin scripts Indian languages),these have a non zero context and replace a combination of characters from the patterns array. Transliteration IMES that add diacritic marks to the standard english alphabet and a few  special characters.eg. Esperanto ,German,Serbian etc. This classification might not fit all IME’s, a case by case approach might be required.Outliers can be supported by building on top of this.I am also not familiar with complexities of transliterating RTL languages.This will be tackled with help from mentors and community.

As a starting point ,a standard us-keyboard layout based OSK will be built which can operate between jQuery.IME and the keyboard input.

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 https://github.com/Mottie/Keyboard 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 fit my purpose.My priority will be to add better integration with jQuery.IME and also provide a consistent UI. I will write the CSS from scratch without any dependencies on jQuery ui or any other frameworks.This portion of the project will require constant reviewing as this is the user facing part of the project.

With addition of more features, the ime selector may get cluttered , a MediaWiki universal language selector style advanced menu will be used to turn on features.This is required as a huge menu popping up for language selection is not very elegant and a separate  advanced menu will be more suited for this.

required
all direct mapping IMES such as inscript. all the one’s with few additions to english script
 * A visual keyboard with the dual purpose as an input method a layout helper.
 * Implement a ULS style menu for selecting input methods, setting key mappings and on screen keyboard preferences.

If there's time

 * Some IMES use specialised methods such as phonetic transliteration, the patterns might not be suitable for a specialised OSK.In such cases if it is required to impliment a layout, the positioning of patterns will have to be taken care off.
 * Key bindings for switching methods.
 * Optimisations for touch screen devices with large enough screen’s with native osk’s

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.

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 desktop and many more. I have been using git for almost a year now and comfortable with it and also using github for collaborations.I use  an Arch linux box  exclusively now and promote linux at any any opportunity I get .Vim is my editor of choice and have given a talk about it at my university. I have been using tons of open source 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 thanks to the excellent documentation and the code review videos by Chris Forno .So I will spend this time learning to use QUnit,Cucumber(I have some experience from edX SaaS class) and also explore more open source onscreen keyboards and their compatibility with jQuery.IME.Also the rules will have to be categorized on the basis of their implementation.

week 1 -3
I will be making mockups and getting them reviewed for the keyboard and also the new menu. I will start making the keyboard using HTML and  CSS  according to feedback from my mentor and community and design team.I am currently inclined towards gnome-shell on screen keyboard style keyboard which I feel is really nice.I will also be testing this with different screen sizes using developer tools.

week 4
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.I will be able to use the OSK alternatively with a physical keyboard.

Week 5-6
All the available direct mapping methods will be implemented.I will also start working on writing some test cases and prepare for an alpha release.

The on screen keyboard should be fully functional  by now with direct mapping IMEs implemented.

week 7 and 8
Adding IMEs with english alphabets and specials symbols and diacritics. These will be appended to the standard layout based on preferences from community and will require some time to collect feedback for all methods.

week 9
Polishing the menu and UI,write more test cases

week 10 and 11
A few of the doubtful input methods for OSK feature(translitera)  will be implemented on a testing basis and feedback will be colllected.

week 12 and 13
Work on the optional deliverables and a guide for adding new methods as well as adding this to a site.

POST GSOC
I would like to implement some minor features to the plugin as well as work with others to add more keyboard layouts.