User:Nalinc/NETRA

Nalin Chhibber
Personal Information


 * Birthday: July 10, 1992
 * Home: New Delhi, India
 * IRC Nick: NLN
 * Contact Number: +91 7838960846
 * IM Service And Username: GTalk- nalin.chhibber@gmail.com, Skype- nalinc5
 * Email Address: nalin.chhibber@gmail.com
 * College/University: B.Tech [Computer Science & Engineering] from Maharaja Surajmal Institute Of Technology, Guru Gobind Singh Indraprastha University, New Delhi, India.


 * Location (City, Country and/or Time Zone): Vikas Puri, New Delhi, India Indian Standard Time [GMT+ 5:30]
 * Website: http://www.nalinchhibber.com
 * Past involvement with SMC/GSoC: No
 * 40 hrs/week dedication for GSoC?: Absolutely, its a dream project!
 * Will I Support SMC after GSoC?: A big Yes, I would love to keep enhancing NETRA and later move towards fixing bugs in other projects.
 * Community Interaction: So far, I have communicated with Navaneeth K N(nkn__) at mailing list and IRC. He is happy to mentor this project. However, since GSoC is community-driven, I urge all community developers to provide their valuable(and much needed) feedback/suggestions (spirit of open-source)

Proposal Title
NETRA: uNifiEd Tool-cum-bRaille Application for Indic scripts

Project Abstract
Braille has been the mode of knowledge consumption for the visually impaired for quite a while. Although to most of us it remains a mystery. The primary reason for this is the fact that very few applications bring visually challenged and normal sighted people together at a common platform. The purpose of this project is to develop an educational application for visually challenged people familiar with (bharati) braille with usable interface.

During GSoC, my tasks would be to develop an engaging user-experience by letting visually challenged to use Linux systems and normal sighted people to explore a variety of interactive activities theming braille. NETRA is intended to focus on Indic scripts(primarily Hindi) with audio feedback with the help of suitable TTS(Text-To-Speech) API.

Motivation for Proposal
I choose this project since its rooted from FOSS and is a genuine attempt to enable visually challenged people who studied braille layouts to use GNU/Linux systems. In past I’ve been associated with opensource,and have made minor fixes in few KDE projects[8]. i)  For enabling visually challenged users to use Computers  ii)  To make GNU/Linux Systems more popular among Indians iii) For the education of visually challenged students iv) To bring normal sighted and  visually challenged people at common platform.
 * Why this project? :

i)  English literacy rate in India in not much high compared to that in languages spoken locally in different regions. ii)  There already exist a lot of English-Braille teaching tools. iii) We need to read our languages too
 * Why NETRA is primarily focused on Indian Languages? :

Further, Steve Jobs once said "search for what you love till you get it" at Stanford convocation. I love to code, I love opensource, and everything happening at same place. This is my motivation to work for Swathanthra Malayalam Computing and I am very delighted to be a part of it.

Proposal Description & Project Goals
Project NETRA has been decomposed into 5 major phases with sub-phases in each phase. Main goals of the proposal are following:
 * Create a seamless user-interface with a cross-platform GUI framework(using Qt)
 * Braille'O Work- 6 dot Bharati Braille support using m17n layouts.
 * Braille'O Fun- Fun activities themeing braille(identifying answers with braille code given as a clue
 * Audio feedback support using a TTS API (possibly 'Dhvani')
 * Tweaking code and fixing accessibility related issues.

Implementation Details
I believe in an incremental approach and that the there should be deliverable's at each stage of the project. This way there will be accountability at each stage plus bug tracking and removal will be much easier. I plan to keep appropriate buffer time and time for documentation. Also I will provide periodic updates to my mentor and use the mailing list and IRC channel when at a roadblock. Following are the details of work that I intend to do.

Creating a seamless user-interface with a cross-platform GUI framework(using Qt)

