User:Pranjaldaga/improving webfonts in silpa

Google Summer of Code 2013 Proposal for Swathanthra Malalayalam Computing Project:"Internationalize SILPA project with Wikimedia jquery projects, Improve the webfonts module in Silpa using jquery.webfonts and provide more Indic and complex fonts as part of it."

Personal Information
Email Address                   ː pranjaldaga@gmail.com Webpage                         : http://about.me/pranjaldaga Blog URL                        ː http://pranjaldaga.wordpress.com/ Freenode IRC Nick               ː pranjaldaga University and current education ː BTech Computer Science and Engineering, Vellore institute of Technology, Vellore

Why do you want to work with the Swathanthra Malayalam Computing?
The project which I aspire to take up for GSoC 2013 involves "Improving the webfonts module in Silpa and providing more Indic and complex fonts as part of it", which in my opinion, goes in harmony with the theme of the organisation. The slogan of the organization "എന്റെ കമ്പ്യൂട്ടറിനു് എന്റെ ഭാഷ" (My language for/on My Computer) surges an adrenaline rush through my body as a successful project under SMC will mean better language localization. Under proper guidance, I will be able to contribute something productive as I will get a chance to channelize my potential in the right direction. The major thing that attracts me to take a project in GSoC 2013 under Swathanthra Malayalam Computing (SMC) is that the application of this project in real life will help the world in moving an inch forward towards making Language Computing better.

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. I got to know about it through GSoC only. Well, I have been to the world of open source for quite a while and I have made some recent projects like Translate-It (https://github.com/pranjaldaga/Translate-It), FontsForWeb (https://github.com/pranjaldaga/FontsForWeb) etc. Also, I have submitted patches to SMC and various other organizations on github.

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
No, I have no other obligations between May and August. So, I can commit atleast 40 hours of work per 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?
I would continue to contribute to SMC after GSoC 2013 as I love Language Computing. I will try to be specific to those things which relate to styling like Webfonts as I think I can work better in this field.

Why should we choose you over other applicants?
Well, as I do not know the other applicants and their applications, so I really cannot comment over them, but I am confident enough, under proper guidance. I have worked on HTML, CSS, Ruby on Rails, Python, PHP, MySQL, Javascript, Django, node.js and also have a good amount of experience with frontend frameworks like jQuery, Twitter Bootstrap etc. I will be handful for Swathanthra Malayalam Computing (SMC) as I know I have the will power and the major knowledge required so as to be a good tool for the project, and by saying this I am not being pompous but these qualities are not possessed by everyone. I think prior work is very much important to take up any project and so I have created a github repositories recently Translate-It (https://github.com/pranjaldaga/Translate-It) which translates a given string from one given language to another using Google APIs and FontsForWeb (https://github.com/pranjaldaga/FontsForWeb) which creates fonts for several browsers.

An overview of your proposal
According to http://flasksilpa-indic.rhcloud.com, SILPA (rewritten in Flask framework) is a web framework and a set of applications for processing Indian Languages in many ways. The following things can lead to a stable and better framework for SILPA:

For now there are 12 Indic scripts (or to be more precise languages), so in the first place we need to include more. The idea of creating a built in tool to input in Indian Language should also be extended to a framework. Internationalize SILPA using jquery.ime and jquery.i18n libraries from Wikimedia.

Currently Silpa provides 36 webfonts and the potential GSoC student needs to add more fonts to this collection. I think that this idea may be extended to scripts also. Also, to allow SILPA to be accessible in all the browsers, I think we not only need to develop .ttf fonts but also .eot fonts as IE 9 supports .eot fonts only. When I raised this issue on IRC, Jishnu Mohan (jishnu7) told me that woff must also be included. So, I'll go with all three of them i.e., ttf, eot and woff fonts. About providing font preview and download options, something like https://www.google.com/fonts/ maybe helpful with some changes in the interface of course.

Finally, feedback from the masses is really important. I thought of building stats including graph for public usage of the SILPA framework and the API

The need you believe it fulfills
After the completion of this project, SILPA would surely be seen as an internationalized(as Internationalization will adapt SILPA to different languages and technical requirement of target market), more extensive(as more scripts and fonts will be added), elegant(as the framework will become smoother, people can then input in the language they want)and flexible(previews and download options will be added). About the API support, I think that SILPA fonts should do a better job of allowing other applications to be built on top of their API and thus providing a clean API so that other sources can use the fonts from SILPA in their work. Also, improved documentation will help visitors use the developed resources in a fluid manner.

Any relevant experience you have
I have worked on HTML, CSS, Ruby on Rails, Python, PHP, MySQL, Javascript, Django, node.js, and also have a good amount of experience with Git and frontend frameworks like JQuery, Twitter Bootstrap etc. I'm currently working on the Flask framework as SILPA has been rewritten on that. Coming to project-specific experiences, I have recently created two git repositories in relation to Language Computing, FontsForWeb(https://github.com/pranjaldaga/FontsForWeb) and Translate-It(https://github.com/pranjaldaga/Translate-It).

How you intend to implement your proposal
Language Input depends on the recognition of the language in the framework as well as methods to input characters within the language. Most common ways of Indian language input in software is through usage of logical keyboards based on mapping the standard keyboard. Keyboard layouts for Indian languages also require much deliberation before implementation and usage. The INSCRIPT keyboard maps the standard QWERTY keyboard for Indic scripts. The keyboard overlay exploits the logical ordering of Indian scripts, bringing about a common structure among all the scripts, with the vowels on the left hand side, and consonants on the right.

The presentation of Indian Language scripts requires contextual processing for output and display, due to its complex nature. Main issues that need to be tackled are those of conjunct formation from more than one character and processing of such clusters within a document. For the requirements of Complex Text Layout, i.e. text rendering, processing logic for arrow keys, positioning of caret and cursor, backspace/delete processing etc. character clusters lend a new dimension. Some typical requirements of Indian script Complex Text Layout processing are that the arrow and mouse events should result in the caret being positioned at cluster boundaries, and not within the cluster. Deletion should remove the entire cluster containing more than one code point, while a backspace operation should be allowed to remove characters one by one. Combining characters also need to be considered while selection, cut/copy/paste and text break issues. To find a combination for Indian Languages, a text-processing engine for Indian scripts should be able to know character behaviour, as in whether it can be involved in a combination with its neighbours. This involves logic processing for finding a combination in a specific language. Such logic can be developed within the i18n implementation of BreakIterator. The BreakIterator is used to find a character boundary, based on logic provided on the particular script. This character boundary logic, accessed through interfaces, can aid the text-processing engine in finding valid character combinations.

To implement my proposal, I have exclusively created two Github Repositories https://github.com/pranjaldaga/FontsForWeb and https://github.com/pranjaldaga/Translate-It. Here is the CSS showing how the Webfont part will be implemented :

@font-face{ font-family: ''; src: url('fonts/ .eot'); src: url('fonts/ .eot?iefix') format('eot'), url('fonts/ .woff') format('woff'), url('fonts/ .ttf') format('truetype'), url('fonts/ .svg# ') format('svg'); font-style: normal; font-weight: normal; }

Here is how the translation part will be implemented:

require 'rubygems' require 'translator'

tr = Translator.new tr.translate( 'Hello, World', 'hi')    #=> "नमस्ते, दुनिया"
 * 1) To translate 'Hello World' to Hindi

tr.translate('नमस्ते, दुनिया', 'en','hi')      #=> "Hello World"
 * 1) To translate "नमस्ते, दुनिया" to English

