Saturday, June 21, 2014

Telirati Analysis #3 Jolla and Android Compatibility

Image source: Jolla
Finnish mobile handset company Jolla recently announced they have completed implementation of Android compatibility for their Sailfish operating system, and that customers can expect several key applications to run on Jolla's handsets at launch. Here, we'll look into what to expect from such a capability, how it might be implemented, and where this implementation might have come from.

Jolla is one of several companies making Linux based mobile handset operating systems. Most of these systems rely on a Web application runtime. Some, like Jolla's Sailfish and Canonical's Ubuntu, support Qt-based applications and other Linux app development and runtime technologies.

Qt is a cross-platform SDK and runtime for application development. But neither Web apps nor Qt have anything like the number of existing applications and developer mind-share as Android. Even if Jolla's products are successful, I doubt I'll be writing Qt Mobile App Programming soon.

Finding an attractive app platform is a problem. At one time, I had been working on a solution. I was the CTO of a company that was started around an approach to Android app compatibility I designed. At that company and others, it turned out to be a long road to both implementation and customer acquisition, and I left there in February of 2013 to focus on my Android software development consultancy.

When I was working on this problem, I kept a close eye on the competition. One competitor was Myriad Group. Myriad might have been a formidable competitor. They were already in the business of licensing technologies like MMS stacks and J2ME app runtimes to mobile handset OEMs, and they had lots of experienced engineers. But they also had several declining legacy product lines. At the time I characterized Myriad as "A drawer full of falling knives."

In an environment where most of their products were declining, and the company shrinking, I knew it would be challenging to create and launch a new product, so, despite their many advantages, I though I could beat them. In one key technical aspect I did surpass them: Their Android compatibility technology was based on a Java VM they implemented, called Alien Dalvik. Which is a horrible name since it wasn't Dalvik at all. Their technology required recompiling, or post-processing and re-signing apps. This is a huge bottleneck. (Whereas the approach I was working on used the Dalvik VM and ported it and the Android foundation classes to other target OSs.)

Myriad demonstrated their product on Meego while the engineering team at the company where I was CTO was only starting to productize a proof-of-concept implementation.

That was 2 years ago. So one would expect Myriad to have all the kinks worked out and I expected to find Myriad's executives quoted in the Jolla announcement, since Sailfish is derived from Meego and Mer. But, mysteriously, no hints about where Jolla got their compatibility technology in Jolla's press release, and even less at Myriad's site where there was no press release corresponding to Jolla's announcement.

Jolla may be trying to preserve an advantage as long as possible by keeping the source of their compatibility technology hidden as long as possible but it may also be possible they rolled their own. I hope I can get a demo of Sailfish and this compatibility technology soon. This is what I will be looking for:

  • Do they use the Myriad Alien Dalvik VM? Or, did Myriad abandon that approach and use Dalvik, which would enable them to run apps "off the shelf" with no conversion or SDK changes.
  • Is it Myriad's technology at all, despite Myriad being far ahead at one time?
  • How well is launching, installing, and switching among Android apps integrated with the native environment? Do they provide AppWidgetHost capability in the OS desktop?
  • How did graphics stack integration dovetail with the move toward Wayland and Mir, and toward compatibility with Android GPU drivers?
  • How developer friendly is the implementation? In theory, Android compatibility on non-Android Linux-based OSs could enable some fine hacks, like running the Android SDK on the same OS as an Android runtime. Will they grasp these kinds of opportunities?

Android compatibility is the most straightforward solution to market acceptance for new operating system entrants, and it is possible Jolla has the first working example in a soon-to-be-shipping product.