[nuxeo world 2013] roadmap 2014 - technical part
TRANSCRIPT
Nuxeo Technical Roadmap
from 5.6 to 6.0
Thierry Delprat
Ok, and now?
How do we
implement all this?
What are the next technical evolutions?
What has been done so far?
API
Factory
Scale
UI & UX
Technical Agenda
Accessing
Nuxeo Services
Building Applications
with Nuxeo Platform
Scaleto the Sky
What will your Application look like
API
Accessing Nuxeo Services
Platform & API
SaaS model requires APIThis is the main entry point for
nuxeo.io
Web frameworks rely on REST APIHtml 5, Mobile Apps,
Portals
SOA and loose couplingWebServices, ESB, Auth
A good API is now more important than ever.
What is a good API?
API you can quickly understandREST is a nice pattern
REST is a good fit for Nuxeo use cases
ConsistencyProvide a consistent experience for the
developers
Adapted to the real worldProvide concepts that match with current tools
Handle the complex use cases too
API and Nuxeo: Java API
Nuxeo ComponentNuxeo Service APluginPluginPlugin
Nuxeo ComponentNuxeo Service BPluginPluginPlugin
Nuxeo ComponentNuxeo Service CPluginPluginPlugin
Nuxeo ComponentNuxeo Service DPluginPluginPlugin
API and Nuxeo: Operations
Nuxeo ComponentNuxeo Service APluginPluginPlugin
Nuxeo ComponentNuxeo Service BPluginPluginPlugin
Nuxeo ComponentNuxeo Service CPluginPluginPlugin
Nuxeo ComponentNuxeo Service DPluginPluginPlugin
Operation A1
Operation A2
Operation ...
Operation B1
Operation ...
Operation C1
Operation ...
Operation D1
Operation ...JAX-RS
(jersey)WebEngineJAX-RS
Publisher
http
API and Nuxeo: Chains
Nuxeo ComponentNuxeo Service APluginPluginPlugin
Nuxeo ComponentNuxeo Service BPluginPluginPlugin
Nuxeo ComponentNuxeo Service CPluginPluginPlugin
Nuxeo ComponentNuxeo Service DPluginPluginPlugin
Operation A1
Operation A2
Operation ...
Operation B1
Operation ...
Operation C1
Operation ...
Operation D1
Operation ...JAX-RS
(jersey)WebEngineJAX-RS
Publisher
http
Chain 1
Chain 2
Chain ...
API and Nuxeo: Operations and Chains
Command APIEasy to do RPC
Easy to integrate applications together
But not easy to use with client side MVCResource should be the document and not the operation
API and Nuxeo: Resources
Nuxeo ComponentNuxeo Service APluginPluginPlugin
Nuxeo ComponentNuxeo Service BPluginPluginPlugin
Nuxeo ComponentNuxeo Service CPluginPluginPlugin
Nuxeo ComponentNuxeo Service DPluginPluginPlugin
Operation A1
Operation A2
Operation ...
Operation B1
Operation ...
Operation C1
Operation ...
Operation D1
Operation ...JAX-RS
(jersey)WebEngineJAX-RS
Publisher
http
Chain 1
Chain 2
Chain ...
Document
User
Task
WorkflowWorkflow
WorkflowDirectory
Automation new Endpoints
Expose new REST EndpointsDocuments, Directories, Users, Tasks,
Workflows
exposed as REST resources
Pure GET / POST/ PUT / DELETE bindings
Use Fragment model to expose all data in one callEnsure efficiency in data retrieval: ex: Document + links + Comments + tasks
Enable pluggability
Provide bridge with Command APIReuse existing and custom
Operations
Automation new Endpoints
js : nuxeo.doc(path).fetch()
http: GET /nuxeo/api/path/{pathOfTheDoc} js :
nuxeo.doc(id).fetch()
http: GET /nuxeo/api/id/{idOfTheDoc} js :
nuxeo.doc(id).update({...})
http: POST /nuxeo/api/id/{idOfTheDoc}
{ "properties": {
...
"dc:title": "The new title",
...
}} Js : nuxeo.doc(id).op({...})
http: POST /nuxeo/api/id/{idOfTheDoc}/@op/{opId}
{ ...}
Automation Infrastructure
Marshalling improvementssimpler management of complex properties
allow for custom JSON marshalling / business objects
Extend Blob managementseparate upload requests from processing requests
use Blobs as properties
Make API more consistentOperation and Chain become the same
Parameters vs Context resolution
Paginable objects
Fixing all known limitations of Command API
Automation Infrastructure
Batch management and long running transactions dedicated operations
new base classes for listeners or operations
Exception managementapply try/catch model to chains
DebuggingThrow clean Exception
Track operations and chain execution
Scripted OperationsEnable usage of restricted scripting
Adapt infrastructure to complex and nested chains
Automation Clients
Extend Java Nuxeo ClientMulti-threading
Upload/Download manager
REST client
Standardize nuxeo.jsJQuery / Angular, Node.js bindings
Standard TCK
Additional bindings on the wayPython (Drive), Php, Dart, .Net
iOS, Android
Interoperability
CMISContinue keeping the stack up to date
CXFMigrated JAX-WS stack on the server side
Integrate JAX-RS REST client in Automation
OAuth2 integrationOpenID integration
Make Nuxeo an OAuth2 Service Provider
Integrate inside Automation Client
Mule ESB Provide a Nuxeo Automation Connector
Configuration and Building Tools
Building Applications with Nuxeo Platform
Nuxeo Application Factory
Configuring the Platform: Nuxeo Studiofor business
users
Extending the Platform: Nuxeo IDE & SDKfor Java
developers
Building Web Apps: Nuxeo AngularJS SDKfor Web
developers
Building Mobile Apps: Nuxeo Mobile SDKfor Android and iOS
developers
Configuring the Platform: Nuxeo Studio
Multi-users Collaboration mode
Chat
Versioning and
branch management
Multi-ProjectsApplication templates
Dependency management
More friendly with project lifecycle constraints
Configuring the Platform: Nuxeo Studio
Update Platform infrastructure to ensure configurabilityMore widgets, more layouts, more actions
Make all screens configurable
More workflow featuresSub workflow management
Studio Event HandlersGive access to all Listener and Worker settings
Long running transaction management from within Studio
Expose even more features to Studio configuration
Extending the Platform: Java Dev
Continue lower learning curveShorten dev / test cycleEnsure compatibility with API and build system
Nuxeo Runtime: learn from Eclipse Apricot and OSGiMigrate
deployment-fragments plain extension points + War
resources
Provide one single deployment modelIDE vs Studio vs
Standard
Hot-reload via component stop/startuse Runtime to manage dependency graph
Extending the Platform: Java Dev
Nuxeo Web LayerInject Nuxeo Services in View ControllersMakes framework more consistent
Allows to track dependencies
Nuxeo IDEExtend Nuxeo IDE Eclipse PluginHelpers : XML contribution helper,
Studiointegration : Publish widget types, templates in Studio registries
Allow sharing of registries among several IDE projects
QA: incremental on the fly testing
Continue to maintain IntelliJ plugin (we use it!)
Nuxeo BuildMigrate build to Maven 3
Build on the Platform: Web Developers
Target modelDefine object model and business process via Studio
Nuxeo default UI for backoffice and management
Build custom web app using HTML5, JS and REST API
ToolingAngularJS SDK Automation Service bindings, Widget and Action directives
Yeoman coding workflow, Bower component packaging
Lightweight dev env, possibly side by side with StudioOnline IDE
Quick deployment model (like Studio Plugins)
Scripted sandboxed Operations
Lightweight development model
Build on the Platform: Mobile Dev
Target modelDefine object model and business process via Studio
Nuxeo default UI for backoffice and management
Build custom mobile app on top of Nuxeo API
ToolingAndroid and iOS SDKAutomation Connector/ Sync with Offline support
UI building blocks and Layout binding
Sample app
WebMobile SDK (based on Apache Cordova)Align with AngularJS deployment model
Cordova plugin for iOS and Android connectors
Bridge Nuxeo Server with Push Platforms
Build on the Platform: Mobile Dev
Automation
ConnectorAutomation
ConnectorApache CordovaMobile WebAppNuxeo Android UINuxeo iOS
UIAndroid AppiOS AppNuxeo
iOSAndroidOffline CacheLocal store and Deferred updateSync serviceHtml / JSJavaObjective C
Deployment Architectures
Scale to the Sky
Nuxeo Deployment
ChallengesHuge repositories100 000 000+ docs
Large cluster deployment10+ nodes
Heavy transactions throughputs100+ Tx/s
Heavy processingImage processing, OCR processing
Cloud deployment
Cluster Environment
Redis integrationDistributed locking
Distributed event bus / invalidations
Persistent and distributed Jobs/Works
Cluster Aware NuxeoCtlLeverage Redis pubsub
Cluster deployment channel
Simplify and automate management of cluster environment
Monitoring
Metrics + Graphite integrationExpose metrics on Nuxeo internals
Generate dashboards
Package monitoring solutionReference setup
Online monitoringpackage
LogStash + KibanaCollect and index logs
Provide monitoring off the shelf
AWS and Nuxeo
Provide AMIs and reference architectureSizing, networking,
security
Integrate with AWS toolingELB, CloudWatch, AutoScaling
groups
Provisioning and management toolsCoupled with NuxeoCtl cluster
tools
nuxeo.io provisioning portal
Provide infrastructure for nuxeo.io
SuperSize my Repository
Data segregationQuota and Multi-Tenant addons
Cloud StorageAsync Binary Manager for S3 (and similar
providers)
ScalingEhCache based VCS Cache manager
Distributed download manager
VCS de-normalization
NoSQL store + ElasticSearch index
Open the door to Big ContentMultiple clients on the same big repository
UI & UX
What will your apps look like
Nuxeo BackofficeWeb App
Improve infrastructureFix multi-tabs browsingViewState management
Automatic conversation management
Concurrency
Provide injection of NXRuntime Services
Lower controller scopes
Improve UI safetySafe edit/ Localstorage
Double click protection
Extend and improve what we haveEnsure upward compatibility and smooth migration
Widget, Layout, ContentView
Extend Actions and Widgets systemIncremental Layout contributions
Automatically render actions according to type
Hybrid JS widgetsSelect2 integration via JS and
Automation
Continue work on ContentViewsPrev / Next navigation
Bulk operations
New Theme ManagerUse Layout system for page layout
Make DAM/DM UI fully configurable in Studio
Html5 / Javascript Web Apps
HTML / JS App FactoryOnline Studio like IDE
Packaging model
Deployment channel
AngularJS SDKNuxeo Angular Services: wrapping Automation client
Nuxeo Directives: accessing Layout, Widgets, Actions
Sample / Demo WebApp
Theme ManagerIntegrate standard CSS frameworks
Responsive design
Build Html5 / JS Web Applications easily on top of Nuxeo API
Global Timeline
Nuxeo 5.8 28th OctoberAutomationAutomation API improvements
New REST API and nuxeo.js client as addon (beta)
Workflow delegation and escalation
InfrastructureRedis integration and new Work Manager
Metrics + Graphite integration
EhCache integration
UISeam / JSF improvements
Select2 integration
SafeEdit
AngularJS demo App
Global Timeline
Nuxeo 5.9.1 - December 2013full REST API & clients
iOS connector
Nuxeo 5.9.2 - End January 2014REST API GA & clients
AngularJS SDK & samples
Studio Templates
Nuxeo 5.9.3 - March 2014nuxeo.io service (beta)
Nuxeo Runtime changes
new Mobile SDK & sample
Drive + LiveEdit
Nuxeo 5.9.4 - May 2014NoSQL DataStore
Bulk edit / Collection management
Html / JS IDE
Nuxeo 5.9.5 End Jun 2014Theme manager
Studio branching
Nuxeo 5.9.6 Mid August 2014Social / DM merge
Nuxeo 5.9.7 Octobre 2014Nuxeo new UI
Nuxeo 6.0
see you next year !
Thank you!