[nuxeo world 2013] roadmap 2014 - technical part

Download [Nuxeo World 2013] Roadmap 2014 - Technical Part

If you can't read please download the document

Upload: nuxeo

Post on 16-Apr-2017

2.073 views

Category:

Technology


1 download

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!