User:Diadara/GSOC2013proposal/

=Porting remaining modules & separation of template dependencies in flask based silpa=

Personal Information
# Email Address                        : nithin111@gmail.com # Telephone                            : +917737673502 # Freenode IRC Nick                    : diadara # University and Education             : Dual degrees in Physics and Computer Science from BITS Pilani,Pilani Campus #blog                                  : My existing blog at posterious will go down soon as posterious is shutting down,I will migrate it to github after my exams

Why do you want to work with the Swathanthra Malayalam Computing ?
SMC's goal of bringing indic languages to web and other technologies  appeals to me  and I have come to like and respect the community members from the short time I have spent interacting with them.My mother tongue is malayalam and I have been living in Rajasthan for past 3 years and Now I realise how initiatives like SMC will help and inspire more people to use a computer in a language they understand .I can identify with the cause and also like the community and would love to contribute.

Do you have any past involvement with the Swathanthra Malayalam Computing or another open source project as a contributor?
No, I have not worked with SMC before the gsoc application period.I have been going through silpa-flask code base and I have added wikimedia's jquery.ime input method to the site and is available under ui redesign branch .I haven't contributed much to other open source organisations apart from a few bug reports.GSoC has been a wonderful learning experience for me till now,I got my first pull request accepted and I am looking forward to contribute more.

Did you participate with the past GSoC programs, if so which years, which organizations?
No,this is my first time

Do you have other obligations between May and August ?
No, I don't have any major obligations this summer and I am confident in finishing the project in time.I can devote 40 hours a week for the project.

Will you continue contributing/ supporting the Swathanthra Malayalam Computing after the GSoC 2013 program, if yes, which area(s), you are interested in?
Yes ,I would like to contribute more to SILPA ,First of all I would like to volunteer for the maintenance of SILPA modules and the website.I am also interested in Natural Language Processing and would love to work on something by making use of SILPA and also contribute back.

Why should we choose you over other applicants?
I have a very clear Idea about what has to be done and what is the utility of the project.I am familiar with the old silpa framework as well as the flask based silpa.I have already ported one of the old silpa modules to the new format Syllabizer and I am also comfortable using flask and read most of the documentation relevant to my part of the project.I have experience with MVC frameworks like ruby on rails, Spring MVC and python knowledge as well as experience in front-end development using jQuery ajax calls and web services.I am confident of completely porting all the python based modules into flask based silpa and repackage them for PyPi adhering to all PEP guidelines with their templates in the given time.

A brief Overview
The original SILPA 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.The current implementation requires the templates to be included in the template folder of the main Flask based app.My job will be to restructure individual modules by including their templates in their respective python packages,re-write SILPA flask to use the template files from the python package and also port the rest of the modules to the new format by creating templates and packaging them as well as testing them.

The need you believe it fulfills
1. Separation of templates takes care of this issue [More seperation for modules]

Separation allows for easier development of new modules as well as allows the main app to be installed with a smaller set of modules and main application can be agnostic of the installed modules

2. Porting remaining modules to silpa-flask

This allows for more of the modules to be used as stand alone modules as well as extends the sipa-flask app with more installable modules. Silpa-Flask currently has 7 installable packages available in PyPi.Original silpa has 18 [List of all modules] Also some of the modules have common dependencies which has to be separated as standalone modules.(eg:langdetect.py for most of the ported modules.A separate module like guess language in old silpa should be used by all of them to avoid code duplication)

3.Testing and general bug reporting and fixing

Old silpa project had unit tests written for it and these will be adapted for the new modules.Also a system for browser based testing Selenium can be used for easily testing the application.This will allow for easier bug discovery and fixes. A few bugs I discovered while checking out the source. chardetails issue#7 chardetails issue#6

How do you plan to implement the proposal
1. Separation of Templates

Flask uses Jinja2 templating engine and Jinja2 has a Package loader method for loading templates from packages ,This will be used for loading templates from packages.Silpa-Flask will be modified to use templates from packages.And templates will be packaged into the respective python packages without adding dependencies.

custom templates with flask jinja2 loaders

2.Porting remainig modules

I have already ported one of the simple old modules into a standalone SILPA-flask compatible package(Syllabizer) .The same will be done to rest of the packages.Also templates have to be made for these modules.These templates will be made using twitter bootstrap and Jquery to get a consistent look with the already ported modules.I have past experience using twitter bootstrap as well as Jquery to build apps using ajax calls and web services.

3.Unit testing and bug fixing

Unit tests will be written using unittest module and browser based tests using Selenium.Also tests will be included with each of the separate python modules and and all of the already packaged pypi packages will be tested before re-packaging after adding templates and unit tests

Previous Experience
Although I haven't made many 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 and javascript and Jquery.I am an avid reader of Hacker News and various techblogs and spend time understanding technology and thus have a foundation for quick learning.I have worked in a variety of platforms from my arch linux box ,avr micro controllers and also my raspberry pi.I am also big fan of MOOCs like coursera,,edx and udacity and completed a few programming courses like SaaS course from edX Certificate and familiar with agile development patterns.

I use vim for most of my work because it is really fast in getting things done.I have been using git for a year now to maintain my projects and I am fairly comfortable using it.

Things that I have made
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.land data visualisation (This page was designed for lan hence a huge png file was included which will take like a minute to load).source

I am currently doing an internship as part of an industry exchange programme at 24-7xs.com where I am building a Jquery based web client for a REST api.link use admin@param.com and admin as username password to check it out ,I must warn you it's extremely buggy

I have also built some rails apps like the social food share app I made during a social hackathon conducted at my college(It came second) which is intended to be used for sharing home made food to people who can't cook.source

I have also made a few cool scripts like conky-clementine that can display display clementine's now playing information using conky and a few other things [diadara@github]

Before June 17 (Community Bonding Period):
I am quite familiar with silpa code base ,flask and also python packaging 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.and fix bugs if any

week 5 and 6
Start porting old packages to silpa-flask, make jinja2 templates and tests.Package two or more package before mid term evaluation.

July 29 (Mid-term Evaluation):
All the existing packages and two or more newly ported packages will be packaged with their respective templates and tests and will be ready for submission to PyPi

Week 7-11
From now onwards work on one module at a time and make the new templates ,package them and write unit tests.I will be able to complete the porting of modules at a much faster pace as I will be more familiar with testing by now and hopefully convert all of the modules

Week 13-14
Will be used as a buffer and also for general bug fixing and final polishing according to PEP recommendations and prepare the packages for submission to pypi.I will also write some documentation on how the system is structured and prepare a walkthrough on how to create a new module for new developers to start contributing to silpa easily.

POST GSOC
In case any of the modules are left to be ported due to any unforeseen issues I would complete it after GSoC.

Mentor
My proposal is based on two of the connected ideas from the suggested ideas which I feel can fit into duration of a gsoc project.I have talked to copyninja and jishnu7 at the irc channel.