Qt is a cross-platform application framework[1] that is widely used for developing application software with a graphical user interface (GUI). Qt uses standard C++ but makes extensive use of a special code generator(called the Meta Object Compiler, or moc) together with several macros to enrich the language. Creating the UI with Qt is essentially a composite of following phases. i)  Creating the application main window and desktop integration. ii)  Layout management: deciding a suitable layout after discussing with mentor. We can use any of    the standard layout manager(horizontal,vertical,grid and form layout) or choose a custom layout. iii) Use openclipart/gimp for creating the icons,skins,etc iv)  Creating Dialog windows, 'help' and 'whats this?' features with accessibility for visually     impaired (via audio feedback or dedicated shortcuts). v)  Events and event handling: creating signals and slots for respective events. vi)  Integrating GUI with dummy code and classes keeping MVC architecture and OOP in mind

Braille'O Work- 6 dot Bharati Braille support using m17n layouts

Bharati Braille[2] standard is the official Braille standard in India. Bharati braille alphabets use a 6-dot cell with values based largely on English Braille. Letters are assigned as consistently as possible across the various regional scripts of India as they are transliterated in the Latin script, so that, for example, Hindi, Urdu, Bengali, and English are rendered largely the same in braille. A regular QWERTY keyboard is used for data entry. SDF-JKL keys are used for six dots of Braille.

1  4        f    j                                        2   5        d    k                                        3   6        s    l

NETRA relies on a set of 'mapping files' from 6 dot braille code to respective languages. These mapping files would consist of mapping from SDF-JKL to each and every character,number and special character of the language.

For instance, a typical hindi.m file would consist of                                            fs      क jl     ख fdjk   ग ....

Similarly, a typical english.m file would consist of                                           f       a                                            fd      b                                            fj      c ....

Following this scheme will enable us to include more languages(and mapping) in future with minimum change in existing code.

Figure (a) describes the Bharati braille layout for Devanagari script. न -> fsjk लि -> fds-dj न -> fsjk

Figure (b) describes the braille layout for English. n -> fsjk a -> f                                                                          l -> fds i -> jd                                             n -> fsjk Map files for mapping language characters and numbers to braille code will be loaded right after the language selection(ctrl+L). So for Hindi, NETRA would load hindi.m

Language Selection i)  ctrl + L ii)  Followed by an audio message iii) Selection of language code.       1 (f)- Hindi          2 (d)- English* iv)  Load appropriate map file for the language(eg, hindi.m for hindi)

Matras(मात्रा): Distinguishing लि and ल+इ or लू and ल+ऊ

Matras(मात्रा) in Hindi can be included using the 'shift' key. For example, ल + इ  ->  fds followed by dj, while लि     ->  fds dj

Braille'O Fun- Fun activities themeing braille

This will enable normal sighted people to discover the braille world & share literacy who otherwise are fascinated by braille as a kind of 'secret code'. They will begin to understand its significance for people who are visually impaired in a play-way manner.

Introduction to Braille

This part shall teach Braille to normal sighted people. It is also beneficial for the instructors to teach Braille symbols to visually impaired. Introduction will be in the form of a video or spoken tutorial like one mentioned here[3]

Lets Braille

Second phase for this module will consist of implementing an interactive activity for practicing braille. NETRA will provide a set of words in braille and user will be asked to enter corresponding answer.



Audio feedback support using a TTS API

With NETRA, we cannot simply use any screenreader because of 2 reasons: i) Most of the screenreaders are not designed to speak Hindi and other Indian languages.      ii) With each context switch(more specifically, application switch), screen reader will         re-iterate unnecessary parts(like menu options, previously written text)

Following are some of the TTS systems available: i)  ORCA – good but does not support Indian languages      ii)  eSpeak – trivial support for Hindi iii) Festival – trivial support for Hindi and Tamil     iv)  Dhvani – Supports 10 Indian languages, have a nice API for C/C++, best option at present.

Another good thing about Dhvani is that, it is developed by 'Swathanthra Malayalam Computing' itself. Thus NETRA wont be depending on third-party APIs and use of NETRA will automatically promote the use of Dhvani. Dhvani's C/C++ API is nice and for situations where it might create issues, we can use it as a screen-reader as well. However, Dhvani lacks in any stable support for English language. This issue can be resolved in future or we can install a Speech Dispatcher, take any of the Indian language localized desktops such as gnome or KDE and use orca with that. Since Speech Dispatcher provides a device independent layer for speech synthesis, audio feedback performance would essentially be same on different architectures.

