Nuxeo World Session: Building Packages for the Nuxeo Marketplace
Upcoming SlideShare
Loading in...5

Nuxeo World Session: Building Packages for the Nuxeo Marketplace



Technical session on Nuxeo Marketplace during Nuxeo World conference 2010 (November 17-18, 2010). Presented by Alain Escaffre, Thierry Delprat, and Stefanescu Bogdan.

Technical session on Nuxeo Marketplace during Nuxeo World conference 2010 (November 17-18, 2010). Presented by Alain Escaffre, Thierry Delprat, and Stefanescu Bogdan.



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

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.

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

    Nuxeo World Session: Building Packages for the Nuxeo Marketplace Nuxeo World Session: Building Packages for the Nuxeo Marketplace Presentation Transcript

    • Nuxeo Marketplace And the Update Center Thierry Delprat, Stefanescu Bogdan, Alain Escaffre
    • Agenda
      • Nuxeo Marketplace: presentation and objectives
      • Nuxeo Marketplace review
      • Behind the scenes – how it works
    • Nuxeo chose a modular and extensible design...
      • To maximize reuse of components in different use cases, thus improving their quality and usability
      • To have an active roadmap
      • To benefit from a high level of flexibility towards user requirements
      • To have a vibrant and popular plugin ecosystem.
    • Nuxeo Community contributes plugins...
      • Nuxeo provides many plugins (CAS, importer, etc.)
      • SI partners have their own internal shared library of typical improvements and demo scenarios
      • Solution providers, through Nuxeo Galaxy, already have vertical solutions on top of Nuxeo DM
      • Open source community provides several groups of interest in Nuxeo with various plugins (Yerbabuena, ESUP …)
    • … that will now find their place in the Marketplace !
      • Federate and focus Nuxeo Social Marketplace momentum
      • Make it easier for Nuxeo users to access to all the available resources
      • Provide a way for our partners to develop their business on top of the platform with (soon) a distribution solution for commercial plugins
      • Provide a way to distribute «safe» customizations
      • Keep on improving the Nuxeo user experience !
    • The Nuxeo Marketplace
    • Marketplace, Our Recipe
      • The Marketplace portal
      • A new plugin packaging system
      • A solution for set up in only a few clicks
      • An optional and multi-level qualification/validation scheme
      • And … contributors !
    • Update Center Use Cases
      • Distribution of addons
      • Distribution of Nuxeo Connect patches
      • Nuxeo Studio project deployment (with hot reload!)
      • Will soon be a deployment solution for your project
    • Package View
    • Contribution Process and Guidelines
      • Make sure your development is not buggy!
      • Create your Marketplace package and test its deployment locally from the Update Center
      • Send your package to Nuxeo with a full description
      • Documentation -- provide a user guide, a technical guide if necessary, and optionally a link to the source code
    • Validation and Support of Marketplace Packages
      • Production state : vendor opinion on level of achievement of the plugin towards a go-to-production goal.
        • prototype, testing, or ready
      • Certification status : Level of audit and control by Nuxeo
        • none, primary validation, or Nuxeo certified
      • Vendor support : yes/no
    • Update Center Nuxeo Server Package Administration
    • Nuxeo Update Center
      • Update Center
        • is a part of Admin Center
        • provides a filtered view of Marketplace packages
        • manages package downloads
        • manages installation wizard for packages
    • Browsing Packages
      • Update Center provides several views
        • Software updates
          • Installed packages that can be upgraded
          • Nuxeo patches and fixes
        • Local packages
          • packages that have been installed via Update Center
          • packages that have been downloaded but not installed
        • Marketplace
          • last version of all Marketplace packages
        • Studio
          • different versions of Studio projects
          • quick update button
    • Browsing Packages
      • Packages can be filtered
        • by target platform
        • by type (hot fix, addon, studio)
      • You can see package details
        • description
        • validation status
        • dependencies
        • comments, download counts
    • Install Packages
      • Downloading package
        • managed as a background task
      • Dependencies check
        • Update Center will prompt for dependencies installation if needed
      • Setup wizard
        • if needed a setup wizard will be displayed (package configuration)
      • Newly installed components may be
        • hot deployed
        • deployed on server restart
    • Package Model An update package is the bundled feature you want to install.
    • Package Structure
      • An update feature is packaged as a zip
        • A package descriptor file: package.xml.
        • An installation descriptor: install.xml.
        • The package data:
          • JARs to install
          • configuration files and other resources to copy on the server.
        • Descriptor files must reside in the ZIP root.
    • The Package Descriptor
        • A Package is uniquely identified by its name and version.
        • A Package has a type and a set of properties required by the installer.
    • Package Properties
      • Main properties:
        • Title – A title to be used in the UI.
        • Description – The package description
        • Vendor – the Vendor name
        • Platforms – a list of target platforms
          • The target platforms limit the distributions where the package can be installed.
        • Dependencies – a list of dependencies, if any.
    • Package Dependencies
      • A package may require some other packages to be installed before you install it.
        • Dependencies are identified using the package ID – which has the format: 'name'-'version'.
        • Dependencies are transitive – in order to be able to install your package you must install all transitive dependencies.
      • A special dependency are the target platforms.
        • You cannot install a package on an unsupported platform.
    • Package Install - Descriptor
      • Installable artifacts:
        • Nuxeo bundles (installed in bundles directory)
        • Local third party libraries (installed in Nuxeo 'lib' directory)
        • Global third party libraries (installed in container 'lib' directory)
        • Static resource files
        • Configuration files (installed in Nuxeo 'config' directory)
    • Package Install - Example
      • Use package variables to specify artifact locations.
    • Package Install - Variables
      • In an install.xml you can use a set of useful variables like:
        • Package related
          •,, package version
          • package.root – the package root
        • Environment
        • env.lib, env.bundles, env.config, env.syslib
        • sys.timestamp
      • And also any Java System or Nuxeo Property
    • Studio Packages
      • Studio provides integration with Update Center.
      • You can install a Studio generated plugin in one click from Admin Center!
        • You can install either tagged versions either the working copy of the project.
      • Studio Packages are hot deployable.
        • No need to restart the server.
        • Refresh the browser to see the changes.
    • Update System What happens when installing or uninstalling a package?
    • The Installation Process
      • The package is validated to check if all conditions are met – dependencies are resolved and the install script is valid.
      • The installation starts – any user options are passed to install commands
        • Each install rule is executed in the order it appear in the descriptor.
        • An install log is created by appending in the reverse execution order the commands that succeeded.
        • If install succeeds an uninstall.xml file is generated from the install log.
    • Automatic Rollback
      • Installation ensures that failures in an install task will not leave the system in an unknown state.
      • In case of a failure, an automatic rollback is done – and thesystem is reset to its initial state (the one before starting the installation).
      • The rollback mechanism executes all the commands present in the install log.
      • Rollback is also done if an uninstall fails.
    • The Uninstall Process
      • The uninstall descriptor is auto-generated when an install succeeds from the install log.
      • At install time, a backup is made for any file replaced or removed by the installer.
      • Also an MD5 fingerprint is generated for any installed artifact.
      • At uninstall backups are restored but only if the MD5 of the target file match the one created by the installer.
    • Uninstall Descriptor
    • Hot Reload Support
      • Limited hot reload after an install / uninstall is supported for some packages.
        • Any Studio Packages
        • Any Package that doesn't contain Java code
      • Hot reload will be improved to also support packages containing java classes in the near future.
    • What's Next?
      • Project delivery through Marketplace
      • Install wizard improvements
      • Hot reloading improvements
      • Nuxeo Studio introspection of Marketplace packages
      • Commercial packages with e-payment
    • Thank you!