• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
[Nuxeo World 2013] Roadmap 2014 - Technical Part
 

[Nuxeo World 2013] Roadmap 2014 - Technical Part

on

  • 1,269 views

by Thierry Delprat

by Thierry Delprat

Statistics

Views

Total Views
1,269
Views on SlideShare
954
Embed Views
315

Actions

Likes
0
Downloads
9
Comments
0

8 Embeds 315

http://www.nuxeo.com 268
http://cloud.feedly.com 15
http://blogs.nuxeo.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 [Nuxeo World 2013] Roadmap 2014 - Technical Part Presentation Transcript

    • 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? 2
    • 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
    • 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 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Configuration and Building Tools Building Applications with Nuxeo Platform 18
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Deployment Architectures Scale to the Sky 27
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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 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
    • 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
    • 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
    • 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
    • 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
    • Nuxeo 6.0 see you next year ! 39
    • Thank you! 40