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'll have a longer mail about this later but since its taken too long to draft it .. i thought i'd just send this snippet now to start the conversation.
--tomasz
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
Thanks for the super detailed write up Brion. I've been actively talking with the PhoneGap guys after doing some more research on this and it seems like a really good fit to have a consistent experience across a whole host of devices.
What were looking at is not necessarily a lot of depth in every single platform but a lot of horizontal range. Phonegap platform support beats out Titanium pretty easily there.
We'll be working a lot closer with the PhoneGap team going forward to quickly have something in the android store to start.
If anyone is interested in helping then we'll have plenty of opportunities to join in. Over the next weeks we'll be adding bugs and sending out more calls to get involved.
--tomasz
On Tue, Aug 16, 2011 at 1:50 PM, Brion Vibber brion@pobox.com wrote:
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 _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Hi,
is this maybe also useful for ZIM - to make ZIM readers which are working cross-platform?
As far as I understood phonegap is mainly a framework to create mobile apps based on HTML 5. At least the display of ZIM contents should be simple then as we just need a HTML widget for that. But what about libraries needed to read file contents, such as zimlib? I couldn't find out if Phonegap itself supports native file access (so we could re-implement ZIM features with that) or if it allows the use of native libraries.
/Manuel
Am 27.08.2011 02:44, schrieb Tomasz Finc:
Thanks for the super detailed write up Brion. I've been actively talking with the PhoneGap guys after doing some more research on this and it seems like a really good fit to have a consistent experience across a whole host of devices.
What were looking at is not necessarily a lot of depth in every single platform but a lot of horizontal range. Phonegap platform support beats out Titanium pretty easily there.
We'll be working a lot closer with the PhoneGap team going forward to quickly have something in the android store to start.
If anyone is interested in helping then we'll have plenty of opportunities to join in. Over the next weeks we'll be adding bugs and sending out more calls to get involved.
--tomasz
On Tue, Aug 16, 2011 at 1:50 PM, Brion Vibber brion@pobox.com wrote:
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 _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Hi,
It would be really nice if offline (=zim) support was integrated in the official wikipedia app: The user could switch between online access and offline reading.
If I understand Tomasz correctly, it is planned to implement the wikipedia app with phonegap, so having zim support for phonegap would allow integration of offline support into the app. Therefore I think its a good idea to implement zim support for phone gap.
Regarding the technical details there a basically to ways to implement zim support in phonegap: - Using phonegap API. Theoretically device independent, but questionable whether actually working with sufficient performance on all target platforms. - As plugin: Implemented as a native component, with bindings to phonegap.
I'd prefer the plugin approach. The additional effort of implementing the zimlib plugin for different platforms is not that high. The zimlib (and liblzma) is already available for C++ (STL): Symbian[1], Meego[2], Android (with NDK, cleaner is to use Java), iPhone (untested, may have some issues (see [5]), alternative would be to port to objective-C) and probably Bada Java (less mature than C++ implementation) : Android, Blackberry and other J2ME [3] (not sure whether possible on J2ME, but this is even more true for phonegap API approach) Porting needs only to be done to: C#: Windows Mobile Other: ? In addition the plugins for the platforms need to be written but this shouldn't be a too high effort. The zimlib is already pretty stable, so the maintenance effort for the ports should not be too bad.
An additional benefit of the plugin-approach is that the ported zimlibs plugins can also be used for native apps. (Besides having the plain zimlib, the plugin projects can be used as a starting point for new projects).
For the phonegap API approach zimlib must be ported to java script. As mentioned before I doubt that the javascript zimlib would work with sufficient performance on all (if any) . devices. See for example [4]
Best regards, Christian [1] Neither File (required for phonegap API approach) nor plugins officially supported in phonegap. However, should be pretty easy to add. (Either in official (=WRT) phonegap, or in QT port. Probably better in QT port). [2] Not supported by phonegap. However, should be possible to use QT phonegap port. [3] Not supported by phonegap. [4] http://community.phonegap.com/nitobi/topics/how_to_implement_lzma?from_gsfn=... [5] http://stackoverflow.com/questions/823116/how-do-i-use-c-stl-containers-in-m...
Am 27.08.2011 10:34, schrieb Manuel Schneider:
Hi,
is this maybe also useful for ZIM - to make ZIM readers which are working cross-platform?
As far as I understood phonegap is mainly a framework to create mobile apps based on HTML 5. At least the display of ZIM contents should be simple then as we just need a HTML widget for that. But what about libraries needed to read file contents, such as zimlib? I couldn't find out if Phonegap itself supports native file access (so we could re-implement ZIM features with that) or if it allows the use of native libraries.
/Manuel
Am 27.08.2011 02:44, schrieb Tomasz Finc:
Thanks for the super detailed write up Brion. I've been actively talking with the PhoneGap guys after doing some more research on this and it seems like a really good fit to have a consistent experience across a whole host of devices.
What were looking at is not necessarily a lot of depth in every single platform but a lot of horizontal range. Phonegap platform support beats out Titanium pretty easily there.
We'll be working a lot closer with the PhoneGap team going forward to quickly have something in the android store to start.
If anyone is interested in helping then we'll have plenty of opportunities to join in. Over the next weeks we'll be adding bugs and sending out more calls to get involved.
--tomasz
On Tue, Aug 16, 2011 at 1:50 PM, Brion Vibberbrion@pobox.com wrote:
On Tue, Aug 16, 2011 at 1:14 PM, Tomasz Finctfinc@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 likehttp://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 _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
That would be a really nice addition to the official application in the future.
We should definitely continue to talk about this and try to figure out the optimal approach.
Also, once the PhoneGap based Android application is developed it should be easy to fork and experiment with the various approaches described below.
— Patrick
On Sat, Aug 27, 2011 at 10:17 PM, Christian Pühringer cip@gmx.at wrote:
Hi,
It would be really nice if offline (=zim) support was integrated in the official wikipedia app: The user could switch between online access and offline reading.
If I understand Tomasz correctly, it is planned to implement the wikipedia app with phonegap, so having zim support for phonegap would allow integration of offline support into the app. Therefore I think its a good idea to implement zim support for phone gap.
Regarding the technical details there a basically to ways to implement zim support in phonegap:
- Using phonegap API. Theoretically device independent, but questionable
whether actually working with sufficient performance on all target platforms.
- As plugin: Implemented as a native component, with bindings to phonegap.
I'd prefer the plugin approach. The additional effort of implementing the zimlib plugin for different platforms is not that high. The zimlib (and liblzma) is already available for C++ (STL): Symbian[1], Meego[2], Android (with NDK, cleaner is to use Java), iPhone (untested, may have some issues (see [5]), alternative would be to port to objective-C) and probably Bada Java (less mature than C++ implementation) : Android, Blackberry and other J2ME [3] (not sure whether possible on J2ME, but this is even more true for phonegap API approach) Porting needs only to be done to: C#: Windows Mobile Other: ? In addition the plugins for the platforms need to be written but this shouldn't be a too high effort. The zimlib is already pretty stable, so the maintenance effort for the ports should not be too bad.
An additional benefit of the plugin-approach is that the ported zimlibs plugins can also be used for native apps. (Besides having the plain zimlib, the plugin projects can be used as a starting point for new projects).
For the phonegap API approach zimlib must be ported to java script. As mentioned before I doubt that the javascript zimlib would work with sufficient performance on all (if any) . devices. See for example [4]
Best regards, Christian [1] Neither File (required for phonegap API approach) nor plugins officially supported in phonegap. However, should be pretty easy to add. (Either in official (=WRT) phonegap, or in QT port. Probably better in QT port). [2] Not supported by phonegap. However, should be possible to use QT phonegap port. [3] Not supported by phonegap. [4] http://community.phonegap.com/nitobi/topics/how_to_implement_lzma?from_gsfn=... [5] http://stackoverflow.com/questions/823116/how-do-i-use-c-stl-containers-in-m...
Am 27.08.2011 10:34, schrieb Manuel Schneider:
Hi,
is this maybe also useful for ZIM - to make ZIM readers which are working cross-platform?
As far as I understood phonegap is mainly a framework to create mobile apps based on HTML 5. At least the display of ZIM contents should be simple then as we just need a HTML widget for that. But what about libraries needed to read file contents, such as zimlib? I couldn't find out if Phonegap itself supports native file access (so we could re-implement ZIM features with that) or if it allows the use of native libraries.
/Manuel
Am 27.08.2011 02:44, schrieb Tomasz Finc:
Thanks for the super detailed write up Brion. I've been actively talking with the PhoneGap guys after doing some more research on this and it seems like a really good fit to have a consistent experience across a whole host of devices.
What were looking at is not necessarily a lot of depth in every single platform but a lot of horizontal range. Phonegap platform support beats out Titanium pretty easily there.
We'll be working a lot closer with the PhoneGap team going forward to quickly have something in the android store to start.
If anyone is interested in helping then we'll have plenty of opportunities to join in. Over the next weeks we'll be adding bugs and sending out more calls to get involved.
--tomasz
On Tue, Aug 16, 2011 at 1:50 PM, Brion Vibberbrion@pobox.com wrote:
On Tue, Aug 16, 2011 at 1:14 PM, Tomasz Finctfinc@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 likehttp://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 _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Agreed. I'd LOVE to see openZIM support in a Wikipedia app. We need to make sure that our users can still access content even if their disconnected. I personally would love to be able to download a couple of collections in the openZim format and redistribute as needed. It would be really cool to download them trivially on a phone and then redistribute them to areas that may not have a faster internet connection but have a decent wifi connection.
Christian, Patrick and I can easily connect you with the PhoneGap team to help you out with this plug in. It would be good to get an early proof of concept out for the openZim and wikitech developers to play with. What do you say? Are you up for it?
--tomasz
On Sat, Aug 27, 2011 at 7:06 PM, Patrick Reilly preilly@wikimedia.org wrote:
That would be a really nice addition to the official application in the future.
We should definitely continue to talk about this and try to figure out the optimal approach.
Also, once the PhoneGap based Android application is developed it should be easy to fork and experiment with the various approaches described below.
— Patrick
On Sat, Aug 27, 2011 at 10:17 PM, Christian Pühringer cip@gmx.at wrote:
Hi,
It would be really nice if offline (=zim) support was integrated in the official wikipedia app: The user could switch between online access and offline reading.
If I understand Tomasz correctly, it is planned to implement the wikipedia app with phonegap, so having zim support for phonegap would allow integration of offline support into the app. Therefore I think its a good idea to implement zim support for phone gap.
Regarding the technical details there a basically to ways to implement zim support in phonegap:
- Using phonegap API. Theoretically device independent, but questionable
whether actually working with sufficient performance on all target platforms.
- As plugin: Implemented as a native component, with bindings to phonegap.
I'd prefer the plugin approach. The additional effort of implementing the zimlib plugin for different platforms is not that high. The zimlib (and liblzma) is already available for C++ (STL): Symbian[1], Meego[2], Android (with NDK, cleaner is to use Java), iPhone (untested, may have some issues (see [5]), alternative would be to port to objective-C) and probably Bada Java (less mature than C++ implementation) : Android, Blackberry and other J2ME [3] (not sure whether possible on J2ME, but this is even more true for phonegap API approach) Porting needs only to be done to: C#: Windows Mobile Other: ? In addition the plugins for the platforms need to be written but this shouldn't be a too high effort. The zimlib is already pretty stable, so the maintenance effort for the ports should not be too bad.
An additional benefit of the plugin-approach is that the ported zimlibs plugins can also be used for native apps. (Besides having the plain zimlib, the plugin projects can be used as a starting point for new projects).
For the phonegap API approach zimlib must be ported to java script. As mentioned before I doubt that the javascript zimlib would work with sufficient performance on all (if any) . devices. See for example [4]
Best regards, Christian [1] Neither File (required for phonegap API approach) nor plugins officially supported in phonegap. However, should be pretty easy to add. (Either in official (=WRT) phonegap, or in QT port. Probably better in QT port). [2] Not supported by phonegap. However, should be possible to use QT phonegap port. [3] Not supported by phonegap. [4] http://community.phonegap.com/nitobi/topics/how_to_implement_lzma?from_gsfn=... [5] http://stackoverflow.com/questions/823116/how-do-i-use-c-stl-containers-in-m...
Am 27.08.2011 10:34, schrieb Manuel Schneider:
Hi,
is this maybe also useful for ZIM - to make ZIM readers which are working cross-platform?
As far as I understood phonegap is mainly a framework to create mobile apps based on HTML 5. At least the display of ZIM contents should be simple then as we just need a HTML widget for that. But what about libraries needed to read file contents, such as zimlib? I couldn't find out if Phonegap itself supports native file access (so we could re-implement ZIM features with that) or if it allows the use of native libraries.
/Manuel
Am 27.08.2011 02:44, schrieb Tomasz Finc:
Thanks for the super detailed write up Brion. I've been actively talking with the PhoneGap guys after doing some more research on this and it seems like a really good fit to have a consistent experience across a whole host of devices.
What were looking at is not necessarily a lot of depth in every single platform but a lot of horizontal range. Phonegap platform support beats out Titanium pretty easily there.
We'll be working a lot closer with the PhoneGap team going forward to quickly have something in the android store to start.
If anyone is interested in helping then we'll have plenty of opportunities to join in. Over the next weeks we'll be adding bugs and sending out more calls to get involved.
--tomasz
On Tue, Aug 16, 2011 at 1:50 PM, Brion Vibberbrion@pobox.com wrote:
On Tue, Aug 16, 2011 at 1:14 PM, Tomasz Finctfinc@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 likehttp://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 _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Hi Tomasz,
I cannot promise, but I'll try to find the time to implement some proof of concept for zim+phonegap. (The problem is that this is not that low effort, because all potential platforms either don't have tested zimlib support or don't have phonegap plugin support out-of-the-box.)
For the proof-of-concept I expect that I don't need support by phonegap, but mid-term it would make sense if you could connect me with them (e.g. regarding plugin support for symbian/meego)).
Also please keep me updated about the state of the Wikipedia app for phonegap. (I assume there is nothing available right now?) .
Best regards, Christian
Am 29.08.2011 12:08, schrieb Tomasz Finc:
Agreed. I'd LOVE to see openZIM support in a Wikipedia app. We need to make sure that our users can still access content even if their disconnected. I personally would love to be able to download a couple of collections in the openZim format and redistribute as needed. It would be really cool to download them trivially on a phone and then redistribute them to areas that may not have a faster internet connection but have a decent wifi connection.
Christian, Patrick and I can easily connect you with the PhoneGap team to help you out with this plug in. It would be good to get an early proof of concept out for the openZim and wikitech developers to play with. What do you say? Are you up for it?
--tomasz
On Sat, Aug 27, 2011 at 7:06 PM, Patrick Reillypreilly@wikimedia.org wrote:
That would be a really nice addition to the official application in the future.
We should definitely continue to talk about this and try to figure out the optimal approach.
Also, once the PhoneGap based Android application is developed it should be easy to fork and experiment with the various approaches described below.
— Patrick
On Sat, Aug 27, 2011 at 10:17 PM, Christian Pühringercip@gmx.at wrote:
Hi,
It would be really nice if offline (=zim) support was integrated in the official wikipedia app: The user could switch between online access and offline reading.
If I understand Tomasz correctly, it is planned to implement the wikipedia app with phonegap, so having zim support for phonegap would allow integration of offline support into the app. Therefore I think its a good idea to implement zim support for phone gap.
Regarding the technical details there a basically to ways to implement zim support in phonegap:
- Using phonegap API. Theoretically device independent, but questionable
whether actually working with sufficient performance on all target platforms.
- As plugin: Implemented as a native component, with bindings to phonegap.
I'd prefer the plugin approach. The additional effort of implementing the zimlib plugin for different platforms is not that high. The zimlib (and liblzma) is already available for C++ (STL): Symbian[1], Meego[2], Android (with NDK, cleaner is to use Java), iPhone (untested, may have some issues (see [5]), alternative would be to port to objective-C) and probably Bada Java (less mature than C++ implementation) : Android, Blackberry and other J2ME [3] (not sure whether possible on J2ME, but this is even more true for phonegap API approach) Porting needs only to be done to: C#: Windows Mobile Other: ? In addition the plugins for the platforms need to be written but this shouldn't be a too high effort. The zimlib is already pretty stable, so the maintenance effort for the ports should not be too bad.
An additional benefit of the plugin-approach is that the ported zimlibs plugins can also be used for native apps. (Besides having the plain zimlib, the plugin projects can be used as a starting point for new projects).
For the phonegap API approach zimlib must be ported to java script. As mentioned before I doubt that the javascript zimlib would work with sufficient performance on all (if any) . devices. See for example [4]
Best regards, Christian [1] Neither File (required for phonegap API approach) nor plugins officially supported in phonegap. However, should be pretty easy to add. (Either in official (=WRT) phonegap, or in QT port. Probably better in QT port). [2] Not supported by phonegap. However, should be possible to use QT phonegap port. [3] Not supported by phonegap. [4] http://community.phonegap.com/nitobi/topics/how_to_implement_lzma?from_gsfn=... [5] http://stackoverflow.com/questions/823116/how-do-i-use-c-stl-containers-in-m...
Am 27.08.2011 10:34, schrieb Manuel Schneider:
Hi,
is this maybe also useful for ZIM - to make ZIM readers which are working cross-platform?
As far as I understood phonegap is mainly a framework to create mobile apps based on HTML 5. At least the display of ZIM contents should be simple then as we just need a HTML widget for that. But what about libraries needed to read file contents, such as zimlib? I couldn't find out if Phonegap itself supports native file access (so we could re-implement ZIM features with that) or if it allows the use of native libraries.
/Manuel
Am 27.08.2011 02:44, schrieb Tomasz Finc:
Thanks for the super detailed write up Brion. I've been actively talking with the PhoneGap guys after doing some more research on this and it seems like a really good fit to have a consistent experience across a whole host of devices.
What were looking at is not necessarily a lot of depth in every single platform but a lot of horizontal range. Phonegap platform support beats out Titanium pretty easily there.
We'll be working a lot closer with the PhoneGap team going forward to quickly have something in the android store to start.
If anyone is interested in helping then we'll have plenty of opportunities to join in. Over the next weeks we'll be adding bugs and sending out more calls to get involved.
--tomasz
On Tue, Aug 16, 2011 at 1:50 PM, Brion Vibberbrion@pobox.com wrote:
On Tue, Aug 16, 2011 at 1:14 PM, Tomasz Finctfinc@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 likehttp://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 _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
dev-l mailing list dev-l@openzim.org https://intern.openzim.org/mailman/listinfo/dev-l
CC'ing Herman Wong from Nitobi who's helping develop an Android version of the Wikimedia iOS app. I'll be sending an email with more detail on that later this week.
Herman, Christian is looking to write a plug in to implement a simpler reader for the http://openzim.org/ standard.
Christian, come join us on IRC #wikimedia-mobile with whatever questions you might have.
--tomasz
On Fri, Sep 2, 2011 at 2:11 PM, Christian Pühringer cip@gmx.at wrote:
Hi Tomasz,
I cannot promise, but I'll try to find the time to implement some proof of concept for zim+phonegap. (The problem is that this is not that low effort, because all potential platforms either don't have tested zimlib support or don't have phonegap plugin support out-of-the-box.)
For the proof-of-concept I expect that I don't need support by phonegap, but mid-term it would make sense if you could connect me with them (e.g. regarding plugin support for symbian/meego)).
Also please keep me updated about the state of the Wikipedia app for phonegap. (I assume there is nothing available right now?) .
Best regards, Christian
Am 29.08.2011 12:08, schrieb Tomasz Finc:
Agreed. I'd LOVE to see openZIM support in a Wikipedia app. We need to make sure that our users can still access content even if their disconnected. I personally would love to be able to download a couple of collections in the openZim format and redistribute as needed. It would be really cool to download them trivially on a phone and then redistribute them to areas that may not have a faster internet connection but have a decent wifi connection.
Christian, Patrick and I can easily connect you with the PhoneGap team to help you out with this plug in. It would be good to get an early proof of concept out for the openZim and wikitech developers to play with. What do you say? Are you up for it?
--tomasz
On Sat, Aug 27, 2011 at 7:06 PM, Patrick Reillypreilly@wikimedia.org wrote:
That would be a really nice addition to the official application in the future.
We should definitely continue to talk about this and try to figure out the optimal approach.
Also, once the PhoneGap based Android application is developed it should be easy to fork and experiment with the various approaches described below.
— Patrick
On Sat, Aug 27, 2011 at 10:17 PM, Christian Pühringercip@gmx.at wrote:
Hi,
It would be really nice if offline (=zim) support was integrated in the official wikipedia app: The user could switch between online access and offline reading.
If I understand Tomasz correctly, it is planned to implement the wikipedia app with phonegap, so having zim support for phonegap would allow integration of offline support into the app. Therefore I think its a good idea to implement zim support for phone gap.
Regarding the technical details there a basically to ways to implement zim support in phonegap:
- Using phonegap API. Theoretically device independent, but questionable
whether actually working with sufficient performance on all target platforms.
- As plugin: Implemented as a native component, with bindings to
phonegap.
I'd prefer the plugin approach. The additional effort of implementing the zimlib plugin for different platforms is not that high. The zimlib (and liblzma) is already available for C++ (STL): Symbian[1], Meego[2], Android (with NDK, cleaner is to use Java), iPhone (untested, may have some issues (see [5]), alternative would be to port to objective-C) and probably Bada Java (less mature than C++ implementation) : Android, Blackberry and other J2ME [3] (not sure whether possible on J2ME, but this is even more true for phonegap API approach) Porting needs only to be done to: C#: Windows Mobile Other: ? In addition the plugins for the platforms need to be written but this shouldn't be a too high effort. The zimlib is already pretty stable, so the maintenance effort for the ports should not be too bad.
An additional benefit of the plugin-approach is that the ported zimlibs plugins can also be used for native apps. (Besides having the plain zimlib, the plugin projects can be used as a starting point for new projects).
For the phonegap API approach zimlib must be ported to java script. As mentioned before I doubt that the javascript zimlib would work with sufficient performance on all (if any) . devices. See for example [4]
Best regards, Christian [1] Neither File (required for phonegap API approach) nor plugins officially supported in phonegap. However, should be pretty easy to add. (Either in official (=WRT) phonegap, or in QT port. Probably better in QT port). [2] Not supported by phonegap. However, should be possible to use QT phonegap port. [3] Not supported by phonegap. [4] http://community.phonegap.com/nitobi/topics/how_to_implement_lzma?from_gsfn=... [5]
http://stackoverflow.com/questions/823116/how-do-i-use-c-stl-containers-in-m...
Am 27.08.2011 10:34, schrieb Manuel Schneider:
Hi,
is this maybe also useful for ZIM - to make ZIM readers which are working cross-platform?
As far as I understood phonegap is mainly a framework to create mobile apps based on HTML 5. At least the display of ZIM contents should be simple then as we just need a HTML widget for that. But what about libraries needed to read file contents, such as zimlib? I couldn't find out if Phonegap itself supports native file access (so we could re-implement ZIM features with that) or if it allows the use of native libraries.
/Manuel
Am 27.08.2011 02:44, schrieb Tomasz Finc:
Thanks for the super detailed write up Brion. I've been actively talking with the PhoneGap guys after doing some more research on this and it seems like a really good fit to have a consistent experience across a whole host of devices.
What were looking at is not necessarily a lot of depth in every single platform but a lot of horizontal range. Phonegap platform support beats out Titanium pretty easily there.
We'll be working a lot closer with the PhoneGap team going forward to quickly have something in the android store to start.
If anyone is interested in helping then we'll have plenty of opportunities to join in. Over the next weeks we'll be adding bugs and sending out more calls to get involved.
--tomasz
On Tue, Aug 16, 2011 at 1:50 PM, Brion Vibberbrion@pobox.com wrote: > > On Tue, Aug 16, 2011 at 1:14 PM, Tomasz Finctfinc@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 likehttp://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 > _______________________________________________ > Wikitech-l mailing list > Wikitech-l@lists.wikimedia.org > https://lists.wikimedia.org/mailman/listinfo/wikitech-l > _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
dev-l mailing list dev-l@openzim.org https://intern.openzim.org/mailman/listinfo/dev-l
On Wed, Sep 14, 2011 at 2:33 PM, Tomasz Finc tfinc@wikimedia.org wrote:
CC'ing Herman Wong from Nitobi who's helping develop an Android version of the Wikimedia iOS app. I'll be sending an email with more detail on that later this week.
Herman, Christian is looking to write a plug in to implement a simpler reader for the http://openzim.org/ standard.
As I understand, for Android this will roughly require: * get zimreader-java classes running under Android+Darwin < http://svn.openzim.org/viewvc.cgi/trunk/zimreader-java/%3E * build an Android PhoneGap Java plugin wrapping it < http://wiki.phonegap.com/w/page/36753494/How%20to%20Create%20a%20PhoneGap%20...
iPhone/iPad will require: * build C++ zimlib and its dependencies for iOS (cross-compiling from Mac OS X) * build an Obj-C iOS a PhoneGap plugin wrapping it < http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20...
I suspect the Android one will be easier, but you never know. ;)
The Java bits ... may also be adaptable to BlackBerry: http://wiki.phonegap.com/w/page/35799737/How-To-Create-a-PhoneGap-Plugin-for...
No other platform seems to have PhoneGap plugin documentation that I can find.
Alternately, different code could be written to implement the file format reader directly in the PhoneGap plugins if that ends up easier than porting the other libraries; the most performance-critical part is probably the LZMA decompression, which could be a smaller more isolated library.
http://openzim.org/ZIM_File_Format
-- brion
Hi,
I've some first results regarding the feasibility of phonegap+zim on android. While it basically works to load an article (without images) and display it (thanks to Arunesh for doing the java port), I've encountered some major challenges: 1. How to display images? It is apparently quite tricky to display images which are not either internet links or local files in a webview on android: The most promising concepts I found are: a). Extract images from zim to local file system and provide them over a ContentProvider. b) Replace image src with base64 encoded image data. (Either directly on loading of article or by using java script) I'll try to implement at least one of this approaches to find out whether it is feasible to do so. However, obviously both approaches are not really perfect solutions, so if anybody has a better idea please let me know.
Note that there actually would be a good way to do it (WebViewClient.shouldInterceptRequest()) but unfortunately this is API-level 11 which means that there is no android mobile phone currently available in the market which supports it. Note that additionally it would not be possible to use this with current phonegap versions. Therefore it would be nice if in future phonegap versions this functionality is provided to plugins. While this would not help for current mobile phones, it would allow a more efficient implementation of zim support in the future.
2. Performance The JAVA liblzma performance is pretty bad: To increase efficiency of compression in the zim-format articles (and also all other data like images) are stored in clusters. Cluster size is apparently about 1 MB. This implies that loading an article which is stored at the end of a cluster involves decompressing the complete cluster. While this is not a problem with C code even on embedded devices, it seems to be a problem with Java: Reading an article at the end of a cluster takes close to 20 s on my test android phone. As the phone is pretty low end (Orange Boston ) and uses an old android version (Eclair) without a just-in-timer compiler I expect that other models are significantly faster. However, I doubt that the performance gain will be sufficient to bring article load time in a range of << 1 s. I am going to try it out, but I'd expect that we probably have to switch to native code for zimlib support. (At least for liblzma). An other approach is to reduce cluster size of zim files. I am not sure right now whether this would be sufficiently fast, but it is worth considering it as an option: While for android being able to use the java implementation is a benefit, it is also not a big thing if native code has to be used. However, more concerning is that it may not be possible to support for Windows Mobile at all with the current cluster size. (Because AFAIK not native code is supported)
Note that both issues are not only related to phonegap, they would basically also affect a regular android app. (1. only if webview is used, which is however the by far simplest approach, except for the image issue)
Best regards, Christian
On 24/09/2011 14:24, Christian Pühringer wrote:
The JAVA liblzma performance is pretty bad: To increase efficiency of compression in the zim-format articles (and also all other data like images) are stored in clusters. Cluster size is apparently about 1 MB. This implies that loading an article which is stored at the end of a cluster involves decompressing the complete cluster.
Images should not be compressed in ZIM files for the obvious reasons they mainly are already compressed. This is the case for all ZIM files I made. As far as I know this is also the case for Mediawiki:Collection build ZIM files.
Emmanuel
On Sat, Sep 24, 2011 at 5:24 AM, Christian Pühringer cip@gmx.at wrote:
a). Extract images from zim to local file system and provide them over a ContentProvider. b) Replace image src with base64 encoded image data. (Either directly on loading of article or by using java script)
I'd be inclined to try the base64 data URIs for simplicity: you won't have to deal with cleaning up and maintaining a cache of extracted files.
On the other hand, data URIs will probably take up more memory, and you have to spend a little extra time on base64 encoding/decoding. Try it and see! :)
While this is not a problem with C code even on embedded devices, it seems to be a problem with Java: Reading an article at the end of a cluster takes close to 20 s on my test android phone. As the phone is pretty low end (Orange Boston ) and uses an old android version (Eclair) without a just-in-timer compiler I expect that other models are significantly faster. However, I doubt that the performance gain will be sufficient to bring article load time in a range of << 1 s. I am going to try it out, but I'd expect that we probably have to switch to native code for zimlib support. (At least for liblzma).
Eek! Definitely should test on newer devices/OSs as well, at least to get a baseline to compare the native code against.
(Note that not all Android systems are necessarily ARM -- for best portability, being able to use the Java LZMA code if the native library can't be loaded might be nice.)
An other approach is to reduce cluster size of zim files. I am not sure right now whether this would be sufficiently fast, but it is worth considering it as an option: While for android being able to use the java implementation is a benefit, it is also not a big thing if native code has to be used. However, more concerning is that it may not be possible to support for Windows Mobile at all with the current cluster size. (Because AFAIK not native code is supported)
Windows Mobile / Windows Phone should have a decent JIT compiler for .NET code, so it's at least worth testing...
-- brion
wikitech-l@lists.wikimedia.org