Tentative Timeline | Roadmap
Up to May 9(Preproject Research)   : This will include the understanding of important requirement                                      from actual users. There's a blind school (Rashtriya Virjanand                                     Andh Kanya Mahavidyalaya) near my place and I plan to personally                                      visit it and gather their views/expectations from such a product. If everything works well in time and I get some free time,                                     I will be going to start coding part as well. May 10-May 25                      : Create User Interface, dialog boxes and overall project structure. May 26-May 28                      : Create mapping files for English and Hindi May 29-May 31(Introspection)       : Analyze pace, current workflow and decide approach for further work June 1-June 15                     : Braille'O Work: Implement 6 dot Braille support using m17n layouts. June 16-June 20                    : Integrate GUI with the 6 dot braille code. June 21-June 22                    : Code review and bug fixes June 23-June 27(mid-term evaluation): Submit two complete activities along with necessary documentation. June 28-June 30(Introspection)     : Analyze pace, current workflow and decide approach for further work July 1-July 5                      : Braille'O Fun: Implement the 'introductory module'. July 6-July 11                     : Implement 'Lets Braille' module July 12-July 23                    : Add TTS support and fix accessibility related problems. July 24-July 30                    : Add more mapping file perform preliminary test with native people. July 31-Aug 4(Review Process)      : Create binaries/build packages and reviewing the whole code Aug 5-Aug 11(Pencil down)          : Perform unit tests for necessary features. Adding required                                     documentation for understanding NETRA and to have a perfect release Aug 12-Aug18(firm pencil down)     : Tweaking code to improve its quality. Discussion with mentor                                     about the Final Evaluation and submission of code. Aug 19-Later(After GSoC ends)      : Now, we can have a perfect NETRA release. Most of the                                     bugs would be fixed and features would have been polished. I will try to introduce new features and decide future moves                                     that would make it much interactive as well as user-friendly.

About Me
I am a final year student[4] pursuing bachelors of Computer Science & Engineering from MSIT, GGS Indraprastha University[5-6] - New Delhi (India). I am a FOSS enthusiast, contributing to OSS since 3+ years from now and have been using GNU/linux since high school. In past I’ve been associated with OSS projects, which avails free & open source educational tools to students. Apart from regular college curriculum, I spend a considerable amount of time doing things outside of work as well. My biggest contribution towards opensource is 'codeasy' which is an IDE(Integrated Development Environment) for Java programming developed by me[7]. Codeasy is licensed under GNU general public licence(version 3). During spare time, I fix minor bugs in some of the KDE opensource projects[8]. I have working knowledge of c,c++,java & python. I have worked on coding projects like WRN, project444, chaos theory in cryptosystems, GAs in cryptanalysis, cows & bulls, TBC project, FOSSEE-IIT Bombay and visual simulation on ACO- IIT Delhi. I am a yahoo summer school 2013 participant and well versed with community interactions and dynamics of OSS projects. I use irc, mailing lists, version control systems, such as git(with working knowledge of hg,svn) & host all my projects at github[9] hence I can start early with coding. Rest apart I am a member of ILUG-D(Indian Linux User Group-Delhi)[10]. Contributed in organizing lug sessions at our college campus as a part of SIGs(student interest groups) & delivered a couple of talks. I am also the founder of MSIT-Java User Group (a special interest group under IEEE-MSIT). I take Summer of Code as an opportunity to get engaged with SMC as a contributor and continue this association even after GSoC. I am very much willing to be a stable member of community. I would love to be contacted if any part of this proposal is not clear. Thank you for considering this proposal and for your time!

UPDATE: Since mentors seek to evaluate a student's coding ability as well, I would like to describe one of my project "Multichaotic Cryptosystem"[11]. I worked on it during August 2013-December 2013 as a research intern at CSIR:Fourth Paradigm Institute - Bangalore(formerly CSIR: Centre for Mathematical Modeling and Computer Simulation) under SPARK(Student Program for Advancement in Research Knowledge)[12]. My guide for the project was Dr Gopal Krishna Patra(Principal Scientist,CSIR-4PI). The project involved implementing a 'crypto-system' using essence of 'chaos theory'. Front end was developed in Qt 4 while backend was controlled by shell-scripts and C++. For plots and graphs, I used GNUPlot. This project essentially describe my coding skills in C++, shell-scripts, GNUPlot scripts and experience with Qt(GUI framework).