Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Equinox p2 Recommendation descriptors

What are recommendation descriptors?

Recommendation descriptors are advices to the provisioning agent. Theses advices help the agent make choice on the versions of IUs that needs to be picked.

Why are those necessary?

One may ask, why do we need recommendations when InstallableUnits already define ranges of tolerated version? Because the ranges expressed in installable units are usually the expression of the producer point view who is trying to maximize the use cases in which its component can be used, and this view point is different from the one of an integrator / product producer who wants to ship a very specific / tested alignment of versions and plug-ins.

Therefore the recommendation descriptor is here to represent the integrator/product producer view point at provisioning time, such that a provisioned system is not ending with an uncontrolled set of installable units.

What are they made of?

Recommendation descriptors can be seen as rewriting rules on the requirements expressed by an IU (this is how they are currently implemented). Currently the only thing that is

allowed to be rewritten is the version range expressed on a requirement. For example it allows to rewrite the JFace IU dependency on on swt [3.0, 4.0) into swt [3.3.0, 3.5)

What can be done with it?

  • Precisely control the set of IUs being installed by specifying in a recommendation descriptor the set of versions that must be used for each IU.
  • Prevent the installation of IUs that are known to be incompatible or undesirable. For example, one product producer could decide that he/she never wants to have PDE installed in a system where his/her product is installed.
  • Detection of incompatibilities between products. The recommendation descriptors can be analyzed (at install time, or at dev time) to check for incompatibilities. For example product X is incompatible with PDE.
  • Qualification: check that a system is in the state matching what is described in recommendations

Delivery mechanism?

Recommendations will not be a special construct. They will be delivered by an installable unit containing the necessary information.

Usage

The recommended way to use this construct is yet to be refined but we believe but here what we currently have in mind. Recommendation descriptors will be used to replace the list of included plug-ins and features found in a feature.xml Group level recommendation descriptors shipped with eclipse should only recommend about the plug-in that they actually own. For example the PDE recommendation descriptor should only have information about org.eclipse.pde.* IUs

Problems

Back to the top