From SMC Wiki

Google Summer of Code Project Proposal - Porting SILPA Modules to jQuery

Personal details


Jishnu Mohan


FreeNode IRC Nick



I am a undergraduate pursuing a Bachelor's in Computer Science at the National University of Singapore.

Motivation for working with SMC

I was drawn to work with Swathanthra Malayalam Computing for a number of reasons. Firstly, I feel that the need that it is trying to fulfil is a very real one, and I believe that these efforts can go a long way and act as a transformational force by making computing tools and powers accessible to an increased pool of people. Specifically, as a Malayali and an Indian, this project offers me a way to contribute not only to the open source community but also to my homeland and culture.

Past Open Source Involvement

I have no past experience with open source, and I hope that this can be the first of many contributions to the open source community.

Past GSoC Involvement

I have no past experience participating in Google Summer of Code.

Commitment Level

I have no other obligations for the months May, June and July as this is the summer break for my university. As such, I would be able to devote all my time and commitment to the project over this time period.

For the month of August, although it would be semester time, I am confident that I would be able to put in atleast 40 hours per week - but most of the time would be in the weekends.

Overall, I feel that I am able to commit sufficient time to do justice to the project.

Continuation of Support of SMC

I would love to continue to work with SMC after GSoC. Specifically, I am more interested in the algorithms aspect - possibly increasing the functionality of the SILPA modules and/or the framework to allow developers to use it with greater ease.

Why I should be selected over others

I believe that I have the necessary commitment as well as the requisite background required to complete this project succesfully.

As detailed below, I have some experience in development with JavaScript (including jQuery), and Python, which would definitely help me in porting the current Python algorithms into jQuery plugins succesfully.

Proposal Description


This proposal is motivated by the idea introduced in the Summer of Code Project Ideas Wiki. This project involves porting current SILPA modules into a jQuery based library. This would be done through porting the algorithms used for various purposes in the current SILPA modules into JavaScript making use of jQuery selectors for increased convenience.


Providing functionality of SILPA in the form of jQuery based library could be very helpful as it would increase the flexibility of developers seeking to use SILPA and also allow implementation of various other features due to the JavaScript implementation.

Flexibility would be increased as web-developers would have an option to use client side services instead of being restricted to HTTP requests. Client side processing would also allow other utilizations - for example, it would allow search of indic text on the current HTML page through only client processing. Another option that would be opened up by such a feature is the use of SILPA modules when using server side JavaScript through node.js .

Moreover, jQuery is increasingly popular and an increasing number of developers find it convenient to use jQuery selectors and functions when developing. It would be beneficial for SILPA to appeal to this popularity and increase the convenience of its use for those with such a preference, which would lead to greater use of these modules and a boost to localisation efforts.

Relevant Experience


I am quite well versed in JavaScript, primarily since Programming Methodology in my university is taught in JavaScript. I have therefore used JavaScript for quite some time and am familiar with its syntax as well as its various quirks.


I have had some exposure to the main jQuery library. I have completed the jQuery track available on CodeAcademy, a free public site which builds syntactic knowledge of various programming languages and tools.

However, the track involved only a small subset of jQuery's powers, and therefore I do need to work more on getting used to its capabilites in order to fully utilise it. Moreover, I have not written a jQuery plugin before - but I believe that the strong documentation provided on the jQuery website would be sufficient in helping me build this knowledge.


Since the project involves porting from Python, an understanding of it is necessary. I had completed MIT OpenCourseWare's introductory Computer Science course in Python - giving me familiarity with the syntax and philosophy of Python. More recently, I worked on a social web application for Facebook using Google App Engine and Django which further boosted my understanding of Python for web scripting. I believe that this experience would help me when understanding and appreciating the current SILPA modules and porting them effectively.


I have some experience using Git and GitHub as it is the preferred version control for any group work for projects or hackathons. However, my knowledge of it is quite basic, as I have not used it for bigger projects and have not familiarised myself with common best practices. I believe that I can quickly develop these practices and habits for effective version control.


I believe that the porting of modules can be done effectively on a module by module basis. For each module, the methodology would involve:

1. Reading and fully understanding the program flow in the current implementation.

2. Write test cases to test for implementation.

3. Translating the algorithms involved into JavaScript using jQuery selectors in the jQuery plugin.

4. Run test cases and modify accordingly to ensure correctness of plugin.

I aim to port Approximate Search, Soundex, and Transliterate, identified as key modules for porting to jQuery, by the mid-term evaluation - atleast in a rough form. The reason for this is that I believe that it is more important for these to be completed first as they have the greatest potential usage, and also because I expect to be able to dedicate most time before the mid-term.

As of now, I believe that it would be best if each module ported were a separate jQuery plugin, as there seems to be little overlap in functionality. Also, from a web developer's point of view, it would be wasteful to make the client process more data than necessary.

Some challenges are anticipated in the implementation, namely:

1. Some modules may be unable to port because of dependencies in the current implementation. For example, the prospective mentor has informed me that the rendering module has system level dependencies which would make porting to jQuery difficult.

2. File size would be an issue, as jQuery is mostly used on the client side. A number of modules, such as the Dictionary and the Random Quote require databases, which might be too large if it were downloaded by the client. Work and consideration must be put into whether these modules would work in jQuery.


A rough timeline is proposed below.

Period Overview Details
Before June 16 Before Official Coding Period Starts Develop high degree of familiarity with current SILPA modules and code through reading and testing of code. Develop better understanding and familiarity with jQuery and development of jQuery plugins, through writing simple jQuery plugins and understanding its behaviour. Develop familiarity with testing protocol and common testing tools for the browser to be able to effectively and efficiently write test cases in implementation.
June 17 – July 1 Begin Porting - Guess Language, Sort, SpellCheck

Begin porting of modules into jQuery plugins with the modules Guess Language, Sort, and SpellCheck, which are relatively simpler in terms of algorithms. This period aims to develop familiarity with the practical porting process, both the conversion and the testing, and resolve issues which may arise when changing platform.

July 2 - July 31 More Porting - Transliterator, Approximate Search, Soundex Port the modules which have the most potential application as jQuery plugins and also present some algorithmic challenges - namely the Transliterator, Approximate Search and Soundex modules. These modules are identified as key since there are a number of useful applications of having these in jQuery. For example, dynamic transliteration or search of the client's webpage is enabled. Keep up communication with mentor in preparation for Google's mid term evaluation.

August 1 - August 25 Finish Porting - Remaining modules and Full testing

Port as many of remaining modules as possible. The modules remaining would be Hyphenation, Syllabalize, Random Quote, Dictionary. This period would also be utilised to test all developed plugins thoroughly.

August 26 - September 5 Documentation Create the required documentation for the ported modules.
September 5 onwards Cleanup Cleanup code and check for bugs. This time is also a buffer in case of unforeseen circumstances.

Something You Have Created

My recent project done over a hackathon is a matching application, List Me Maybe, built for Facebook, using Google App Engine and Django( App - ; Source - The project is still in a state of development, and is quite unrefined.

My GitHub profile is at Although it is currently quite sparse, I hope to contribute more to the open source community and build more things soon!

Communication with Mentor

I have had some interaction with the mentor as indicated in the Project Ideas wiki, Jishnu.

SMC Wiki Link