User:SiddhGanju/GSoC 2013 Application

Short description:
The project jQuery.IME will provide an onscreen keyboard to users. Catering to the needs of users customized keyboards will enable the user to keep on using the favoured keyboard format. The envisaged keyboard will support various languages so will have to take into account the symbols of all languages. Developing an editable div tab would be a major enhancement in this project this will enable the user to perform changes on the run.

Name and contact information
Name: Siddha Ganju

Email: siddhaganju@gmail.com

IRC or IM networks/handle(s): siddha

Location: Shimla, Himachal Pradesh, India, UTC

Working Hours: 40 hours weekly

Synopsis
I noticed some differences between the keyboards of laptops and computers. Some do not provide a separate number keypad. For people who are used to separate number keyboards find it pretty difficult to adapt to a new layout. That's usually people who do calculations in banks, accountants, etc. Being charmed by the layout of the keyboard, I researched and I found out that all computers do not have the same layout for the keyboard. The American QWERTY format is replaced by the AZERTY format and so many more at different places. More importantly, while laying down the keys one must take into account the symbols for a native language, after all they must also make it to the board. I plan to customize the keyboard and provide a wide variety keyboards to the people using jQuery.IME. The beginner user can stick to the default and the advanced user can start to tweak it. People using it will be able to choose their preferred keyboard layout and will find it easier to work on a home environment. Another innovation is for the content editable divs which will provide the ability to format the text on the go. This will require wiring each button’s click event to the correct div, retrieve its content, and then perform the action. In case of a text area the browser does it all. This provides the editors with the advantage that they can change the action performed event of each stimulus. Some can even be provided with more than one action, as is decided by the programmer. They are free to implement their own choice, making the buttons perform actions respectively.

1 May 2013 to 11 May 2013 (10 working days)
College Exams, I will not be able to devote much work time during this period.

12 May to 20 June 2013 (39 working days)
Coding for the virtual keyboards will be my main aim. I will start with the American QWERTY format. A major early activity will be familiarizing with the code base. I would prefer to proceed in small iterations while developing each keyboard. As soon as one is developed I will duly inform my mentor. A rough conservative deadline for each feature will be decided on between me and the mentor. Deliverables in the form new features will be submitted as they are completed. If a sub-project can't be completed before the deadline, I will reassess the overall project timeline to keep expectations practical, and learn how to not overestimate dates.At the end of this time period I will have completed majority of the virtual keyboards. These will include several languages and an extra tweak feature for the user to create the choicest keyboard. Doing all this will increase my knowledge of the linguistic diversity of the world as well!

21 June to 26 June (5 working days)
I will test the code written thoroughly and document it. Any error in implementation will be rectified and documented. Investigation will be done for any missing language, not currently implemented, and will be added accordingly. Investigation carried out for creating editable divs.

27 June to 15 July (6 working days)
Finish implementing content editable divs. This will include making the primary focus of the editor, their own choice of actions related to each button. Also during this period I will start on Cucumber implementation by Ruby.

16 July to 19 August (4 working days)
Tests shall be carried out. Documentation will be completed. All the investigation regarding browser compatibilities and major checks on the enhancements shall be accomplished. For improving browser capabilities, a lot of emphasis will be laid on the previously developed tests acting as a standard reference. Hence the added enhancements must pass these tests. I will be using Cucumber (https://en.wikipedia.org/wiki/Cucumber_%28software%29). Cucumber implements the Acceptance Test Driven Development. For this I will be writing several Cucumber test cases, and run them and write the Ruby code to execute it properly. I will be utilizing the already created and available ATDD ( https://www.mediawiki.org/wiki/QA/Browser_testing/Running_tests#Acceptance_Test_Driven_Development ) to specify the deliverables.

20 August to 11 September (38 days)
Browser compatibilities are checked. All the previously created keyboards will be tested against all the known bowsers. Any discrepancy will be rectified.

12 September to 27 September (Final Week)
Further tests carried out, which will improve the code written. The code will be documented properly according to the project's conventions. Final project submission will take place.

What I need?

 * 1) Knowledge of JavaScript, jQuery, CSS, QUnit, browser compatibility
 * 2) Well versed in GitHub

What I have?

 * 1) Basic layout of a keyboard with several languages implemented already·
 * 2) Knowledge of JavaScript, jQuery, CSS

What I am required to do

 * 1) Gather information regarding browser compatibility.
 * 2) Implement the keyboards in various languages.
 * 3) Add new features like giving the geek the ability to innovate his own keyboard.
 * 4) Thoroughly test all the created features for existing browsers.

About me:
I am a 2nd year student of Computer Science and Engineering from National Institute of Technology, Hamirpur, Himachal Pradesh, India. I believe that open source of information is definitely the new approach. People can contribute to the open source and promote it among others. We can create new and improved things only when many brains are thinking towards it. Contributing towards open source is great! Wiki pages are the most useful ones. They help us in all the work providing valuable information. About 400 people use the Wiki pages monthly. It would be awesome if I could just give back a little part of what I have received. When someone actually uses the code that you have written, that feeling is great! I can’t even start to imagine how they will find these new enhancements advantageous. This will make the Wiki experience way better especially for those that like to edit their way in. Apart from coding I enjoy photography and digital design. I am also interested in philately. Participation and Time commitments

During the summers my only commitment is this project and I plan to work about 40 hours per week on it. My summer break will be from 15 May to 25 July. I will be available after this time during the school hours and plan to dedicate 15 hours weekly. Each feature implemented will be informed to my mentor, and its source code will be published on GitHub. I am whole heartedly dedicated towards this project. I would love to give back to this community, considering that I visit it almost every day, increasing my knowledge and helping my complete my work!

Past development experience
I am a Certified Windows Phone App Developer (Jan 2012 - Present) and have developed apps for Windows which have been certified and published at the Windows Phone Market Place. These are implemented in C# and .NET framework.

Links:

 * 1) http://www.windowsphone.com/en-ug/store/app/caladd/6546cf64-7fdd-43b0-aaab-9677b433c310
 * 2) http://www.windowsphone.com/en-ug/store/app/doodle/be9f29de-1439-4e06-abd5-82b96da5d177