On Tue, Aug 16, 2011 at 1:14 PM, Tomasz Finc tfinc@wikimedia.org wrote:
I've been asking around on IRC but thought it would be good to open up to a larger audience.
Has anyone here used PhoneGap (http://www.phonegap.com/) for mobile app development? I'm eager to get your thoughts and potentially brainstorm some new ideas.
I haven't used PhoneGap except for some brief testing, but I have used Titanium Appcelerator, which is another framework in that space, in working on StatusNet's iPhone & Android app.
Between the two I'd recommend PhoneGap for our usage as preferable over Titanium, but would appreciate more feedback from people who've done fuller PhoneGap work.
A few key differences:
PhoneGap models around extending a full-screen web view with additional JavaScript-accessible APIs to use device & OS capabilities (camera, address book, notifications, etc). This gives you few/no "native widgets" for your primary screens, but can make it relatively easy to create an HTML/JS-based web application that's extended with native abilities and can be shipped into native app stores.
Titanium was originally based on a similar model, but switched to a native widget bridging system, where your JavaScript code instantiates and manipulates objects which are bridged to native UI components and such. This can make your widgets look & feel more native, and can make some UI bits faster. But it also makes behavior less consistent between platforms; many widgets or features simply aren't available on all platforms, and last I checked there was basically *no* working support other than iOS and Android. (An early BlackBerry demo came out, was insufficient to do anything we needed, and never got updated that we saw.)
Since the Wikipedia app is mostly a webview and ...... maybe a menu? PhoneGap is probably a good choice. Titanium can also embed a webview, but it's a lot more work to deal with two levels of JS! PhoneGap has much broader device support, but be warned -- it'll use the native webview on each system, so JS and HTML/CSS support will still vary across platforms.
Debugging in PhoneGap basically devolves to being able to debug a web application; various tools like http://phonegap.github.com/weinre/ can help with this (or if you code carefully you may get away debugging your app in your favorite desktop browser directly ;)
Titanium was always a bear to debug things in and basically came down to 'watch the system log output in Android, that's the only place you'll actually see low-level errors'; this may be better now with their IDE support.
Titanium also pretty aggressively pushes their support & training services which I find offputting; their project build tool wants you to login to their 'cloud' stuff to let you hook up to their remote build & analytics services, which we didn't ever really use.
Support seemed to center on getting people to take training webinars or pointing people at the documentation and examples when they ask how to do something; I didn't find them very responsive about platform bugs or missing documentation except by contacting their couple of Android developers one-on-one in IRC to ask for merges -- which was usually a pretty good experience! Getting fixes for iOS merged was very difficult; I could never get ahold of their iOS developers directly, and they didn't seem to be any more responsive to low-level bugs we filed through their customer support system.
We had to build with a patched version of the iOS and Android runtimes for quite some time as there were serious bugs. On the plus side, maintaining a patched branch in git was very easy -- a lot of 'git pull origin master' and occasionally tidying up conflicts. Their source is all on github and is easy to fork and not too awful to build, at least for the mobile runtime.
Note that both PhoneGap and Titanium frameworks are open source & hosted on github, though both require a CLA to submit code upstream. (I have signed the Titanium CLA to submit patches to them last year; haven't done for PhoneGap yet.)
-- brion