torstai 9. elokuuta 2012
Coming next: Start AI
Start AI, our sister project to Call AI, is quickly approaching release time, so its time to share a few thoughts about it.
When our scientists were developing the algorithms for location and usage learning for phone calls, they noticed that the same design principles could be applied not just for contacts but also for applications. And so the idea of Start AI was born and we decided to give it a shot. However, the implementation turned out to be almost impossible because of API issues. To really understand why, we need to take a step back and look at the overall picture of software development landscape and how it has changed.
Most software developers have started practicing programming with a computer. It has been relatively easy to get access to a PC, there's plenty of options for languages and development tools, and the user interface is good enough for prolonged usage. There's one more important thing that we tend to take for granted: computers our open. There are APIs readily available for almost everything, and it is generally understood that since you own the box, you can do whatever you want with it.
Not so with mobile phones! In the beginning they were completely closed systems based on proprietary operating systems. No APIs, no documentation, no tools available. Mostly this was due to the fact that the whole industry was still in its infancy. But within a few years of time, phone's started to contain applications such as the famous Snake game, calculator, calendar etc., and demand began to rice to open up the platform for 3rd party developers as well.
Slowly things started to change. In the mobile domain there were two important hurdles unseen during computer era: malicious apps could potentially harm communication by acting unintended ways with the mobile phone network, and extract money from end users by making calls or sending messages to numbers owned by criminals. Hence, both the network and user's money need to be protected.
Two different approaches emerged. For example Nokia, worlds largest mobile phone manufacturer by then, used Java sandbox in their cheaper feature phones, while more expensive Symbian smartphones could be programmed with C++ using a limited set of APIs. Later Symbian devices were further protected by enforced platform security model, where all software had to be signed and sensitive APIs were protected with capabilities that had to be separately requested.
In practice, Java sandbox model was very limited and could be only used for creating very simple self-contained applications (think about calculators, timers, todo lists, and games). Meanwhile, more open Symbian model allowed much more complicated designs and also programs that interact with other applications and improve the platform itself. It was not a surprise that Symbian became the platform of choice by the research community, which is always pushing the limits and trying to find novel ways to use technology. Things were going smoothly forward.
...until iPhone happened. While impressive from user interface and design point of view, feature-wise iPhone was much closer to feature phones than smartphones. Yet, its success has been overwhelming and changed the landscape for good. Fast forward a few years ahead, and you'll notice how radically things have changed: now two most popular mobile platforms, iOS and Android, push the sandbox model forward and more open Symbian is in decline. In addition, Apple and Microsoft are taking ideas from mobile domain and bringing them back to computers. Seems that sandboxing and locking things down is the new norm. This is all very, very sad from research point of view.
Back to Start AI. While Android is said to be an open system, applications still have a very limited playground. They are not supposed to know about each other, and the OS can kill and restart apps at will. Now you'll understand that it is quite difficult (if not impossible) to make applications that continuously observe device usage in the background, and adapt to each user's preferences. The kind of things that were simple with computers and accessible in Symbian smartphones, are mostly impossible on iOS and Android, at least for 3rd party developers.
We managed to make Start AI work, though. We're using a simple trick: observe Android's log. However, information that system puts to the log when apps are started is not consistent. Hence, Start AI does not work with new Android devices.
When you grow older, become more sentimental and look back and think how things used to be better, sometimes you just may have a point in there.