User:Janwin/Flask based Silpa-template packaging

From SMC Wiki

Google Summer of Code 2013 Proposal for Swathanthra Malalayalam Computing


Personal Information

Email Address                    ː jisacs1492@gmail.com
Blog URL                         ː http://techytrends.wordpress.com/
Freenode IRC Nick                ː Janvin
University and current education ː BTech Computer Science, Calicut University


Why do you want to work with the Swathanthra Malayalam Computing?

I find Swathanthra Malayalam Computing as the best way to contribute to both the open source software and my mother tongue. SMC has got a wide reach and possibilities in language processing and liberalization of information across regional boundaries. I want to enjoy the spirit of free and open source software development in a global level.

Do you have any past involvement with the Swathanthra Malayalam Computing or another open source project as a contributor?

No.I was not familiar with SMC. Though I used to employ free open source software, reprogram it and learn as a hobby, I haven't explored the chance to contribute to open source projects in a global level before.

Did you participate with the past GSoC programs, if so which years, which organizations?

No. I have not participated in GSoC programs before.

Do you have other obligations between May and August ? Please note that we expect the Summer of Code to be a full time, 40 hour a week commitment

I can find time for GSoC without a fail from the end of may till July since we have our summer vacation meanwhile. In august I can find 3 hours each weekday and about 12 hours in the weekends which helps me to dedicate around 40 hours a week. Since GSoC is very important to me I can assure you my time.

Will you continue contributing/ supporting the Swathanthra Malayalam Computing after the GSoC 2013 program, if yes, which area(s), you are interested in?

I want to contribute to SMC even if you could not get me on board through GSoC. I would be glad to be a part of SMC in developing a better text to speech converter. I want to see SMC's text to speech application being used to translate free online tutorials.

Why should we choose you over other applicants?

I am a FOSS enthusiast for years and have been a part of FOSS cell in my college for the past 2 and a half years. I have taken sessions on FOSS and bash scripting for juniors. Swanthanthra Malayalam Computing will be a great platform for me to contribute more for FOSS. I have created an event notification application for our campus and am familiar with web frameworks like Django. I have used HTML and CSS templates for the Django framework. Since I am comfortable with python scripting it will help me in this project.

I have been familiarizing myself with the Flask framework and I tried small applications using it. Since I have a previous experience with a web framework I can catch up.

Proposal Description

An overview of your proposal

SILPA is being rewritten to the new framework in Flask. Several modules like soundex, Transliteration, Spellchecker, Hyphenation, Chardetails, Payyans etc have already been ported to Flask. Separating each of these functions as individual modules in python is better for the further development of each module. Templates for the individual modules have to be separated in order to accomplish this goal. Using Blueprint class in flask we can provide a separation at Flask level and share application config. Blueprint records operations to execute once an application is registered. Once we create blueprint instances we specify our template folder. It determines whether to override the module specific template or not. Our aim is to constrain the templates of a module to itself and thus make the module completely independent of others.

The need you believe it fulfills

Separating modules from SILPA allows the easy debugging and separate testing of a module. Otherwise each change we make to a module needs to be reflected in the common templates folder and module manager. As I suggested earlier each module in SILPA has a far reach regarding its application. Once we decompose the application into various individual modules of distinct purposes it can easily be integrated to another language application. For instance the Text to Speech module can be integrated with any web based tutorials.

Any relevant experience you have

I have used python scripting to develop a web based application . Also I am familiar with the working of JSON which had been an area of my study while using python-twilio. I am experienced in Django framework and it helps me to learn Jinja2.

How you intend to implement your proposal

The suggested basic structure of flask based Silpa is [python-silpa and python-<module>]. The aim of this project is to eliminate the dependency of module templates and application template. The proposed structure :-

-core -static -templates

  -core templates

-modules

  -module 1
      -module 1 template
  -module 2
      -module 2 template

How to implement (referring the link provided by the mentor).

Add a new module to our app. We need to change its view separately -views.py . Instantiate the blueprint for this module. While creating respective blueprint, it is useful if its template folder is specified as a parameter in Blueprint constructor. Consider the priority of the template folder. For each blueprint instance we can have a different template folder (preferably with a different name to avoid the error. Flask shows error while using the same name for more than one template folder).

All the modules can be then loaded using the sample code provided in the link [1].

The modules that are completed in Flask framework can have different views once it is instantiated as a blueprint of the main application -Silpa. Completing the porting of modules to the new framework is a part of this project also. I am planning to spend time on conceptualizing the independence of a module without repeating the common folders within them.

A rough timeline for your progress with phases

Duration Description Mile Stone
Before May 27 Before Announcement of Candidates Familiarize with the Flask framework, revise web application procedures. Clarify the current doubts on SILPA. Try creating smaller modules and familiarize with the features to be considered while employing blueprint class.
May 28 – June 16 Before Official Coding Period Starts Make improvements and changes in my progress according to the suggestions and guidance of the mentor. Understand the possibilities and limitations of the project. Discuss the optimizations that could be included, with the mentor. Learn more about avoiding duplication of modules and optimizations.
June 17 – July 3 Official Coding Period Starts Try out the coding for a single module. Test it and find the effectiveness of the code. Get help from the mentor in completing the other modules ported to new framework. Code the template packaging for new modules. Debugging and testing for new modules have to be done meticulously.
July 3 - July 29 Preparing for mid term evaluation Find solutions for the errors confronted in the first phase of coding. Submit the code completed under the guidance of mentor till then for the mid term evaluations.
August 1 -10 After mid term evaluation Refine the scripting as per mentor's suggestions.

Make changes so as to improve independence of individual modules. Reflect the changes suggested by the mentor in each module.

August 10-29 Completing the code Extend the code for all modules that are ported to the new framework.


August 30 - September 10 Final Stage Documentation of the project.


A buffer of one week has been kept for unpredictable delay.

Tell us something about you have created

1.Event Notifier for college Event Notifier is a web app which sends notifications on new events to students and staff in college. Git hub repository of the project https://github.com/jisasebastine/GECLive_EventNotifier
Blog post http://techytrends.wordpress.com/

Have you communicated with a potential mentor? If so who?

I communicated with the mentor of my project, Jishnu Mohan and Jain Basil regarding the submission of the proposal.