Eclipse Bundle Recipes
The Eclipse Bundle Recipes project is a proposed open source project under the Eclipse Runtime Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.
This proposal recommends the creation of a new project called "Eclipse Bundle Recipes" (EBR), to provide "recipes" in the form of template files which can be used to convert open source library Jar files into OSGi Bundles. EBR will be a subproject of the Eclipse Runtime Project (RT) and will aim to exploit the functionality of existing projects. We encourage and request additional participation and input from any and all interested parties.
One of the challenges Java developers face in creating solutions that make use of the OSGi Service Platform is in finding OSGi bundle forms of the open source software they use. This need was partly addressed by the SpringSource Enterprise Bundle Repository which is maintained by VMware (after their acquisition of SpringSource). Each entry in the SpringSource repository is created from a template and provides metadata about the bundle; namely:
- Ivy and Maven XML snippets describing how to declare a dependency on the bundle.
- The Java packages the bundle exports, i.e. its external contract.
- The Java packages the bundle imports, i.e. the contracts it depends on.
- Bundles that are able to provide those packages.
The repository is transitively closed: all bundle dependencies are satisfied by other bundles in the repository.
The SpringSource repository does not allow for external contributions and so is difficult for a single vendor to keep current (and, in practice, VMware has limited resources to apply to maintaining the repository). A templates project at Eclipse will help share the responsibility and better serve the needs of OSGi users.
The scope of the EBR project is to provide template files for creating bundles for open source Jars. Scoping the project to templates rather than the resulting bundles facilitates bundle creation for a wide variety of open source projects, not just those with licenses acceptable to the Eclipse Foundation. Only templates whose creation and use do not violate the license of the original Jar will be permitted.
The EBR project is aimed at open source Jars which do not already have reasonable OSGi manifests. If a project originating such a Jar provides a reasonable OSGi manifest for a subsequent version of the Jar, then the EBR project will discontinue its support of the JAR (for new versions - existing versions of the template will remain in the EBR project for anyone who needs them) in order to encourage the community to treat the originating project as the preferred source of the corresponding bundle. This is deemed to be a success story for the EBR project.
Enhancements to the Eclipse Virgo Bundlor tool may be necessary to handle identification and processing of the Jar to which a template applies.
The primary goal of the project is the provision of templates, but the project should also consider the following enhancements to the Eclipse Marketplace and Client:
- A new 'OSGi Bundles' market with entries for bundles (provided outside the EBR) and templates from EBR. These bundles and templates would be subject to the usual Marketplace publishing restrictions.
- Browser-based Bundlor equivalent for consuming templates from the Marketplace and creating the resulting bundle.
- Modification of the Eclipse Marketplace Client so that bundles from the OSGi Bundles market can be discovered directly in the Eclipse IDE and pulled into the user's workspace or PDE target platform. This is different to how the IDE operates with the Marketplace today as that interaction causes plugins to be installed into the IDE itself.
Although the bundles, which may be generated from the project, will not be hosted at Eclipse, anyone who is able to may generate and host those bundles, for example in a Maven repository. Companies may choose to do this internally to provide repeatable builds. A vendor may choose to generate and publish the bundles to a publicly visible repository.
A longer term goal of the project is to provide an OSGi R5 Repository API implementation to programmatically search the bundle metadata associated with the generated bundles.
The EBR project provides a library of templates that can be used to create bundles for open source projects. The Eclipse Virgo Bundlor tool converts a Jar to a bundle driven by a given template. Each template guides the addition of OSGi manifest headers in order for the Jar to work correctly as an OSGi bundle.
The project satisfies a broad set of bundle requirements by hosting only templates (not the original Jar or resulting bundle), thus allowing it to address a wide variety of open source projects, including those using licenses which are unacceptable to the Eclipse Foundation.
In taking this template approach it is important that the bundle generation be a repeatable process and so enhancements to Bundlor and the templates it can consume will ensure the correct Jar is used.
Contributions to the project, including templates, may be made using the regular Eclipse processes including attaching a patch to Eclipse bugzilla or issuing a pull request on github.
The vast majority of Eclipse projects are built using OSGi, and Eclipse Equinox has been the OSGi Core Reference Implementation for many years. As exploiters of OSGi, many Eclipse projects and their users will benefit from, and potentially contribute to, a project which addresses their need for pre-bundled copies of the libraries they use.
The Eclipse Marketplace and associated client also offer the opportunity to make OSGi bundles easily discoverable and accessible to developers and users.
The initial contribution of templates to the Bundle Recipes project will be made by VMware based on the SpringSource Enterprise Bundle Repository content. Many of these templates have already been published in github under the Eclipse Public License.
In committing template files into Eclipse, committers need to be sure that the template, in its creation or use, does not violate the license of the Jar it references. For example, a license that did not permitted updates to the Jar manifest, or for the Jar to be packaged inside another artefact (e.g. wrapped in an OSGi bundle), would prohibit the creation of a bundle for the Jar without violating the license. Such a license may not actually exist, but contributors will need to be aware that this due diligence is necessary.
The following individuals are proposed as initial committers to the project:
- Neil Bartlett (Paremus)
- David Bosschaert (Red Hat)
- Graham Charters (IBM)
- Chris Frost (VMware/SpringSource, Project Lead)
- Jeremy Hughes (IBM, Project Lead)
- Toni Menzel (Rebaze)
- Glyn Normington (VMware/SpringSource)
- John Ross (IBM)
- Raman Gupta
- Gunnar Wagenknecht
- Tom Watson
We welcome additional committers and contributions.
The following Architecture Council members will mentor this project:
- Ian Bull (EclipseSource)
- Thomas Watson (IBM)
The following individuals, organisations, companies and projects have expressed interest in this project:
- Peter Kriens (aQute)
- SAP AG
- January 2013, Bundle Recipes proposal submitted
- February 2013, Creation review
- August 2013, Graduation review
Changes to this Document
|28 January 2013||Document created|