User:Diadara

GSOC 2013 proposal for Swathanthra Malalayalam Computing 

Who are you ?
I am Nithin P Saji pursuing dual degrees in Physics and Computer Science from Bits Pilani,Pilani. Currently I am in my third year of study here. I hail from Kollam, Kerala a small town at the southern tip of India,I have done my pre university education here.I love reading fiction,non-fiction,manga,fan fictions, tech blogs and also software docs.

You can mail me at nithin111[at]gmail[dot]com,you can look at some of the code I have written at http://github.com/diadara. My irc handle is diadara

What is you programming experience ?
I started out with c++ from school,mostly written file handling stuff and other simple console apps and a few interesting stuff with graphics.h, lately I have been playing around with opengl and plan to build something.I have written code in a number of languages c,c++,c#,Java,python,ruby,,haskell(I tried out Xmonad),lua,php and consider myself fluent in python,ruby, c++ and Javascript.I have experience in making web applications with traditional lamp stack from university course on databases as well as asp.net web forms which I used for making a entry/exit record keeper for my college's library that can display peak times and also retrieve information for analysis.

Things that I have built
During my internship at VISL,SAIL,Bhadravathi,I made a intranet news website for the organisation.I also made a google maps based website to display the public land records of the company township.

I am currently doing an internship as part of an industry exchange programme at 24-7xs.com where I am building a Jquery and angularjs based web client for a REST api. I have also built some rails apps like the social food share app I made during a social hackathon conducted at my college which is intended to be used for sharing home made food to people who can't cook.

Most of the things I have made are available at github.

I am a FOSS enthusiast and was a distro hopper before I settled on arch linux. I am also a bit of a linux evangelist at my collage and successfully converted a fair number of people.I use vim for most of my work because it is really fast in getting things done.

Unfortunately I haven't been introduced to SMC before GSOC considering that I speak Malayalam. I have been quite amazed by the enthusiasm shown by the community members of SMC and I can identify myself with the cause they are working for.

I have been using git for a year now to maintain my projects and I am fairly comfortable using it.

What is you project ?
The original SIPA project was a monolithic app with a fair number of dependencies and provide a large number of language processing tools.The project is currently being rewritten so that the tools can be separated and used by anyone and a flask based app which makes use of these modules to provide a web interface for these tools as well as a JSONRPC interface for other applications to make use of these tools.I I would be completing the porting of them modules and separating the templates from silpa-flask.

Currently the templates used by these modules are contained in the main app,my job will be to package these templates into their respective python packages and modify the flask based app to load these templates dynamically using jinja2 's package loader functionality. This is done so that silpa can be installed with a select few of the modules without the main app having all of the templates.This will make writing templates for new modules easier as the python module and templates can be made and packaged into one package without adding any other dependencies allowing modules to run standalone as well as nicely plug into the main silpa app to add functionality.

Once the repackaging of the already ported modules are completed,I will be in a position to port rest of the modules into the new format.This will involve creating new jinja templates for each of these modules and packaging them.I have experience working with twitter bootstrap and Jquery ajax, and this can be done fairly quickly.

Some of the already ported modules make use of certain common tools such as detect language which are currently packaged with each of them causing some level of code duplication this will be separated and packaged into a separate reusable packages.

Also repackaging of the modules and templates also gives as an opportunity to write tests for all of the modules as well as the web interface.There are reported and unreported bugs with some of the modules and all the bugs will be reported and bugs that can be solved within the time frame will be solved.

Why me ?
I am fluent in python and familiar with most of the source code in silpa-flask repository as well as old silpa repository. I have been learning flask during the last two weeks and I have built an app using templates loaded from a package. I am familiar with the templating system used and I have added jquery.ime input method to the flask based silpa app.I have also ported one of the old modules(syllabizer) to a silpa-flask compatible standalone package.Thus I have a very good idea about the job involved.I can also read and write in Malayalam and Hindi thus I am in good position to test the apps also.I have also completed SaaS course offered on edX by UC Berkeley with a certificate of accomplishment and thus familiar with agile development pattern.

Contributions to SMC
One of the proposed ideas was to add jquery.ime plugin to SILPA .I have added this and my pull request has been accepted.I have also done some random code cleaning. I have ported one the old modules to work with flask based silpa .It is functional as a standalone package.The template for this package will be added once the structure of the modules are finalised.

Deliverability.
Restructure silpa to use templates from packages.

Repackage already ported packages with templates

Port remaining packages from old silpa to work as standalone packages and also make new templates to be added to these packages to be used by silpa.

Write unit tests for each of the individual packages along with their restructuring

General Bug fixing of the packages.

Add new documentation/add from old documentation

Timeline
I am quite familiar with the code base and the technologies involved so I will use this time to get familiar with unit testing in python and browser based test suites like selenium,smoke etc. Also since my project involves a lot of python packaging,I will use this time to get familiar with peps recommendations on conventions to be followed while packaging.

week 1 and 2
Restructure silpa and repackage one of the new packages with the template folder and write unit tests and selenium based browser testing

week 3 and 4
repackage all of the already ported packages and write tests for them.

week 5 and 6
General Bug Fixing ,Generate documentation using sphinx and integrate it to the site midterm evaluation

Week 7-11
From now onwards work on one module at a time and make the new templates ,package them and provide proper documentation.

Sphinx would be used to generate documentation for the whole system and added to the main site.

Week 12-13
Will be used as buffer and also general bug fixing.

Post Gsoc
I would like to take care of the maintenance of the whole application suite.