Mobile content-centric applications are coming to an enterprise near you! Why do you need them? What are the constraints and opportunities of mobile ECM development? What technologies are available and what solutions will Nuxeo propose to help developers create these applications?
4. • Open source ECM (Enterprise Content
Management) vendor, since 2000
• 50 people, in Paris, Boston and San Francisco
• Provides and supports a Java-based, modular,
extensible platform for ECM, as well as
Document Management, Digital Asset
Management and Case Management
applications
mercredi 16 mars 2011
5. Gartner: mobile apps and
tablets are HOT
Source: http://blogs.techrepublic.com.com/10things/?p=1871
mercredi 16 mars 2011
6. Gartner again
(but emphasis is mine)
• “Enterprise apps will need to be designed for
the tablet;”
• “Delivering these apps gets complicated due to the
selection of platforms;”
• “Marketing will drive a lot of projects to utilize
tablets, but these devices can be used for
inspections, surveys, image capture,
documentation and training.”
• “The PC era is over. Think of mobile design
points.”
mercredi 16 mars 2011
7. Technical limitations
• Limited screen size
• No keyboard; touch interface not a mouse either
• Limited computing power
• Limited network availability and bandwidth
• Limited content types
• Platform proliferation!
• Etc.
mercredi 16 mars 2011
8. New opportunities
• Just use your finger! (ex: Zosh)
• Geolocation
• Camera
• Ex: Barcode scanning
• Other sensors?
mercredi 16 mars 2011
9. Don’t fight, but embrace
the constraints!
• Well defined (but per-platform) UI guidelines
• New standard to the rescue: HTML5
• Mobile-specific enhancements to CSS
• Local storage (file and DB)
• Offline mode
• ...
mercredi 16 mars 2011
11. Our Focus: Smart Phones
and Tablets, for Enterprise apps
mercredi 16 mars 2011
12. Web Apps vs. Native Apps
• Objective-C
• Java / Dalvik
vs. • C++
• .NET
• ...
mercredi 16 mars 2011
13. Web Apps
• Multi-platform
• Depending on HTML5 support by your
platform vendor
• Easy deployment
• But: UI won’t look and feel “native”
• Users will know they are in a browser
• And: Limited access to device APIs
mercredi 16 mars 2011
14. Native Apps
• Optimized for a single platform capabilities
• Optimal user experience
• Access to sensors and proprietary APIs
• Tempting business model (App Store)
• But: Need platform-specific training, longer
development time, too many platforms
mercredi 16 mars 2011
15. Actually there are more options
Web Apps Native Apps
• Pure HTML (with ad- • Cross-platforms, “web
hoc CSS) oriented”, frameworks
• HTML “enhanced” • Cross-platforms,
with jQuery “native UI oriented”,
frameworks
• One Page or SOFEA
web apps • “Pure” Native apps
mercredi 16 mars 2011
16. 1. “Static” HTML
• Classical web application made of pages,
with a bit of CSS to make them more
readable on a tiny screen
• Good enough for mobile web sites
• For any kind of web applications, we can
do better for a very tiny price
mercredi 16 mars 2011
18. 2. “Dynamic” HTML
• HTML content delivered with AJAX requests
using “link hijacking” techniques (usually using a
bit of jQuery love)
• CSS and JS tricks to emulate native UI
• Libraries: iUI, jQTouch, jQuery Mobile...
• iUI: already mature, full-featured
• jQuery Mobile: recent project, focus on
portability, but only on phones (no tablets)
mercredi 16 mars 2011
19. 3. 1-page Web apps
• Applications built using the SOFEA paradigm
(Service-Oriented Front-End Architecture)
• Web assets (html, js, css...) are loaded only
once, then all interaction with server takes
place as web services (usually JSON RPC or
other “kinda restish” API)
• (Too?) Many frameworks, still immature: GWT,
Sencha Touch, SproutCore Mobile, Dojo, etc.
mercredi 16 mars 2011
21. 4.
• Embeds your web app into a custom-
built web browser
• Removes URL and bottom tab bars
• Extends the browser JS API with
platform-specific API
• Easiest transition from web app to native
• But you still get a web-like UI
• Open source community project
mercredi 16 mars 2011
22. 5.
• Initially similar to PhoneGap (browser API
extensions)
• Then refocussed on providing a JS-based API
to native UI and platform APIs
• 3 supported platforms: iOS, Android and
BlackBerry
mercredi 16 mars 2011
23. 6. “True” Native Apps
• Develop native APIs using vendor SDKs
• iOS: Objective-C / Cocoa Touch
• Android: “Java”
• BlackBerry: another Java
• Symbian: C++
• Etc.
• Main problem: too many platforms, too little time :(
mercredi 16 mars 2011
25. Challenge
• Write a few mobile apps to browse and
interact with content managed by a Nuxeo
DM document management server
• Experiment with several technologies
(iPhone/Android, Native/Titanium/Web)
• Converge toward a generic Nuxeo mobile
client for at least iPhone and Android
mercredi 16 mars 2011
26. Specs
• Browse content on a Document Management
server
• Show content (including PDF, Office...) and
metadata
• Full text search
• Store contextual data on the device
• Recently updated documents (“timeline”)
mercredi 16 mars 2011
27. Architecture
HTTP
CMIS or
JSON-RPC or
Nuxeo Automation
Client Server
mercredi 16 mars 2011
29. 5 technologies
• Native iPhone app (Obj-C + Cocoa Touch)
• Web App using jQuery Mobile
• 1-Page App using jQuery Mobile +
backbone.js (Web or PhoneGap)
• Portable app using Appcelerator Titanium
Mobile
• Android
mercredi 16 mars 2011
30. Objective-C: the results
• Took 2 days to learn the basics of Objective-
C, Cocoa Touch, XCode
• Took about 3 days for a very basic prototype
• Still unstable
• Code still there: hg.nuxeo.org/mobile/iphone
mercredi 16 mars 2011
31. Objective-C: the Good
• Learning a new language is intellectually
stimulating :)
• This is good old UNIX, you can use open
source libraries in C if you need
• Small ecosystem of open source libraries
around iOS
mercredi 16 mars 2011
32. Objective-C: the Bad
• Learning a new language takes time, learning
a new IDE even more, and you don’t want to
switch from two IDEs too often
• Only for iOS, as you would guess
mercredi 16 mars 2011
33. jQuery Mobile: the results
• Took 1/2 a day to get a basic demo
(browsing, search) running
• Standard HTML pages generated on the
server, AJAX magic managed by the
framework
mercredi 16 mars 2011
35. jQuery Mobile: the Good
• Very easy to do on the server
• Fast turnaround thanks to Nuxeo
WebEngine
• Easiest deployment option (you don’t need
to deploy on the phones!)
mercredi 16 mars 2011
36. jQuery Mobile: the Bad
• The browser’s forward/back buttons are in the
way, but you have to use them after looking at
a piece of content
• No easy way to develop a tab bar as in my
design (and there is already the browser tab bar
on the way)
• jQuery Mobile focussed only on phones (not
tablets), other frameworks (Sencha Touch) need
to be investigated for tablets
mercredi 16 mars 2011
37. Variant: as a 1-page app
• Exact same application, built as a 1-page app
using jQuery Mobile and backbone.js
• Only interaction with the server (after initial
assets loading) is via JSON-RPC
• HTML generated on the client (mustache.js)
mercredi 16 mars 2011
38. And as a PhoneGap App
• It’s trivial to convert the whole app into a
native App using PhoneGap
• The browser URL bar and navigation buttons
disappear
• But now there is no way to come back from
a PDF or image view
• Have to rely on third-party PhoneGap plugins
or develop our own (-> back to native)
mercredi 16 mars 2011
39. Appcelerator: the results
• Took about 1 day to learn how to use the
platform
• Took about 5 days to create a reasonably
good looking, alpha-quality app
• 90% of the time spent on front-end, 10% on
back end (currently, JSON REST API with
WebEngine)
mercredi 16 mars 2011
42. Appcelerator: the Good
• JavaScript much easier to learn than
Objective-C
• Specially when you already know
JavaScript ;) (or even Java)
• Productivity 2x to 5x higher that with native
Cocoa-Touch, slightly lower than SOFEA
mercredi 16 mars 2011
43. Appcelerator: the bad
• “IDE” is quirky and unstable
• And not really an IDE actually!
• No debugger (yet!), longer code/compile/deploy
turnaround
• Slower than native
• Another layer of indirection
mercredi 16 mars 2011
44. Android: the result
• Application developed by 5 persons during
a 2 days “hackathon”
• First version ready in a matter of hours
• Uses the Nuxeo Automation API and an
open source library developed by Smart &
Soft for caching
mercredi 16 mars 2011
46. Android: the good
• It’s just Java, no need to learn a new
language
• One can even reuse existing Java
libraries, like Nuxeo Automation Client
• IDE support is great (Eclipse)
• Overall, very satisfying programming
experience
mercredi 16 mars 2011
47. Android: the bad
• The market is not ready yet, specially for
tablets
• Device fragmentation
mercredi 16 mars 2011
48. Native (Obj-C)
• Not worth your time, unless you:
• Are (or have) a dedicated iOS developer
• Want to compete on design to make $$
on the App store
• Want to be the first to leverage newly
introduced iOS features
• ... which was not our focus
mercredi 16 mars 2011
49. Mobile HTML (5)
• The fastest way to get a simple application up
and running (no App Store hassles)
• The most multi-platform approach
• But: Doesn’t provide users with a 100% native
look and (especially) feel
• Doesn’t give you access to all the local features
of the device
• Especially wrt document viewing
• Can be complemented with PhoneGap
mercredi 16 mars 2011
50. Appcelerator
• Gives you native look and feel and
platform access, with an original but
familiar API, at the price of slightly longer
development time than pure HTML
• Supports the platforms that make
business sense to us
• Not 100% bug-free, will always lag behind
native platform, slower than native
mercredi 16 mars 2011
51. Additional insights
• JavaScript programming (API, not language) felt
initially very ≠ between HTML5 and Titanium
• But if you do two projects in parallel (HTML5
for maximal portability, Titanium for native
goodness) you can probably share some code
• Utility functions and low-level stuff
(network, models, preference...)
• And maybe some of the interaction stuff too
mercredi 16 mars 2011
53. Our mobile roadmap
• Generic mobile document browsing apps
(native / web)
• Library / framework to help the
development of specific (vertical) apps
• Later: directly create mobile apps from
Nuxeo Studio (with little or no coding)
mercredi 16 mars 2011
54. Generic document
browsing App
• Generic iOS App (based on Titanium)
currently under review on the App Store
• Android app prototype, ready to be tested
• Mobile web module to be added to Nuxeo
Markeplace
• Work will continue to provide access to
more Nuxeo DM features, better
disconnected mode experience, etc.
mercredi 16 mars 2011
55. Business-specific apps
• We’re ready to work with our customers
and partners on business-specific apps
• Choice between web apps and native (Obj-
C, Android, Titanium) apps is up to the
customer, and will depend on features
needed, devices used, development
resources, etc.
mercredi 16 mars 2011
56. Approach to business
apps
• Provide to iOS and Android developers a
library to access Nuxeo through the
Content Automation API
• Should include caching / offline mode
management
• Generic UI framework to display Nuxeo
documents
mercredi 16 mars 2011
57. Possible future features
• Digitally sign documents on the road
• Automatically identify different types of documents
through content analysis
• See the exact location where document was
uploaded or last edited
• Upload photos directly from mobile phone to the
ECM repository
• Offline mode keeps content available on the mobile
device when offline
mercredi 16 mars 2011
58. More info
• Watch http://blogs.nuxeo.com/ for news
• Android: http://blogs.nuxeo.com/dev/
2011/03/android-client-for-nuxeo-
dm.html
• iPhone: coming soon
mercredi 16 mars 2011
61. Up Next...
March 30, 2011 - Webinar
Nuxeo DAM - The Platform for Rich
Media Management
April 13, 2011 - Webinar
Why a Framework? Case Management
with Nuxeo EP
mercredi 16 mars 2011