[Nuxeo World 2013] Roadmap 2014 - Technical Part
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

[Nuxeo World 2013] Roadmap 2014 - Technical Part

on

  • 1,685 views

by Thierry Delprat

by Thierry Delprat

Statistics

Views

Total Views
1,685
Views on SlideShare
1,315
Embed Views
370

Actions

Likes
0
Downloads
10
Comments
0

8 Embeds 370

http://www.nuxeo.com 308
http://blogs.nuxeo.com 30
http://cloud.feedly.com 15
http://nuxeodotcom.wpengine.com 12
https://twitter.com 2
http://www.dokumentalistas.com 1
http://feeds.feedburner.com 1
http://reader.aol.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

[Nuxeo World 2013] Roadmap 2014 - Technical Part Presentation Transcript

  • 1. Nuxeo Technical Roadmap from 5.6 to 6.0 Thierry Delprat 1
  • 2. Ok, and now ? ● How do we implement all this? ● What are the next technical evolutions? ● What has been done so far? 2
  • 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. API Accessing Nuxeo Services 4
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Configuration and Building Tools Building Applications with Nuxeo Platform 18
  • 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. 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. 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. 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. 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. 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. 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. 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. Deployment Architectures Scale to the Sky 27
  • 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. 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. 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. 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. 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. UI & UX What will your apps look like 33
  • 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. 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. 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. 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. 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. Nuxeo 6.0 see you next year ! 39
  • 40. Thank you! 40