Milkshake/jQuery.IME extensions for Firefox and Chrome

Name and contact information
Name: Praveen Singh Email: prageck@gmail.com IRC or IM networks/handle(s): Prageck

Location: India

Timezone: UTC+5:30 (IST - India) Typical working hours: 11 am to 6 pm, 10 pm to 1 am (IST) (flexible)

Project summary
jQuery Input Method Editor is a collection of more than 150 input methods across several languages. It is the jQuery version of the input method tool, Narayam, which is used across several Wikimedia projects. Currently jQuery.IME is provided from the Wikimedia servers.

This project mainly aims at: Having the jQuery.IME installed as a plugin in the browser itself, users would be able to use it on any website.
 * Porting jQuery.IME to Firefox and Chrome extensions
 * Providing on demand loading of input methods for different languages rather than injecting all 150+ input methods to a web page.
 * Working out a solution to update the extension from the upstream project with minimal manual effort

Required deliverables

 * Google Chrome extension
 * Port the jQuery.IME code to Chrome extension in accordance with Chrome extension architecture and workflows


 * Mozilla Firefox extension
 * Port the jQuery.IME code to Firefox extension in accordance with Firefox extension architecture and workflows


 * Implement on demand loading of input methods for different languages
 * Implement a mechanism to update the extensions from the upstream project with minimal manual effort
 * Include user preferences/options that would get persisted in the browser
 * Getting the extensions reviewed and published on Chrome Web Store and Firefox Add-ons repository
 * Writing unit tests for the added functionality
 * Full Documentation

If time permits

 * Port jQuery.IME to other major browsers (Internet Explorer, Safari, Opera etc).
 * Overall improvements in UI to make the extension more user friendly.

Project Schedule

 * Community bonding period (2-3 weeks)
 * Study jQuery.IME code in detail and get familiar with the overall coding style and structure.
 * Study Google Chrome extension architecture and workflow in detail
 * Study Firefox extension architecture and workflow in detail
 * Discuss proposed code structure and UI mock-ups with the mentor and the community.
 * Fix certain open issues to gain a deeper understanding of the code.


 * Implement first working iteration for Google Chrome (1 week)
 * Port jQuery.IME to Google Chrome extension according to the discussed mock-ups


 * Implement required features in Chrome extension (2 weeks)
 * Implement on demand loading of input methods
 * Implement update mechanism to synchronize the extension with the upstream project
 * Implement persistent user preferences/settings
 * Perform unit testing using QUnit


 * Port jQuery.IME to Firefox extension and replicate all functionalities (1 week)
 * Port jQuery.IME to Firefox extension
 * Implement on demand loading of input methods
 * Implement update mechanism to synchronize the extension with the upstream project
 * Implement persistent user preferences/settings
 * Perform unit testing using QUnit


 * Code review and documentation (4 weeks)
 * Code review, testing, bug fixes and complete documentation.

About me
I am a computer science graduate from Jaypee Institute of Information Technology, India, currently pursuing post-graduation in computer science from the same college. I love working on web technologies and have been doing web development for the last 2 years. I have good understanding of javascript, jQuery, CSS and php. JQuery.IME can prove to be a very useful tool if it can be used on any webpage. I have prior experience in developing browser extensions and my skills suite this project. So I chose to work on this project.

Participation
During my work hours, I am always logged on to IRC and can be easily reached at #mediawiki, #wikimedia-dev and #mediawiki-i18n.

I would discuss my progress using regular mails to the mentor. I will communicate with the community over the mailing list (Wikitech-I) for any feedback, suggestions and queries.

All the code will be hosted on Github, so that anyone can easily track my progress and give feedback.

Past open source experience
I have been a regular contributor to the Open Source Developers Club of my university. I fixed a bug on Mediawiki core. I collaborated on a Google Chrome extension earlier.

I have earlier collaborated on a Firefox extension and a wordpress extension as my college projects. I co-organized several Open Source meet ups in my university including OSSCamp 10.11, and Firefox 4 Launch Meetup. I have been attending a few local community meetups about open source including DrupalCamp. Whenever possible, I make all my code freely available on github.

Updates on the project
I have implemented a working jQuery.IME chrome extension. It currently supports only a few languages (Hindi-transliteration, German, and Greek). I am working to implement on demand loading of languages in it. The code is available at https://github.com/pravee-n/prototype.jquery.ime.