Enyo goes Android: Paper Mache on ICS 9
With yesterday's release of the Enyo development framework as Open Source, webOS developers now are able to take their existing Enyo code and repackage their apps to work on other platforms such as Android, iOS or even directly in the browser. Almost immediately after the Enyo open source announcement, we saw two webOS Enyo apps released on other platforms with Paper Mache on Android and FlashCards basically everywhere you have a browser. As luck would have it, Ryan Watkins, the developer of Paper Mache, was sitting next to me at the NYC webOS Developer meetup last night and I had a chance to discuss his thoughts on Enyo going open source, the overall porting process and what work he still needs to do to make Paper Mache
For those that don't know Paper Mache, it's an Instapaper client app that includes offline and background syncing, saving and syncing of your position in the article, and a multitude of preferences to make reading your articles a pleasurable experience (check out our App Review of Paper Mache for more info). After using the webOS app on the TouchPad and my Pre3 for months, my initial reactions to Paper Mache running as an Android app were extremely positive. I loaded it up on my TouchPad running Android CyanogenMod 7 and despite a little sluggishness, it worked extremely well. It looked and felt exactly like the Paper Mache that I have come to know and love, with two notable exceptions. First, instead of swiping down from the top-left to access the Application menu, I had to rely on the Android menu button in order to access it. And second, power-swipe (two-finger swipe) was absent from the app. Aside from that, it was Enyo in Android!
So how hard was it for Paper Mache to make the transition from webOS to Android? It turns out it was actually pretty easy and took less than a week to do, all done in his spare time, although Watkins said he could have done it in a day if he had time to just focus on that and not worry about "real life." The toughest part, in fact, was the learning curve of first getting familiar with PhoneGap, getting the Android SDK, learning what plugins were available and how to submit an app to the Android Marketplace, and then figuring out what needs to be done to modify the code to work on Android. Which, as it turns out, was very little coding for his version 1.0 port. Out of thousands of lines of existing code, he needed only to add a few dozen new lines, but that is what took him the most amount of time to figure out. As it turns out, webOS and Android aren't the same! The implementation of WebKit isn't the same between the two, the diversity of device sizes and resolutions is different, nor do they multitask the same way.
But, after a few days of modifying his code, Watkins was able to get Paper Mache running on both Android phones and tablets with relatively decent performance. He still needs to work on further optimizations of the code to remove some of the lag. He hopes future versions of Enyo will be able to provide a better optimized end result and that the need for these performance tweaks won't be as necessary. In addition, he still needs to figure out a way to ensure that Paper Mache can reliably perform background article sync, a hurdle thrown up by how Android multitasking differs from webOS.
Bottom line, though, is that in just a few days, Ryan was able to port his webOS Enyo app to Android and said that it would probably even take half the time if he were to do it again now that he is familiar the basic process of how it works. So if you want an amazing Instapaper app on Android that will also sync your reading position to your webOS device, check out Paper Mache.
And if you are a developer interesting in learning more about this process, you can find Ryan on twitter at @PaperMacheApp. Or you can also reach out to James Harris, the developer of FlashCards for his experiences - he's also on twitter at @erupnu has even set up some forum posts on the new EnyoJS forums to help port your Enyo app to iOS, the Chrome Web Store or for Windows Desktop.
webOS - Android