tr.to_en('नमस्ते, दुनिया')                   #=> "Hello World"
 * 1) From Unknown language to english, from 0.1.2

A rough timeline for your progress with phases
Week by week timeline:

Any other details you feel we should consider
Overall GPA: 9.10/10, Major GPA: 9.38/10

Tell us something about you have created
1) I went through the codebase on the Github repository https://github.com/smc/silpa and submitted a patch https://github.com/smc/silpa/pull/1 which got merged also but after discussion on IRC Jishnu Mohan(jishnu7) told me that there is another Github repository https://github.com/Project-SILPA/Silpa-Flask which is rewritten using Flask framework, so I went through that also and submitted a patch https://github.com/Project-SILPA/Silpa-Flask/pull/9.

2) SnapBin!: A windows 8 app which is the fastest way to take quick notes and share them with someone! The whole idea is to snap 'SnapBin' alongside the app you're using, and take quick notes to share. This app was appreciated by the Windows App Excellence Lab (AEL) at the Windows 8 AppFest held at Bangalore. App URL:http://apps.microsoft.com/windows/en-us/app/snapbin/ee8c6b4d-d7c6-4620-9f8a-ff1c0fc7c344 Published at Windows Store under Category: Tools

3) FontsForWeb: FontsForWeb creates fonts for web browsers. Repo URL: https://github.com/pranjaldaga/FontsForWeb

4) Translate-It: Translate-It translates a given string from one given language to another using Google APIs. Repo URL: https://github.com/pranjaldaga/Translate-It

Have you communicated with a potential mentor? If so who?
Yes, I have communicated with Jishnu Mohan (jishnu7) on IRC regarding each aspect of the project step by step. Also, Hrishikesh K.B (stultus) has also helped me out a couple of times.

SMC Wiki link of your proposal
http://wiki.smc.org.in/User:Pranjaldaga/improving_webfonts_in_silpa