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.

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

No notes for slide

Nuxeo World Session: Building Packages for the Nuxeo Marketplace

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