The setup wizard allows to select what features of Nuxeo platform you want to install.
It uses the same packaging model than Nuxeo Marketplace.
But the Wizard webapp itself does include and use the full marketplace system.
Typically the packages and the listing descriptor are hosted on a simple http server.
In 5.5, we have tree main "feature packs" : DM, CMF and DAM.
DM and DAM can be installed side by side, but CMF must run alone.
The packages.xml descripor marks the CMF package as exclusive in order to manage exclusion between incompatible packages.
This model is simple and limited, but does the job for driving the package selection UI.
Let's say that inside the wizard I select to install CAP + DM + Collab.
When the new Nuxeo instance is installed, if I go to the Admin Center, I will see 2 Addons Packages that have been installed : DM and Collab.
Logically, I also see that 2 more Addons are available : DAM and CMF.
I can install DAM, but as seen before I must be able to install CMF, at least not without previously uninstalling DM and Collab.
The problem is that the current package system does not support definition of exclusions.
In a sense, this is not that bad : managing dependencies exclusion can become complicated for us, at least if we have a lot of packages with a lot of exclusions.
The current dependencies resolution system can force uninstalling packages in one case.
If 2 packages have a common dependencies with different versions range, the dependencies resolution system will force uninstalling the offending package.
Typically, I tested a config like that :
This means we introduce a notion of virtual (marker) packages.
The good point is that it works with the current nuxeo-connect-client : no need to change marshaling model or to update the dependencies resolution system.