content apps - Stefane Fermigier
content apps - Stefane Fermigier
content apps - Stefane Fermigier
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Stefane</strong> <strong>Fermigier</strong>, Chairman5.2
AgendaBusiness needs and use casesHistoryTechnology and architectureWhat’s new in Nuxeo 5.2Case studiesThe future: Nuxeo 5.2.x and Nuxeo 6
Who Am I?
Who am I?Founder and Chairman of Nuxeo (2000)Pioneer Open Source ECM software vendorSustained effort on R&D since 2003 (JEI, FP6, FP7,System@tic, Eureka...)Sustained growth: from 0 to 3 ME turnover in 2008International organization: customers, partners,community (US subsidiary launched in Jan 2009)50 employees worldwide
Problems our customers arefacing
avoid this
Nuxeo NewsWave
NuxeoCorrespondanceReportingScannerWorkflowDistributeMailUnifiedmailboxProcessArchiveShareFindFaxContent Repository
NuxeoDigital Asset ManagementCaptureExplore & FindProcess & ManageAssembly& Delivery
History
A Bit of HistoryCompany started in 20002002-2005: Zope-based CPS project2005: First Eclipse RCP based project2005: Zope/Java hybrid: CPS42006-now: Full switch to Java
Our Original GoalsAddress the full ECM scopeInitial focus on Document ManagementArchitecture must be extensible and modularEnable and sustain the EcosystemEasy to work with, design for participation
Our Original VisionDon't reinvent the wheelLeverage existing standards, work on new ones (ex: JCR2,CMIS)Build on proven open source libraries and components(JBoss, Apache, Sun, Eclipse)Use a robust software engineering processMake it transparent for our community
Lesson LearnedZope EraValue of components-based architecturesBasics of ECMEclipseOSGi and extension pointsJava EraValue of standards (Java EE, additional JSRs, OSGi)With proper tools, you can be as productive and havebetter quality w/ Java 5 than w/ Python
Technology and Architecture
Our technology“More than a product, a platform!”Ubiquitous ECM platformBuild around components& services (“Lego bricks”)AdvantagesExtensibility & customizabilityWide functional scopeScalability & Security
Nuxeo GalaxyBusinessSolutionsNewsWaveDAM for IntelligenceYour Own ProjectPackagedApplicationsDocumentManagementDigital AssetManagementCorrespondenceManagementContentAggregatorYour Own AppTechPlatformsNuxeo Enterprise Platformcomplete set of components covering all aspects of ECMNuxeo Corelightweight, scalable, embedable <strong>content</strong> repository
JavaEE5Nuxeo EPDoc Mgmt / CollabNuxeo WebEngineSocial NetworkingJAX-RSNuxeo RCPDesktop IntegrationEclipseRCPSI IntegrationWikis / BlogsBusiness AppsEnterprise AppContent PublishingProductivity AppsThin Client (Web)Web ApplicationsRich ClientJCRCMISNuxeo CoreNuxeo RuntimeOSGiJava5JEE5
Content Store Details (1/2)Hierarchy of objects (folderish / <strong>content</strong>ish)Formerly based on JCR / Jackrabbit (still supported)Now native SQL engine: “Visible Content Storage”Already supports PostgreSQL (prefered), MySQL, Oracle,MS-SQL, H2Uses text indexes native to the RDBMSMay be extended someday to include a triple or quadstore
Content Store Details (1/2)Documents are constrained by Document TypesData models are defined by one or more schemas (ex:Dublin Core)Behaviour is expressed by “facets” (ex: Folderish,Indexable, Versionable, etc.)Also room for unconstrained <strong>content</strong>Access rights (ACLs)Replications, synchronisation, scalability
Other Persistence NeedsWorkflow: state stored by jBPMRelation engine: Jena triple store (currently)Directories: store in LDAP or SQLAudit: every action in the CMS can be logged to aspecific DB for auditing purposes, for social timelines...User preferences (personal dashboard, notifications...)Conversion: cache for time-expensive transformations(ex: Word -> PDF rendering)
Workflow DetailsBased on jBPMWorkflows can be graphically designed using jBPMdesign tools, then seamlessly deployed in NuxeoUsed for publication and for more complex documentmanagement tasksOther WF engines might be plugged with some effort
Searching and Indexing (1/2)Used to use Lucene (via Compass) for full text searchDidn’t prove very reliable (transactionality issues)Now text index in the RDBMSEnables mixing fulltext queries with “classical” relationalqueries (in JOINs...)Performance is DBMS-dependent
Searching and Indexing (2/2)Open API for external search engineEnables integration of classical search engine (SOLR) orsemantic ones (Sinequa, Exalead, etc.)But not integrated with NXQL / CMISQLTags are usually expressed as “dc:subject” propertiesCan be controled or freeformWe still need a dedicated service and UI to manage thewhole tag spaceContent can be published (w/ WF) in a hierarchical “fileplan” as in traditional document management
RelationsBased on JenaQueries can be expressed in SPARQLCurrent uses:“Depend on”, “Obsoletes”, “Supercedes”... relationsbetween documentsAnnotationsWiki links (forward / backwards)
Interfaces: WebCurrent “Collaborative DM” interfaceBased on JSF/SeamMultiple front-ends deployment using standard Java EEarchitecture (Session Beans)WebEngine: lightweight “RESTful” interfaceBased on the JAX-RS APIEasier to customise for mobile devicesUsed by BBC for mobile site (for instance)
Interfaces: Rich ClientsRCPEclipse RCP based, used by AFP and PAeRCPEmbedded RCP client developed by Yerbabuena Software(community member)GWTFlexUsed for complex interaction (ex: annotations)
Interfaces: Remote APIWeb services:JAX-WS API based on MetroSoon: CMIS WS profileRESTJAX-RS API (WebEngine)Soon: CMIS AtomPub / REST profileJava API: EJB remoting (RMI)
Metrics300 KLOC (non-comments)5000 Java classesIncluding 600 test classes174 modules73 external (open source) libraries
Development toolsMaven for dependency managementMostly Eclipse for developmentStandard Java / Java EE pluginsSpecific “Nuxeo IDE” used for faster code->build->testturnaroundWork on UML models -> document types, lifecycles andworkflow specification generator has recently started
Metrics300 KLOC (non-comments)5000 Java classesIncluding 600 test classes174 modules73 external (open source) libraries
What’s New in 5.2?
Nuxeo Enterprise Platform 5.2aka ChicagoA full-featured software platform for ECM
Nuxeo Enterprise Platform 5.2aka ChicagoAVAILABLEA full-featured software platform for ECMUnbreakablestable & scalableEasy to useand to customizeSupportedVery wide scopefeatures (func & tech)Great packagingWindows, Linux, SolarisDocumented
From 5.1.x ... 5.1.x has evolved a lotperformances and scalability improvementssearch service improvements A lot of new features via addons VirtualNavigation / Annotations / Preview ... but no API / Model changes
Major new featuresContent Annotations (annotate docs & pictures)Content Preview (see your docs, in your browser)Visible Content Store (keep control of your data)WebWorkspaces (expose your work on the web)Windows® Sharepoint® Services interoperabilityand 30+ more!
... to 5.2Based on developer's feedback infrastructure improvements simpler and extended APIs better consistency of model and extensions partially merge some addons into infrastructure bring new features
What is new in 5.2Web side
WebEngine New light and flexible web framework<strong>content</strong> and object publisherFreeMarker templating systemscripting support More than WCM: <strong>content</strong> <strong>apps</strong>easy web developmentfull access to ECM platform Based on JAX-RS binding modeleasily expose REST APIs
Make nice web sites with Nuxeo!
JSF WebApp Major infrastructure upgrade Seam 2.0 JSF Sun RI / RichFaces 3.2 Better infrastructure~ 90 RPS on a 2K€ server(40% faster than 5.1 & 100% faster than 5.2-m2)fully Ajax-enabledeasier and more consistent development model
WebEngine and JSF together Common infrastructure Auth / Cache / Transactions ... Different characteristicsWebEngine: Stateless / Light / RestJSF: Stateful / PageFlow / JEE Different use casesJSF: back office, business applicationWebEngine: front office, WCM, web widgets
Theme manager Theme management has been improvedWebEngine enabledWebWidgetsOpenSocial supportWait for presentations from Jean-Marc and Damien ! :)
What is new in 5.2Document repository
Nuxeo SQL Repository Native SQL persistencecan be used as a replacement of Jackrabbitdefault repository implementation for 5.2.GA Advantagesintrospectable storage (DBA friendly)easy low level importseasy reporting using standard BI toolsbetter blob storage managementfull support for query
Jackrabbit 1.4 Repository JCR Connector is maintainedwith an upgraded version of Jackrabbit Improvementsfasterbetter blob store Better support for Query
Core Repository Model Operation managementeasily inject custom code into Repository Core API Event handler modelbetter separation between handler types Better handling for complex properties Complete search APIrepository now implements SearchService's API
What is new in 5.2improved ECM services
Events and Audit Service Unified event and event handler modeleasier contribution (will add scripting support) Audit customization is now a lot easierno more JPA contribution Timeline service added to Audit logview co-worker's activity from audit records
Transformers Integrate transformers created into addons any2html, zip2text, image converters ... Integrate cache system from addons temporarily store HTML or PDF view, tiles ... Tools for command-line based transformersgeneric transformercommand-line registration/configuration service
Workflow and BPM 5.1 WF API is too complexbased on WFMC meta-model 5.2 introduces a new WF APIdirect binding to JBPM 5.2 WF is simpleronly have to know JBPM and Nuxeo basic API 5.2 WF is fasterdirect access to JBPM / Hibernate APIs
Search and Indexing Drop Compass based SearchService in 5.2 SearchService now provided by the Repository Jackrabbit 1.4 / Lucene 2.2SQL Repository / FullText implementation is vendordependent but NXQL compliant WebService API for external indexersSinequa CSExaleadAntidot
What is new in 5.2new clients
New RIA clients Adds support for browser-based rich clients Flex clientsusing plain REST or AMF via Nuxeo flex connector GWT clientsusing plain REST
True multi-clients supportDedicatedRIAGWTContent <strong>apps</strong> &WebSitesWebEngineNuxeo PlatformFlex / AirGeneral publicApplicationEclipse RCPJSFNXShellProductivity-focusedbusiness <strong>apps</strong>AdministrationBusinessApplication
What is new in 5.2new features
HTML preview and annotations Preview servicepluggable html transformerspreview adapter model Annotation serviceannotate text & imagesstandard-compliant (W3C Annotea)RDF Based GWT based annotation client
Preview & Annotations in action
Annotations & pictures Annotations on pictureannotate an image fragmentextends W3C Annotea Tiling Servicetiles computation service based on ImageMagicmanages cache and preprocessed tiles GWT based clientnavigate in large picturesmanage annotations
Tiling & annotations in action
Rendering Engine rendering frameworkextensible and pluggabledefault engine based on freemarker Can be used for very different purposesWebEngine : Wiki markupTeleText rendering(from PA's system)
Mail connector Fetch mails from a mailboxinject mails as Documents into Nuxeo View a mailbox as a Folder in Nuxeo
Query Wizard Provides a wizard to create a complex querylet end user access search full power Creates a virtual folder from a Querydefine custom view on Document repository
What is new in 5.2for developers
Nuxeo 5.2 – more productivity
What has changed Improved API for a lot of services New web development modelWebEngine + scripting Packages for developers, with fast start upJetty / GlassFish / Tomcat Nuxeo StudioBetter IDE integration (hg & m2 plugins)Artifacts wizardsCustom editors
What is new in 5.2Deployment target
More deployment optionsApplication Servers supportJBoss 4.2.3GlassFish 3JettyTomcat 6could be planned : :)Java 5 and Java 6
Target servers: why does itmatter ?More options is always more freedomTo meet the requirements of our customersTo provide lightweight deployment solutionsTo provide a lighter and faster dev environmentThe exercise is healthy for the platform
Who Uses It?
Major Nuxeo Customers
Some SI Partners
AFP Console NGMultimedia news authoring and publishingTargeted to multimedia DesksXHTML WYSIWYG EditorFull NewsML 1.2IPTC supportReal-time collaboration and news feedsSpellchecking support (with custom dictionnaries)Photos / Videos / FlashsJava EE on the server sideEclipse RCP on the client side
From
The WorkspaceCollaborativeWorkspaceIncomingFeedsMetadata & Rich TextEditorPublishingSectionsQuick ViewSearch Results
WorkflowCollaborativeWorkspace3IncomingFeeds12Metadata & Rich TextEditor4PublishingSectionsQuick ViewSearch Results1b
It’s even bigger, actually
Rich Text Editor
Flexible Picture Editor
Delivered to customers
NUTXT ProjectNew editorial system for PA to serve analog and digitalTeletext in the UKCreate the foundation for other systems at PA thatmight migrate to it (photo, text)100+ users, 4 locations (UK, India)
WorkspaceCollaborative“Baskets”Collection / SlotsManagementMetadataand Content EditorPublishing areaStaging / On AirSearchPhoto Collectionetc.
Live Preview
Custom Dictionnaries
The future:Nuxeo 5.2.x and 6
RoadmapMarch 2009: Nuxeo 5.2 RC (done)April 2009: Nuxeo 5.2 GAJune 2009: Nuxeo 5.2.1Bugfixes + addons + toolsLater: Nuxeo 5.2.2, 5.2.3, etc. (one every 2 months?)End of 2009(?): Nuxeo 6
Nuxeo WorkshopLean environment to imagineand create next-generation<strong>content</strong> <strong>apps</strong>
Nuxeo WorkshopLean environment to imagineand create next-generation<strong>content</strong> <strong>apps</strong>Deep integration with dev tools (ex: m2, hudson, hg)
Nuxeo WorkshopLean environment to imagineand create next-generation<strong>content</strong> <strong>apps</strong>Deep integration with dev tools (ex: m2, hudson, hg)Handy editors (doctypes, forms, query, etc.)
Nuxeo WorkshopLean environment to imagineand create next-generation<strong>content</strong> <strong>apps</strong>Deep integration with dev tools (ex: m2, hudson, hg)Handy editors (doctypes, forms, query, etc.)Fast code/deploy/test cycle
Nuxeo WorkshopIN PROGRESSLean environment to imagineand create next-generation<strong>content</strong> <strong>apps</strong>Deep integration with dev tools (ex: m2, hudson, hg)Handy editors (doctypes, forms, query, etc.)Fast code/deploy/test cycleLive <strong>content</strong> browser & debugger
Nuxeo Command Center
Nuxeo Command CenterMonitoring Servicesextensible sensorsnagios integration
Nuxeo Command CenterPREVIEWAVAILABLEMonitoring Servicesextensible sensorsnagios integrationAdmin Consolelive monitoring (operations, jobs, stores, pools, etc.)visual operations (backup, restore, cluster, etc.)
CMIS & Unified ECM API Exposes CMIS API and modelas main api for <strong>content</strong> access Extends CMIS to expose more services audit, multi-files support, complex properties ... New high level APIsimpler modelsmaller set of interfacesJava and REST APIs
New Unified ECM API: why ? Easier for developers and integratorssimpler modelsmaller set of interfaces Standard compliantbusiness application's core logic is not bound toNuxeocreate vendor-neutral <strong>apps</strong> Technology-neutral (http based)can be called remotely from any technology
Nuxeo in the Skythe first ECM platform builton and for the cloudGrid technologies at the coreEverything distributedCloud storage for Nuxeo Core (sky's the limit)Grid for distributed job executionBuilt-in horizontal scaling
New servicesRemote publishing (multi-sites management)Replication and offline modeUnified ECM API with CMIS support
Remote publishingCurrent publishing servicepublish via proxies in the same Repositorypublish XML/FOP transformed <strong>content</strong> to local/remotefilesystem (ftp/http ...)Target: one generic publishing servicepublish locally or remotelypublish on filesystem or on Nuxeohave a unified publishing interfaceAddress multi-sites management challenges
Unified publishingNuxeoDMsFile System XML File HTMLHTML publishinghttp ftp restSystemLocal publishingNuxeo remote publishing(DocumentModels)XML publishingjavaNuxeo(proxies)DMs
Nuxeo Sync: use casesDecentralized architectureslocal read-only copy for centralized <strong>content</strong>“reverse distant publishing”Apogee mobile userslocal working copy for offline usagepush back data when back online
NuxeoRepository NationalDataNuxeoServerNational SiteDistant publishing(push)Data sync (pull)NuxeoRepositoryNuxeoServerNationalDataRegionalDataReadOnlyRegional Site
Nuxeo Enterprise Platform 6aka New YorkContent <strong>apps</strong> for enterprises
Nuxeo Enterprise Platform 6aka New YorkContent <strong>apps</strong> for enterprisesBetter UIsimplify, streamline, lighten
Nuxeo Enterprise Platform 6aka New YorkContent <strong>apps</strong> for enterprisesBetter UIsimplify, streamline, lightenLeverage the cloudall things distributed
Nuxeo Enterprise Platform 6aka New YorkContent <strong>apps</strong> for enterprisesBetter UIsimplify, streamline, lightenLeverage the cloudall things distributedFocus on <strong>content</strong> <strong>apps</strong>
Nuxeo Enterprise Platform 6aka New YorkContent <strong>apps</strong> for enterprisesBetter UIsimplify, streamline, lightenSocial FeaturesOpen Social, “Widgets”Leverage the cloudall things distributedFocus on <strong>content</strong> <strong>apps</strong>
Nuxeo Enterprise Platform 6aka New YorkContent <strong>apps</strong> for enterprisesBetter UIsimplify, streamline, lightenLeverage the cloudall things distributedSocial FeaturesOpen Social, “Widgets”Nuxeo Core 2CMIS, fully distributedFocus on <strong>content</strong> <strong>apps</strong>
Nuxeo Enterprise Platform 6aka New YorkContent <strong>apps</strong> for enterprisesBetter UIsimplify, streamline, lightenLeverage the cloudall things distributedFocus on <strong>content</strong> <strong>apps</strong>Social FeaturesOpen Social, “Widgets”Nuxeo Core 2CMIS, fully distributedBetter packaging
How You Can HelpTest, file bug reports or RFEsComment on proposed new API or API refactoringsWrite or improve pieces of documentation (FAQ,howtos, Nuxeo Books...)Use our Wiki for easier collaborationWrite or improve translation filesAlready: EN, FR, DE, IT, ES, VN, CN
How You Can Help (contd.)Become a commiterFirst, submit your patches to the JiraYou must adhere to the projects coding rules andquality standardsWe will give you direct access after a whileYou’re also free to develop your own extensionsWe can host them if you wantIncluding putting them under CI, etc.
Questions?