Thursday, 21 August 2014

GSoC Final Report

Alas GSoC 2014 has come to an end. It was a fantastic experience developing and adding support for Indic language layouts for Firefox OS. I did veer quite a bit away from my initial goals after getting feedback from the language community which mostly asked for layout based keyboard.

The implementation of the layouts for 14 indic languages have been completed, and I'm happy with the final results. The screenshots for all the 14 languages can be viewed in my previous post.

I have also prepared a screencast describing the usage, however, due to poor internet connectivity it is taking too much of time to upload. I'll update this blogpost with the screencast as soon as I get hands to a decent connection.

I'd like to thank Swathanthra Malayalam Computing and Mozilla for providing me with this wonderful opportunity and some great Mentors in Santhosh, Anivar, Hrishikesh, Tim and Rudy. Although the GSoC project may be finished, the keyboard has a lot of features to be improved upon and more support added and it will be my pleasure to continue working on it.

The repo has been forked over to SMC organisation : https://github.com/smc/firefoxos.ime

Thursday, 7 August 2014

GSoC update : Layouts completed, awaiting community review.

The keyboard layouts for the following languages are now complete :
  1. Assamese
  2. Bengali
  3. Gujarati
  4. Hindi
  5. Kannada
  6. Kashmiri/Kashur
  7. Malayalam
  8. Marathi
  9. Nepali
  10. Odia
  11. Punjabi
  12. Sanskrit
  13. Tamil
  14. Telugu
Most of the layouts are a (heavily) modified version of the Inscript, inspired from the Hindi layout that was present in the Gaia repo. The rest are phonetic based like the Malayalam Lalitha layout and the KaGaPa phonetic layout for Kannada & Telugu.

Hindi, Marathi, Kashmiri/Koshur, Nepali and Sanskrit use the same Devanagari based script and layout with some minor variations.

With all these layouts, I've achieved the primary goal of Indic language Input support on Firefox OS, but could not yet do with the transliteration based ones. I will be continuing to work on them after finalising and perfecting these layouts using community feedback.

All the above layouts are compatible with the Gaia keyboard codebase and can be pushed to the same, which will be done on advice from my Mentors from Mozilla, Tim and Rudy.

Here are the screenshots of the layouts :

                      Assamese                                                Bengali
 
                     
                       Gujarati                                              Hindi - Bolnagri

                      Devnagari                                               Kannada


                      Malayalam                                                 Odia


                       Punjabi                                                     Tamil


                        Telugu



If you speak any of these languages and want to suggest/improve the layout, feel free to open an issue on Github.


Wednesday, 16 July 2014

GSOC Update

Last two weeks, the progress was slow. I'm trying to strike a balance between college schedules now that college has reopened after Summer Vacations.

It seems like the decision of taking the Gaia Keyboard app as the base for the 3rd Party app is proving to be a hindrance. Much of the code is not reusable, and refactoring it is taking a lot of time. I'm still unable to register the jqim ime in the /js/ime folder with the initialisation function "init".

Due to this, the "click" event does not funtion. Tried it with the bn-Avro ime from Gaia, and it is also not functioning when installed as a third party app. As built-in, the bn-Avro keyboard is working fine.


This week I'm aiming to solve this minor hiccup and continue integration with jquery.ime.

Some of layout based keyboards are almost finished, and a few more Indian languages left to be completed.

Thursday, 19 June 2014

Week 4 of GSoC : Community interactions for the Keyboard

The project is progressing at a good pace and the Indic Firefox OS L10n Sprint has helped me understand the needs and requirements of 13 Indian locales which participated in the sprint.

There was almost a unanimous feedback that the Inscript layouts don't make any sense in the mobile space since it takes too many keys and ends up increasing the "Fat Finger Error" to a new level , even if you have tiny fingers. 

I showed the highly modified Inscript-like layout for Hindi (shown below), which the the Telugu team liked a lot. Mr Veeven from the Telugu L10n team was rooting for such a keyboard for Telugu. I did try experimenting with such layouts, but the 'extra' vowels in South Indian languages are posing a problem.


