A few weeks back, SMC with the support of ICFOSS re-released my long time hobby project, Indic Keyboard. On its first day itself the new app got more than double the number of downloads my app got over the last one and a half years. Here is how I started that project.
I am a long time android user, I got my first android phone in Gingerbread (2.3) days. I always wanted to do something related to android but Java was a barrier for that.
There are many reasons why Java has never interested me. Most of the programs written in Java I used were very slow on my computer and the UI doesnâ€™t feel like native.
I still need to meet someone who develops Java programs without using an IDE. My understanding is that writing java with a text editor is a PITA mostly because it needs a lot of boilerplate code (correct me if Iâ€™m wrong).
From early days itself, I was quite impressed with the features and performance improvements CyanogenMod made to AOSP base. CM was my daily driver most of the time. When Android 4.2 jelly bean was released, I thought of adding recently introduced Rupee symbol to CM keyboard.
Cloned LatinIME repo and gone through the code to find out how to do this. Later I founded that I need the entire AOSP code base to compile native part of the code. I always wanted to compile ROM my own, When ICS code was released, I read somewhere that SSD and at least 16gb of RAM is recommended to compile AOSP. What I had was a really slow machine. Somehow my machine was able to handle the load. But I decided to give it a try anyway. With my 256kps BSNL connection, it took almost a month to clone the entire AOSP source code.
After contributing rupee symbol to CM keyboard, I thought of adding Malayalam layout to the same. At that time, support for malayalam was only recently added (there was other methods to add Malayalam fonts, but it wasnâ€™t possible for all devices.)
Since Keyboard is a much bigger task, I thought of releasing it as a separate app, which will help me to iterate more on layout before pushing to CM.
The first task was to port LatinIME to a user app. At that time, there were many system level dependencies which made it difficult to compile as an independent app (it is easier now, from 4.3).
After porting to user app, I added layouts for Malayalam and tamil. There were only few devices which run 4.1 version at that time, so it was difficult to get users.
I was quite slow on developing this, mostly because of the number of devices running latest version of Android in India. But I knew the potential of the project after one or two years.
Six months back, SMC with the support of ICFOSS, came to support the development of this project. Over the past few months, I was able to implement transliteration using jquery.ime java port (from Wikimedia team), support for 15 languages, and around 35 layouts.
Creating the layout was more time consuming, when I started. It used to take almost a day to create a layout for a particular language. With some scripts I wrote, I was able to reduce this considerable amount of time.
When SMC released the app under their account, the response was mind blowing. The app got around 20,000 downloads in first 4 days, reached #1 in India, Saudi Arabia in the top new free list of its category.
I never expected this for an app which was there in store for last 1.5 years. I believe that the tweet by Pranav Mistry on the first day helped a lot.
Indic Keyboard supports text input in 15 Indian languages. https://t.co/3YdUaDlzBl
â€” Pranav Mistry (@pranavmistry) March 11, 2014
Many popular blogs, newspapers reported about it few days after the release.
The app which released under my account is still live in play store, I renamed it to Indic Keyboard Prime to avoid confusion. It has some additional features such as word suggestion and Gesture typing.
One thing I have learned in the last few months is, if you are accepting funding for a project, think well about the conditions they put forward. Also, you might have to see people stealing your credits (I have seen many, I donâ€™t want to mention anyone though).