User:Sujithvm

From SMC Wiki
Revision as of 18:11, 19 March 2014 by Tachyons (talk | contribs)

Personal Information

  • Name : Sujith V
  • Telephone : +91 7259281007
  • Freenode IRC Nick : sujithvm
  • University and Current Education : Pursuing 2nd year Computer Science Engineering at PES Institute of Technology, Bangalore South Campus.
  • Github : https://github.com/SujithVadakkepat
  • Why do you want to work with the Swathanthra Malayalam Computing? :

Swathanthra Malayalam Computing has been technologically serving a large part of Indian community by developing state of the art modules in Indic Language processing. It would be a great privilege to collaborate and work with SMC and simultaneously have an enriching experience of contributing to Open Source Community.

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

No.

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

No, this will be my first time participating in GSoC.

  • 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 :

No.

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

Yes, I would love to contribute to SMC even after GSoC 2014. The areas which I am interested in contributing to are Natural Language Processing Algorithms, Java modules and Bug Fixing.

  • Why should we choose you over other applicants? :

Good programming experience in Java, Android, Python, C#, C, C++ And Javascript. I have developed quite a number of Android applications and have also worked on projects with Natural Language Processing in Python using NLTK Library. Also I am a regular participant in online coding competitions and have established a good position in CodeChef, TopCoder and Hackerrank.

Proposal Title : Android SDK for SILPA


  • Summary

SILPA (Swathanthra Indian Language Processing Applications) comprises of a set of applications for processing Indian Languages. The project aims at the development of Android SDK for Silpa modules which can be used by developers to support their Indic applications.

  • Project Description

Currently all the SILPA modules and applications for processing Indian Languages are programmed in python and Android developers face the limitation of benefiting from these efficient language processing modules by using it as a web service and is devoid of proper support for Indian Languages. The project focuses on developing an Android SDK for SILPA applications by porting all modules to Android Library and packing fonts to achieve consistency in viewing texts of different languages on all platforms and hence bridging the gap between SILPA modules and Android developers. This SDK will enable developers to enjoy freedom from Android fragmentation and support their Indic applications in the dominating Android application market.

  • Benefits of the project

i) This library will help developers to support their Indic Android applications.
ii) Can possibly help millions of Indians who can communicate only in their native languages.
iii) Popularising Silpa in the developer community.

  • Project Objectives and Goals

The main goals for the project are summarized as follows:
i) Identification of modules that can be ported to Java and List of dependencies for each module.
ii) Preparing asset data and resources for all the modules (such as fonts, dictionaries, language specific maps and text references etc).
iii) Porting all selected modules to Java and adding API calls to libraries and Unit testing of all modules using JUnit.
iv) Building Android library for Android SDK.
v) Stress Testing and Documentation of all modules.
vi) Developing code snippets and sample Android application portraying usage of all modules.
vii) Releasing Android SDK under a license.

  • Implementation Details

i) Identification of modules that can be ported to Java and List of dependencies for each module :
This task mainly involves identification of modules (namely Indic Soundex, Payyans, Transliterator, Text similarity, Script Renderer, Guess Language, Katapayadi, Fortune , Syllabalizer, Sort, Hyphenator, UCA sort, Stemmer, Syllabalizer, Character Details and Spell check) which is to be ported to Java based on its feasibility and charting out an order of port based on dependencies of each module and its alternative for Java.
Dependencies and java alternative
Python Cairo – Java bindings for Cairo
Python Beautiful Soup – Jsoup for Java
Python lxml – TagSoup for Java
Python imaging – ImageJ


ii) Preparing asset data and resources for all the modules :
Asset data and resources for each module: Indic Soundex – phonetic codes for languages, Payyans – font map, Transliterator – CMU dictionary, Guess language – trigrams and language map, Katapayadi – language map, Hyphenator – hyphenator rules for languages, UCA sort – sort keys, Stemmer – stemmer rules, Syllabalizer – syllable list and language map, Character Details – Unicode character database, SpellCheck – spell check dictionaries.


iii) Porting all selected modules to Java and adding API calls to libraries and Unit Testing of all modules :
This task involves writing core language processing functions of modules efficiently in Java after which API calls to all library functions is written. All modules to be written under maximum language optimization. Rigorous unit testing of all library functions using JUnit and tweaking code to remove all flaws.


iv) Building Android SDK :
Task of building Android SDK can be sub divided into :
a) Creating base model classes for all modules.
b) Generating all constructors, getter and setter functions which are required to initialize each module.
c) Creating instances of the each module class and creating custom xml layouts for Android UI elements and views such as TextView, EditText etc which instances of class linked to them. For eg. TextView of Transliteration modules is designed to convert entered text into any specific language when text is applied to it.
d) The input for Indic languages in Android Application in provided by integrating Indic Keyboard developed by SMC itself.
e) Define dependencies for the project such as Java bindings for Cairo, JSoup, ImageJ, TagSoup which are required for modules such as Script Renderer.


v) Stress Testing and Documentation of all modules :
Extensive well written documentation of all classes and methods using Javadoc tool.


vi) Developing code snippets and sample Android application portraying usage of all modules:
Writing code snippets and other sample Java and Android codes so as help developers in benefitting from the Android SDK.


vii) Releasing Android SDK under license:
Silpa is licensed under GNU Affero General Public License. However license for Android SDK is to be mentioned by mentor.


  • Communication with Mentor

Contacted Jishnu Mohan and Hrishikesh K.B

Tentative Timeline

During Community Bonding Period

April 21 – April 30 : Communication with mentor regarding the approach and developing definite objective list for the project after careful scrutinization of existing modules.
May 1 – May 10 : Familiarizing myself with libraries such as ImageJ, JSoup, Cairo and TagSoup
May 11 – May 18 : Familiarizing myself with creation of Android libraries and creating custom views for each module.

Coding Period

May 19 - May 26 : Preparing asset data and resources for all modules and importing them into the project.
May 26 - June 6  : Complete porting of half of modules and discussion with mentor regarding the same.
June 7 - June 8  : Tweaking codes and implementing suggested changes as per remarks given by mentor.
June 8 - June 24 : Complete Porting of all modules with testing.

Mid-Term Evaluation

June 24 – June 30 : Integrating all modules into Android library with creation of base model classes, constructors, getters and setters and other essential requirements.
July 1 – July 10 : Creating custom xml and views which developers can integrate into their code
July 11 – July 20 : Bug fixing and Stress Testing of android components and discussion with mentor regarding the same.
July 20 – July 30 : Optimizing, Documentation, Fine tuning, Code clean up.
August 1 - August 10 : Writing sample codes in java and building sample Android fragments and activity demonstrating features of SDK.
August 11 – August 17 (Pencils down) : Discussion with mentor, writing tests, improving documentation and adding project license.

End-Term Evaluation

About Me

I am Sujith V, BE Computer Science Student from PES Institute of Technology, Bangalore. My programming interests lies mainly in algorithms, data structures and application development domains. I possess a fair amount of knowledge and experience in Java, Python and Android Application Development. I have developed quite some Android Applications. Among few are : i) GuideDog - An Android application to enable visually challenged people to use features of a smart touchscreen phone through user friendly gestures and voice. ii) Mechanics - An Android application for engineering students to resolve vectors graphically, access engineering calculator, enhanced notes, visual animations. iii) Sudoku - Android application re invent popular game Sudoku. iv) Worked in Python in creating NLP modules such as efficient sentiment analyzer, Readability index for text etc. v) Worked in Unity 3D to create animation in response to user moves. I m also a regular participant in online coding platforms such as Codechef, Topcoder and Hackerrank.