Hindi
Gujarati

Most of the language communities were in favour of phonetic keyboards, like the Odia Lekhani input, the Malayalam Lalitha layout and the KaGaPa phonetic layouts for Kannada, Telugu etc. The phonetic based layouts implemented in the Indic Keyboard Android app by Jishnu has been a good reference for the layouts.

Kannada
Telugu



In the coming weeks, I'm planning to finish up with these layout based keyboards and give them to the respective language community for review and feedback. In the meanwhile I'll be implementing transliteration based input, which is more widely used by the younger generation to type quickly in their native language using the familiar English keyboard.

This weekend I'll have another great opportunity for receiving first hand suggestions and feedback from the Mozilla India community at the MozCamp Beta India, which is being held in Bangalore.

Thursday, 5 June 2014

Firefox OS KeyboardIME : Up and Running!

I was faced with a few issues, but am progressing steadily with my GSoC project. The KeyboardIME API of Firefox OS has landed in version 2.0 and my project needs the API for its functioning.

The structure of the Keyboard is based on the Built-in Keyboard App in Gaia. This has two advantages, one is that it will give a quick bootstrap for the project with the same look and feel of the default keyboard in Firefox OS and the second is that apart from being a 3rd party app for now, the code can easily be merged with the Gaia Keyboard later on.

I faced a few hiccups in setting up the development environment because the App Manager keeps closing down the  Developer tools when the Keyboard pops out of view again and again. This happens both with the simulator and on the test device, Geeksphone Keon, leaving me clueless on what's going on in the console. Perhaps I'll need to ask my mentors for help with this.

Meanwhile, I set up another test environment, this time in Firefox Nightly browser, which greatly improved the workflow since now there was no need for reloading the app, and the changes can be tested by just hitting the refresh button.

After spending some time studying the implementation of the Built-in Keyboard, I decided on making an Inscript-based Keyboard for Malayalam language, which is my mothertongue. The implementation is based on a similar layout for Hindi, which was made by Luke. It uses mobile specific features like longpress (shown in the screenshots below) to manipulate the input.




I also faced some inconsistencies and weird, unexpected errors when I tested it on the Simulator. The layouts shown by the Simulator on Windows was very different to that on Linux which is most probably due to different versions of Gaia on the two simulators.

As you may notice, the layouts do not strictly follow inscript. There is no "standard" mobile-specific  format for Indian language keyboards and to fit in all characters, some changes have been made. This is just for experimentation and are in no way the final layout. They will be heavily modified taking feedback from the community. Some of the characters are still overflowing the keys, to fit in, the font-size will have to be decreased.

In the coming weeks, I'll be shifting focus to implement the phonetic and transliteration rules from jquery.ime to the keyboard. I've started off with an experimental version for Hindi - transliteration. After perfecting it for one language, I believe it would be much easier to extend it for most of the languages supported by jquery.ime and priority will be given according to the usage data of various rules which was shared by my mentor Santhosh.

This weekend I'll be attending the Indic FirefoxOS L10n Sprint 2014 in Pune. The event has been organised by Mozilla for core localization volunteers/mozillians in India. I'd like to thank Mozilla and my mentors,  Anivar and Hrishikesh who will be accompanying me, for this opportunity. The event will allow me to get in touch with the Indian Localization team for the OS, which would be of great help for testing and reviewing the Keyboard app being made.

Check out the code on github : https://github.com/psbots/firefoxos.ime

The app can be tested on Firefox using App Manager and FirefoxOS Simulator. (Note that KeyboardIME API runs only on v2.0+)

If you know Malayalam, do check out the layout and give your feedback and suggestions in the comments below.

Looking forward for the weekend in Pune!

Wednesday, 21 May 2014

A talk on "Hacking with Open Data" at AngelHack Kochi

My first introduction to "Open Data" was during the Wiki Sangamotsav at Allapuzha, which took place last year in December. I attended it as part of Mozilla Kerala Community and one of the sessions there was regarding Open Data taken by Arun Ravi
It was his talk that motivated me to explore more about the possibilities with Open Data which opened up the ideas of socially relevant apps using data from portals like data.gov.in.

