Nuxeo Technical Roadmap
from 5.6 to 6.0
Thierry Delprat

1
Ok, and now ?
●

How do we
implement all this?

●

What are the next technical evolutions?

●

What has been done so far?
...
Technical Agenda

Accessing
Nuxeo Services

What will your
Application look like

API

UI & UX

Factory

Scale

Building A...
API
Accessing Nuxeo Services

4
Platform & API
A good API is now more important than ever.
A good API is now more important than ever.
●

SaaS model requi...
What is a good API?
●

API you can quickly understand
●

●

●

REST is a nice pattern
REST is a good fit for Nuxeo use cas...
API and Nuxeo: Java API
Nuxeo Service A

Nuxeo Component
Plugin
Plugin
Plugin

Nuxeo Service B

Nuxeo Component
Plugin
Plu...
API and Nuxeo: Operations
Operation A1
Operation A2
Operation ...
Operation B1

http

JAX-RS
Publisher
WebEngine
JAX-RS
(j...
API and Nuxeo: Chains
Chain 1
Chain 2

http

JAX-RS
Publisher
WebEngine
JAX-RS
(jersey)

Chain ...

Operation A1
Operation...
API and Nuxeo: Operations and Chains
●

Command API
●
●

●

Easy to do RPC
Easy to integrate applications together

But no...
API and Nuxeo: Resources
Chain 1
Chain 2
Chain ...

Operation A1
Operation A2
Operation ...
Operation B1
Operation ...
Ope...
Automation new Endpoints
●

Expose new REST Endpoints
●

●

●

Documents, Directories, Users, Tasks, Workflows
exposed as ...
Automation new Endpoints
  js  : nuxeo.doc(path).fetch()
  http: GET /nuxeo/api/path/{pathOfTheDoc}
  js  : nuxeo.doc(id)....
Automation Infrastructure
Fixing all known limitations of Command API
Fixing all known limitations of Command API
●

Marsh...
Automation Infrastructure
Adapt infrastructure to complex and nested chains
Adapt infrastructure to complex and nested cha...
Automation Clients
●

Extend Java Nuxeo Client
●

●

Upload/Download manager

●

●

Multi-threading
REST client

Standardi...
Interoperability
●

CMIS
●

●

Continue keeping the stack up to date

CXF
●

●

●

Migrated JAX-WS stack on the server sid...
Configuration and Building Tools
Building Applications with Nuxeo Platform

18
Nuxeo Application Factory
●

Configuring the Platform :

Nuxeo Studio

for business users
●

Extending the Platform :

Nux...
Configuring the Platform : Nuxeo Studio
More friendly with project lifecycle constraints
More friendly with project lifecy...
Configuring the Platform : Nuxeo Studio
Expose even more features to Studio configuration
Expose even more features to Stu...
Extending the Platform : Java Dev
Continue lower learning curve
Continue lower learning curve
Shorten dev // test cycle
Sh...
Extending the Platform : Java Dev
Nuxeo Web Layer
●

Inject Nuxeo Services in View Controllers
–

Makes framework more con...
Build on the Platform : Web Developers
Lightweight development model
Lightweight development model
Target model
●

Define ...
Build on the Platform : Mobile Dev
Target model
●

Define object model and business process via Studio

●

Nuxeo default U...
Build on the Platform : Mobile Dev
iOS App

Mobile WebApp

Android App

Objective C

Html / JS

Java

Nuxeo iOS UI

Apache...
Deployment Architectures
Scale to the Sky

27
Nuxeo Deployment
●

Challenges
●

Huge repositories
100 000 000+ docs

●

Large cluster deployment
10+ nodes

●

Heavy tra...
Cluster Environment
Simplify and automate management of cluster environment
Simplify and automate management of cluster en...
Monitoring
Provide monitoring « off the shelf »
Provide monitoring « off the shelf »
●

Metrics + Graphite integration
–
–...
AWS and Nuxeo
Provide infrastructure for nuxeo.io
Provide infrastructure for nuxeo.io
●

Provide AMIs and reference archit...
SuperSize my Repository
Open the door to « Big Content »
Open the door to « Big Content »
Multiple clients on the same big...
UI & UX
What will your apps look like

33
Nuxeo Backoffice Web App
Extend and improve what we have
Extend and improve what we have
Ensure upward compatibility and s...
Widget, Layout, ContentView
Make DAM/DM UI fully configurable in Studio
Make DAM/DM UI fully configurable in Studio
●

Ext...
Html5 / Javascript Web Apps
Build Html5 // JS Web Applications easily on top of Nuxeo API
Build Html5 JS Web Applications ...
Global Timeline
●

Nuxeo 5.8 – 28th October
●

Automation
–

Automation API improvements

–

New REST API and nuxeo.js cli...
Global Timeline
●

Nuxeo 5.9.1 - December 2013

●

Nuxeo 5.9.4 -

●

●

●

●

full REST API & clients
iOS connector

●

Nu...
Nuxeo 6.0
see you next year !

39
Thank you!

40
Upcoming SlideShare
Loading in...5
×

[Nuxeo World 2013] Roadmap 2014 - Technical Part

1,596

Published on

by Thierry Delprat

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,596
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[Nuxeo World 2013] Roadmap 2014 - Technical Part

  1. 1. Nuxeo Technical Roadmap from 5.6 to 6.0 Thierry Delprat 1
  2. 2. Ok, and now ? ● How do we implement all this? ● What are the next technical evolutions? ● What has been done so far? 2
  3. 3. Technical Agenda Accessing Nuxeo Services What will your Application look like API UI & UX Factory Scale Building Applications with Nuxeo Platform Scale to the Sky 3
  4. 4. API Accessing Nuxeo Services 4
  5. 5. Platform & API A good API is now more important than ever. A good API is now more important than ever. ● SaaS model requires API ● ● Web frameworks rely on REST API ● ● This is the main entry point for nuxeo.io Html 5, Mobile Apps, Portals SOA and loose coupling ● WebServices, ESB, Auth 5
  6. 6. What is a good API? ● API you can quickly understand ● ● ● REST is a nice pattern REST is a good fit for Nuxeo use cases Consistency ● ● Provide a consistent experience for the developers Adapted to the real world ● Provide concepts that match with current tools ● Handle the complex use cases too 6
  7. 7. API and Nuxeo: Java API Nuxeo Service A Nuxeo Component Plugin Plugin Plugin Nuxeo Service B Nuxeo Component Plugin Plugin Plugin Nuxeo Service C Nuxeo Component Plugin Plugin Plugin Nuxeo Service D Nuxeo Component Plugin Plugin Plugin 7
  8. 8. API and Nuxeo: Operations Operation A1 Operation A2 Operation ... Operation B1 http JAX-RS Publisher WebEngine JAX-RS (jersey) Operation ... Operation C1 Operation ... Operation D1 Operation ... Nuxeo Service A Nuxeo Component Plugin Plugin Plugin Nuxeo Service B Nuxeo Component Plugin Plugin Plugin Nuxeo Service C Nuxeo Component Plugin Plugin Plugin Nuxeo Service D Nuxeo Component Plugin Plugin Plugin 8
  9. 9. API and Nuxeo: Chains Chain 1 Chain 2 http JAX-RS Publisher WebEngine JAX-RS (jersey) Chain ... Operation A1 Operation A2 Operation ... Operation B1 Operation ... Operation C1 Operation ... Operation D1 Operation ... Nuxeo Service A Nuxeo Component Plugin Plugin Plugin Nuxeo Service B Nuxeo Component Plugin Plugin Plugin Nuxeo Service C Nuxeo Component Plugin Plugin Plugin Nuxeo Service D Nuxeo Component Plugin Plugin Plugin 9
  10. 10. API and Nuxeo: Operations and Chains ● Command API ● ● ● Easy to do RPC Easy to integrate applications together But not easy to use with client side MVC ● Resource should be the document and not the operation 10
  11. 11. API and Nuxeo: Resources Chain 1 Chain 2 Chain ... Operation A1 Operation A2 Operation ... Operation B1 Operation ... Operation C1 Operation ... http Operation D1 JAX-RS Publisher Document WebEngine Task JAX-RS (jersey) User Workflow Workflow Directory Operation ... Nuxeo Service A Nuxeo Component Plugin Plugin Plugin Nuxeo Service B Nuxeo Component Plugin Plugin Plugin Nuxeo Service C Nuxeo Component Plugin Plugin Plugin Nuxeo Service D Nuxeo Component Plugin Plugin Plugin 11
  12. 12. Automation new Endpoints ● Expose new REST Endpoints ● ● ● Documents, Directories, Users, Tasks, Workflows exposed as REST resources Pure GET / POST / PUT / DELETE bindings Use Fragment model to expose all data in one call ● Ensure efficiency in data retrieval : ex : Document + links + Comments + tasks ● ● Enable pluggability Provide bridge with Command API ● Reuse existing and custom Operations 12
  13. 13. 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}      { ...} 13
  14. 14. Automation Infrastructure Fixing all known limitations of Command API Fixing all known limitations of Command API ● Marshalling improvements – – ● simpler management of complex properties allow for custom JSON marshalling / business objects Extend Blob management – – ● separate upload requests from processing requests use Blobs as properties Make API more consistent – Operation and Chain become the same – Parameters vs Context resolution – Paginable objects 14
  15. 15. Automation Infrastructure Adapt infrastructure to complex and nested chains Adapt infrastructure to complex and nested chains ● Batch management and long running transactions – – ● dedicated operations new base classes for listeners or operations Exception management – ● apply try/catch model to chains Debugging – – ● Throw clean Exception Track operations and chain execution Scripted Operations – Enable usage of restricted scripting 15
  16. 16. Automation Clients ● Extend Java Nuxeo Client ● ● Upload/Download manager ● ● Multi-threading REST client Standardize nuxeo.js ● JQuery / Angular, Node.js bindings ● Standard TCK ● Additional bindings on the way ● Python (Drive), Php, Dart, .Net ● iOS, Android 16
  17. 17. Interoperability ● CMIS ● ● Continue keeping the stack up to date CXF ● ● ● Migrated JAX-WS stack on the server side Integrate JAX-RS REST client in Automation OAuth2 integration ● ● Make Nuxeo an OAuth2 Service Provider ● ● OpenID integration Integrate inside Automation Client Mule ESB ● Provide a Nuxeo Automation Connector 17
  18. 18. Configuration and Building Tools Building Applications with Nuxeo Platform 18
  19. 19. Nuxeo Application Factory ● Configuring the Platform : Nuxeo Studio for business users ● Extending the Platform : Nuxeo IDE & SDK for Java developers ● Building Web Apps : Nuxeo AngularJS SDK for Web developers ● Building Mobile Apps : Nuxeo Mobile SDK for Android and iOS developers 19
  20. 20. Configuring the Platform : Nuxeo Studio More friendly with project lifecycle constraints More friendly with project lifecycle constraints ● Multi-users – – – ● Collaboration mode Chat Versioning and branch management Multi-Projects – – Application templates Dependency management 20
  21. 21. Configuring the Platform : Nuxeo Studio Expose even more features to Studio configuration Expose even more features to Studio configuration ● Update Platform infrastructure to ensure configurability – – ● More widgets, more layouts, more actions Make all screens configurable More workflow features – ● Sub workflow management Studio Event Handlers – Give access to all Listener and Worker settings – Long running transaction management from within Studio 21
  22. 22. Extending the Platform : Java Dev Continue lower learning curve Continue lower learning curve Shorten dev // test cycle Shorten dev test cycle Ensure compatibility with API and build system Ensure compatibility with API and build system Nuxeo Runtime : learn from Eclipse Apricot and OSGi ● Migrate deployment-fragments – ● Provide one single deployment model – ● plain extension points + War resources IDE vs Studio vs Standard Hot-reload via component stop/start – use Runtime to manage dependency graph 22
  23. 23. Extending the Platform : Java Dev Nuxeo Web Layer ● Inject Nuxeo Services in View Controllers – Makes framework more consistent – Allows to track dependencies Nuxeo IDE ● Extend Nuxeo IDE Eclipse Plugin – Helpers : XML contribution helper, … – Studio integration : – 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 Build ● Migrate build to Maven 3 23
  24. 24. Build on the Platform : Web Developers Lightweight development model Lightweight development model Target model ● Define object model and business process via Studio ● Nuxeo default UI for backoffice and management ● Build custom web app using HTML5, JS and REST API Tooling ● AngularJS SDK – – ● Automation Service bindings, Widget and Action directives Yeoman coding workflow, Bower component packaging Lightweight dev env, possibly side by side with Studio – – ● Online IDE Quick deployment model (like Studio Plugins) Scripted sandboxed Operations 24
  25. 25. Build on the Platform : Mobile Dev Target model ● Define object model and business process via Studio ● Nuxeo default UI for backoffice and management ● Build custom mobile app on top of Nuxeo API Tooling ● Android and iOS SDK – – UI building blocks and Layout binding – ● Automation Connector/ Sync with Offline support 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 25
  26. 26. Build on the Platform : Mobile Dev iOS App Mobile WebApp Android App Objective C Html / JS Java Nuxeo iOS UI Apache Cordova Nuxeo Android UI Automation Connector Offline Cache Local store and Deferred update Sync service iOS Automation Connector Android Nuxeo 26
  27. 27. Deployment Architectures Scale to the Sky 27
  28. 28. Nuxeo Deployment ● Challenges ● Huge repositories 100 000 000+ docs ● Large cluster deployment 10+ nodes ● Heavy transactions throughputs 100+ Tx/s ● Heavy processing Image processing, OCR processing … ● Cloud deployment 28
  29. 29. Cluster Environment Simplify and automate management of cluster environment Simplify and automate management of cluster environment ● Redis integration – – Distributed event bus / invalidations – ● Distributed locking Persistent and distributed Jobs/Works Cluster Aware NuxeoCtl – Leverage Redis pubsub – Cluster deployment channel 29
  30. 30. Monitoring Provide monitoring « off the shelf » Provide monitoring « off the shelf » ● Metrics + Graphite integration – – ● Expose metrics on Nuxeo internals Generate dashboards Package monitoring solution – – ● Reference setup Online monitoring package LogStash + Kibana – Collect and index logs 30
  31. 31. AWS and Nuxeo Provide infrastructure for nuxeo.io Provide infrastructure for nuxeo.io ● Provide AMIs and reference architecture – ● Integrate with AWS tooling – ● ELB, CloudWatch, AutoScaling groups Provisioning and management tools – ● Sizing, networking, security Coupled with NuxeoCtl cluster tools nuxeo.io provisioning portal 31
  32. 32. SuperSize my Repository Open the door to « Big Content » Open the door to « Big Content » Multiple clients on the same big repository Multiple clients on the same big repository ● Data segregation – ● Cloud Storage – ● Quota and Multi-Tenant addons Async Binary Manager for S3 (and similar providers) Scaling – EhCache based VCS Cache manager – Distributed download manager – VCS de-normalization – NoSQL store + ElasticSearch index 32
  33. 33. UI & UX What will your apps look like 33
  34. 34. Nuxeo Backoffice Web App Extend and improve what we have Extend and improve what we have Ensure upward compatibility and smooth migration Ensure upward compatibility and smooth migration ● Improve infrastructure – Fix multi-tabs browsing ● ● ● ViewState management Automatic conversation management Concurrency – – ● Provide injection of NXRuntime Services Lower controller scopes Improve UI safety – Safe edit / Localstorage – Double click protection 34
  35. 35. Widget, Layout, ContentView Make DAM/DM UI fully configurable in Studio Make DAM/DM UI fully configurable in Studio ● Extend Actions and Widgets system – – ● Incremental Layout contributions Automatically render actions according to type Hybrid JS widgets – ● Select2 integration via JS and Automation Continue work on ContentViews – – ● Prev / Next navigation Bulk operations New Theme Manager – Use Layout system for page layout 35
  36. 36. Html5 / Javascript Web Apps Build Html5 // JS Web Applications easily on top of Nuxeo API Build Html5 JS Web Applications easily on top of Nuxeo API ● HTML / JS App Factory – – Packaging model – ● Online « Studio like » IDE Deployment channel AngularJS SDK – – Nuxeo Directives : accessing Layout, Widgets, Actions – ● Nuxeo Angular Services : wrapping Automation client Sample / Demo WebApp Theme Manager – Integrate standard CSS frameworks – Responsive design 36
  37. 37. Global Timeline ● Nuxeo 5.8 – 28th October ● Automation – Automation API improvements – New REST API and nuxeo.js client as addon (beta) ● Workflow delegation and escalation ● Infrastructure – – Metrics + Graphite integration – ● Redis integration and new Work Manager EhCache integration UI – Seam / JSF improvements – Select2 integration – SafeEdit – AngularJS demo App 37
  38. 38. Global Timeline ● Nuxeo 5.9.1 - December 2013 ● Nuxeo 5.9.4 - ● ● ● ● full REST API & clients iOS connector ● Nuxeo 5.9.2 - End January 2014 ● ● REST API GA & clients ● ● ● ● AngularJS SDK & samples Studio Templates Nuxeo 5.9.3 - NoSQL DataStore Bulk edit / Collection management Html / JS IDE Nuxeo 5.9.5 – End Jun 2014 ● March 2014 nuxeo.io service (beta) ● new Mobile SDK & sample ● Drive + LiveEdit Studio branching Nuxeo 5.9.6 – ● Nuxeo Runtime changes ● Theme manager ● ● ● May 2014 ● Social / DM merge Nuxeo 5.9.7 – ● Mid August 2014 Octobre 2014 Nuxeo new UI 38
  39. 39. Nuxeo 6.0 see you next year ! 39
  40. 40. Thank you! 40
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×