Your SlideShare is downloading. ×
Nuxeo World Session: Building Packages for the Nuxeo Marketplace
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Nuxeo World Session: Building Packages for the Nuxeo Marketplace


Published on

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.

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Nuxeo Marketplace And the Update Center Thierry Delprat, Stefanescu Bogdan, Alain Escaffre
  • 2. Agenda
    • Nuxeo Marketplace: presentation and objectives
    • 3. Nuxeo Marketplace review
    • 4. Behind the scenes – how it works
  • 5. Nuxeo chose a modular and extensible design...
    • To maximize reuse of components in different use cases, thus improving their quality and usability
    • 6. To have an active roadmap
    • 7. To benefit from a high level of flexibility towards user requirements
    • 8. To have a vibrant and popular plugin ecosystem.
  • 9. Nuxeo Community contributes plugins...
    • Nuxeo provides many plugins (CAS, importer, etc.)
    • 10. SI partners have their own internal shared library of typical improvements and demo scenarios
    • 11. Solution providers, through Nuxeo Galaxy, already have vertical solutions on top of Nuxeo DM
    • 12. Open source community provides several groups of interest in Nuxeo with various plugins (Yerbabuena, ESUP …)
  • 13. … that will now find their place in the Marketplace !
    • Federate and focus Nuxeo Social Marketplace momentum
    • 14. Make it easier for Nuxeo users to access to all the available resources
    • 15. Provide a way for our partners to develop their business on top of the platform with (soon) a distribution solution for commercial plugins
    • 16. Provide a way to distribute «safe» customizations
    • 17. Keep on improving the Nuxeo user experience !
  • 18. The Nuxeo Marketplace
  • 19. Marketplace, Our Recipe
    • The Marketplace portal
    • 20. A new plugin packaging system
    • 21. A solution for set up in only a few clicks
    • 22. An optional and multi-level qualification/validation scheme
    • 23. And … contributors !
  • 24. Update Center Use Cases
    • Distribution of addons
    • 25. Distribution of Nuxeo Connect patches
    • 26. Nuxeo Studio project deployment (with hot reload!)
    • 27. Will soon be a deployment solution for your project
  • 28. Package View
  • 29. Contribution Process and Guidelines
    • Make sure your development is not buggy!
    • 30. Create your Marketplace package and test its deployment locally from the Update Center
    • 31. Send your package to Nuxeo with a full description
    • 32. Documentation -- provide a user guide, a technical guide if necessary, and optionally a link to the source code
  • 33. 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
  • 34. Update Center Nuxeo Server Package Administration
  • 35. Nuxeo Update Center
    • Update Center
      • is a part of Admin Center
      • 36. provides a filtered view of Marketplace packages
      • 37. manages package downloads
      • 38. manages installation wizard for packages
  • 39. Browsing Packages
    • Update Center provides several views
      • Software updates
        • Installed packages that can be upgraded
        • 40. Nuxeo patches and fixes
      • Local packages
        • packages that have been installed via Update Center
        • 41. packages that have been downloaded but not installed
      • Marketplace
        • last version of all Marketplace packages
      • Studio
        • different versions of Studio projects
        • 42. quick update button
  • 43. Browsing Packages
    • Packages can be filtered
      • by target platform
      • 44. by type (hot fix, addon, studio)
    • You can see package details
      • description
      • 45. validation status
      • 46. dependencies
      • 47. comments, download counts
  • 48. 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
      • 49. deployed on server restart
  • 50. Package Model An update package is the bundled feature you want to install.
  • 51. Package Structure
    • An update feature is packaged as a zip
      • A package descriptor file: package.xml.
      • 52. An installation descriptor: install.xml.
      • 53. The package data:
        • JARs to install
        • 54. configuration files and other resources to copy on the server.
      • Descriptor files must reside in the ZIP root.
  • 55. The Package Descriptor
      • A Package is uniquely identified by its name and version.
      • 56. A Package has a type and a set of properties required by the installer.
  • 57. Package Properties
    • Main properties:
      • Title – A title to be used in the UI.
      • 58. Description – The package description
      • 59. Vendor – the Vendor name
      • 60. 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.
  • 61. 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'.
      • 62. 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.
  • 63. Package Install - Descriptor
    • Installable artifacts:
      • Nuxeo bundles (installed in bundles directory)
      • 64. Local third party libraries (installed in Nuxeo 'lib' directory)
      • 65. Global third party libraries (installed in container 'lib' directory)
      • 66. Static resource files
      • 67. Configuration files (installed in Nuxeo 'config' directory)
  • 68. Package Install - Example
    • Use package variables to specify artifact locations.
  • 69. Package Install - Variables
    • In an install.xml you can use a set of useful variables like:
      • Package related
        •,, package version
        • 70. package.root – the package root
      • Environment
      • 71. env.lib, env.bundles, env.config, env.syslib
      • 72. sys.timestamp
    • And also any Java System or Nuxeo Property
  • 73. Studio Packages
    • Studio provides integration with Update Center.
    • 74. 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.
      • 75. Refresh the browser to see the changes.
  • 76. Update System What happens when installing or uninstalling a package?
  • 77. The Installation Process
    • The package is validated to check if all conditions are met – dependencies are resolved and the install script is valid.
    • 78. The installation starts – any user options are passed to install commands
      • Each install rule is executed in the order it appear in the descriptor.
      • 79. An install log is created by appending in the reverse execution order the commands that succeeded.
      • 80. If install succeeds an uninstall.xml file is generated from the install log.
  • 81. Automatic Rollback
    • Installation ensures that failures in an install task will not leave the system in an unknown state.
    • 82. In case of a failure, an automatic rollback is done – and thesystem is reset to its initial state (the one before starting the installation).
    • 83. The rollback mechanism executes all the commands present in the install log.
    • 84. Rollback is also done if an uninstall fails.
  • 85. The Uninstall Process
    • The uninstall descriptor is auto-generated when an install succeeds from the install log.
    • 86. At install time, a backup is made for any file replaced or removed by the installer.
    • 87. Also an MD5 fingerprint is generated for any installed artifact.
    • 88. At uninstall backups are restored but only if the MD5 of the target file match the one created by the installer.
  • 89. Uninstall Descriptor
  • 90. Hot Reload Support
    • Limited hot reload after an install / uninstall is supported for some packages.
      • Any Studio Packages
      • 91. Any Package that doesn't contain Java code
    • Hot reload will be improved to also support packages containing java classes in the near future.
  • 92. What's Next?
    • Project delivery through Marketplace
    • 93. Install wizard improvements
    • 94. Hot reloading improvements
    • 95. Nuxeo Studio introspection of Marketplace packages
    • 96. Commercial packages with e-payment
  • 97. Thank you!