Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 313450

Summary: Marketplace should support composite listings
Product: [Technology] MPC Reporter: Konstantin Komissarchik <konstantin>
Component: InstallAssignee: Project Inbox <mpc.install-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: mober.at+eclipse
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Whiteboard:

Description Konstantin Komissarchik CLA 2010-05-18 18:31:10 EDT
It is frequently useful to allow users to install a subset of functionality. Now I know that the scenario that MPC is trying to address is one of simplicity, but I think there is a benefit in extending the capability of Marketplace to support composite listings.

Our scenario... Oracle Enterprise Pack for Eclipse (OEPE) is composed of multiple features. Users can install the entire thing or a subset. We provide separate extensions to various Eclipse tool chains that users can choose to install independent of each other. For instance, we provide WTP server adapters for WebLogic Server and GlassFish. We also provide a DTP database connector for Oracle database. WTP, DTP and others have a requirement for a UI for embedded extension discovery. It makes a lot of sense to re-use MPC for this (pre-filtered for a set keyword based on the context). How would this work for the OEPE use case? We could tag the OEPE listing with those keywords, but that's not really optimal. Users looking for Oracle Database support probably don't want WebLogic Server adapter installed as well. We could create more Marketplace entries in addition to the root OEPE ones, but that creates a lot of noise in the catalog for users to search through and marketing people aren't thrilled about fragmenting the votes and comments among many listings.

So... I propose that it should be possible to create child Marketplace listings. A child listing must have its own name, description, feature id and tags, but should otherwise be linked to the parent.

If we had this, we would define our listings as follows:

Oracle Enterprise Pack for Eclipse (tagged for general use)
  Oracle Database Tools (tagged for DTP)
  Oracle WebLogic Server Tools (tagged for WTP)
  Oracle GlassFish Tools (tagged for WTP)
Comment 1 David Green CLA 2010-05-26 11:55:33 EDT
Marketplace can already handle what you call composite listings by adding multiple feature ids to a single marketplace entry.  In the marketplace wizard the user has the opportunity to deselect entries for installation once the solution is selected and the user has pressed 'Next'.

Per bug 280726 comment # 15 p2 discovery is specifically designed to handle your use case.  Please continue this discussion on bug 280726.

*** This bug has been marked as a duplicate of bug 280726 ***
Comment 2 Martin Oberhuber CLA 2013-03-06 14:10:05 EST
So...

I understand my solution can specify multiple root features to install, but how do I specify multiple repositories to pull from ? 

See also http://dev.eclipse.org/mhonarc/lists/mpc-dev/msg00296.html
Comment 3 Konstantin Komissarchik CLA 2013-03-06 14:19:11 EST
> I understand my solution can specify multiple root features to install, but how
> do I specify multiple repositories to pull from ? 
> 
> See also http://dev.eclipse.org/mhonarc/lists/mpc-dev/msg00296.html

The typical solution is to either mirror the third-party plugins into your repository or to reference the other repo from yours. This would fix the issue you are facing not just for the marketplace listing but for direct install using regular p2 UI or commands.
Comment 4 Konstantin Komissarchik CLA 2013-03-06 14:22:02 EST
In a second reading, I see that I didn't fully understand your question. Although, you can still use the aggregate repository approach that I described and then list the aggregate on the marketplace.
Comment 5 Martin Oberhuber CLA 2013-03-07 02:08:39 EST
(In reply to comment #3)
> The typical solution is to either mirror the third-party plugins into your
> repository or to reference the other repo from yours.

I think I understand mirroring though I haven't used it recently; but what I'd prefer here is reference the other repo from mine. How do I do that ? Is it documented anywhere ? I couldn't find any docs for that.
Comment 6 Carsten Reckord CLA 2013-03-07 05:36:50 EST
I'll just copy part of my mailing list reply here for reference. As Konstantin suggested, the best way for you to go is probably creating a composite repository.

There are a couple of things you can do.

1. If you control the main update site or feature(s), you can (and probably should) make sure that all required sites are seeded into the user's site list. To do that you can
a) at the feature level add discovery sites: in the feature editor under "Information/Sites to visit"
b) at the p2 repository level add repository references. I'm using Buckminster, where a repository is defined through a feature project. There you can just add discovery urls as above and they will end up as repository references in the p2 metadata. Not sure how this works with PDE/build or Tycho.

2. If you don't control these artifacts, you can always just create your own composite repository pointing to the required repositories and use that as your marketplace update site. See here: http://wiki.eclipse.org/Equinox/p2/Composite_Repositories_(new)
Comment 7 Martin Oberhuber CLA 2013-03-07 05:44:51 EST
Many thanks for the input ! This is exactly what I've been looking for. 

For the records, the concrete implementation of this is tracked here:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=402565#c2