While I was hacking away at home, toying with such ideas over the last few months (although, I've got to say, I have nothing to show since none of them are complete yet!), I got a speaker invite from the organisers of AngelHack in Kochi.

I felt privileged to get an opportunity to take a session at AngelHack Kochi at Startup Village and decided to take a topic that I'd never talked on before : "Hacking with Open Data".

Since I was too lazy to create a presentation from scratch, I decided not to use any slides,  relying solely on a browser for the presentation!
The decision paid off and I discovered that it was much easier to speak clearly without any slides, and also managed to show the audience the requisite information simply by browsing Wikipedia articles and googling Open Data. Using the web as the presentation came out to be effective as well as simple.

I began with the definition of Open Data from Wikipedia, drawing analogies with Open Source/Open Hardware etc, movements which the audience(hackers!) were more familiar with.
Then I followed on by mentioning the four principles of the open world :
  • Collaboration
  • Transparency
  • Sharing
  • Empowerment
and discussed these in the context of Open organisations like the Wikimedia Foundation and the Mozilla Foundation. These principles, I believe are really the core for an Open World and is very well presented by Don Tapscott in his TED talk.

Next I went on to talk more on Open Data initiatives in the US and UK and showed the portals, data.gov and data.gov.uk
Here's a pic that one of my friends in the audience took while I was showcasing the US Open Data portal :



Then came the showcase of India's Open Data portal, data.gov.in. I also mentioned about the recently concluded OpenDataApps Challenge, and was really surprised to know that the first prize winner of the challenge was sitting in the audience! I promptly invited him to share his experience. Nithin's winning app, named Market Watch gives real time market price updates of various commodities using data provided by the portal.

After doing a quick google search on Open Data apps, I landed on the page I wanted to show : Your City Needs These 7 Open Data Apps. The page contains real-world apps, applicable to any city, showcasing the power of Open Data. Apps like "BusGuru" and "The Street Bump", would be very helpful for any city in the world!

Finally I concluded by reminding that it is not the just the fault of the Kerala Government that we don't have Open Data for Kerala. It is the responsibility of us, developers, to show the Government the limitless possibilities of Open Data by creating innovative solutions to everyday problems. That alone will encourage the Government to be more transparent and release useful datasets in the open.

I do hope I finish my projects with Open Data and showcase it soon. I'm using data from the World Bank as well as data.gov.in

On a different note, my team went on to actually win the AngelHack! , which would be the topic for my next blogpost. :)



Tuesday, 20 May 2014

GSOC Kickstart!


The GSOC coding period has begun and I had a Kickstart meeting yesterday with my mentors. I'm in a lucky position to have mentors from 2 different Open Source organisations!
Anivar, Santhosh and Hrishikesh are the main mentors from Swathanthra Malayalam Computing, which is my mentoring organisation.

Since my project involves development of a Keyboard IME for Firefox OS, Tim, Rudy and Arky from Mozilla will also be helping me out with issues specific to the Firefox OS platform.

In yesterday's hangout meeting, it was decided that the project would be better off as an Open Source Third Party application, submitted to the Firefox OS Marketplace. The mentors at Mozilla pointed out that this would be advantageous over a built-in gaia keyboard because there would be no delays in implementation approvals from the UI/UX team of Firefox OS, especially since GSOC has strict timelines.
Moreover, the country specific manufacturers can bundle the required Keyboards as required.

Although initially my idea was to implement just Indic Keyboard, Santhosh suggested that there won't be much difference in efforts if other keyboards are ported as well, since jquery.ime supports more than 135 input methods across more than 62 languages.
Porting all the input methods may not be in scope of the project and mostly unnecessary. Hence Santhosh will be sharing the usage statistics of various language IME's operational in the various Wiki's deployed all over the world and appropriate IME's would be chosen.

Till then, I'm planning to start working with major languages like Hindi as well as the overall structure of the project. Really excited for the next few months of coding!