Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 328605 - MPC should retrieve list of catalogs from the server
Summary: MPC should retrieve list of catalogs from the server
Status: CLOSED FIXED
Alias: None
Product: MPC
Classification: Technology
Component: wizard (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows 7
: P3 enhancement (vote)
Target Milestone: 1.1   Edit
Assignee: Benjamin Muskalla CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 313581 343327
  Show dependency tree
 
Reported: 2010-10-25 09:57 EDT by Nathan Gervais CLA
Modified: 2011-04-19 20:23 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nathan Gervais CLA 2010-10-25 09:57:51 EDT
Having the client hard coded with the locations of all the Marketplace Catalogs could prove troublesome if we ever have a problem with a catalog and wish to de-list it permanently or temporarily.  

We should move this list to the server and fetch it when launching MPC.  This would allow not only remove entries but also add them on the fly.
Comment 1 Benjamin Muskalla CLA 2011-02-11 07:34:40 EST
Nathan, we'd need new API to retrieve the list of marketplaces here.  Or do we already have API for this somewhere?

If not, I'd suggest to use the attributes that we currenlty have in the extension point:
url - An URL that points to a web resource that implements the marketplace API.
label - A label that identifies the catalog
description - A brief description of the catalog which is presented to the user.
icon - A branding icon for the catalog.  Must be of size 32x32.
selfContained - A boolean indicating if the catalog is self-contained.  If unspecified, the default value is 'true'.
dependenciesRepository - An URL that points to a a software repository that can be used to resolve dependencies for
                  solutions installed from this catalog.
                  
One thing I wonder about: Should we implement this in addition to the extension point? If we'd remove the extension point now, this would be an API break. I'd rather deprecate the extension point. In addition, we need to provide a new extension point that allows to plug in the "central repository" that delivers the locations of the marketplaces (only Eclipse.org for now) so others can integrate their own markeplace listings into their products.
Comment 2 Thomas Ehrnhoefer CLA 2011-02-11 08:05:41 EST
(In reply to comment #1)
> One thing I wonder about: Should we implement this in addition to the extension
> point? If we'd remove the extension point now, this would be an API break. I'd
> rather deprecate the extension point. In addition, we need to provide a new
> extension point that allows to plug in the "central repository" that delivers
> the locations of the marketplaces (only Eclipse.org for now) so others can
> integrate their own markeplace listings into their products.

I was wondering about that, too.
Ian, what was your idea on how third parties can contribute their catalogs? By providing their own REST service (and the MPC client somehow, e.g. extension point, getting this locaion)? Or by providing the catalog information (or URL(s)) to eclipse.org's Marketplace, which is serving all those third party catalogs to the MPCs?

Ben, correct me if that's already known or discussed.
Comment 3 Ian Skerrett CLA 2011-02-11 08:12:15 EST
(In reply to comment #1)

> One thing I wonder about: Should we implement this in addition to the extension
> point? 

We need to keep the extension point.   Anyone should be able to add a catalog.   All we are saying is that the catalogs that come 'pre-bundled' with MPC need to be discovered through a call to a service hosted at eclipse.org.   The Eclipse Foundation will run and manage what is made available.  

FYI, right now any strategic member is allowed to provide a catalog that gets bundled with MPC.
Comment 4 Ian Skerrett CLA 2011-02-11 08:14:16 EST
(In reply to comment #2)
> (In reply to comment #1)

> 
> I was wondering about that, too.
> Ian, what was your idea on how third parties can contribute their catalogs? By
> providing their own REST service (and the MPC client somehow, e.g. extension
> point, getting this locaion)? Or by providing the catalog information (or
> URL(s)) to eclipse.org's Marketplace, which is serving all those third party
> catalogs to the MPCs?


Right now the MPC bundles the extension points that include the third party catalogs.   We want to move to a model so that the eclipse.org can provide the catalog list dynamically.

However, as I mentioned we need to keep the extension point.  This will allow others to provide catalogs.
Comment 5 Benjamin Muskalla CLA 2011-02-14 12:10:23 EST
Over to you Nathan. It would great to get this resolved so we can start working on this.
This would also involve additional attributes for 336159: user can see catalog branding in MPC wizard
https://bugs.eclipse.org/bugs/show_bug.cgi?id=336159
Comment 6 Nathan Gervais CLA 2011-02-14 15:47:08 EST
(In reply to comment #5)
> Over to you Nathan. It would great to get this resolved so we can start working
> on this.
> This would also involve additional attributes for 336159: user can see catalog
> branding in MPC wizard
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=336159

I've begun building the blocks on Marketplace to make this happen. I'll keep this bug updated.
Comment 7 Nathan Gervais CLA 2011-02-28 14:07:13 EST
I've published the initial implementation of the catalog API.

http://marketplace.eclipse.org/catalogs/api/p

Please review and provide feedback.
Comment 8 Benjamin Muskalla CLA 2011-03-07 10:16:53 EST
From my POV, the API looks good. Will get back to you in case there is something blocking the implementation.

An open question is: which information to use in case we have a local contribution (plugin.xml) and the same information retrieved from the server. In my eyes, it makes more sense to use the remote information as this is potentially newer than the local one. We will still merge both catalog contributions, this question is only about duplicate information (read: urls are equal). Ian, does this make sense to you?
Comment 9 David Green CLA 2011-03-07 12:07:26 EST
It makes sense to me that the remote contribution should override the local one in the case where the referenced catalogs are the same (ie: they have the same URL).
Comment 10 Ian Skerrett CLA 2011-03-07 16:10:04 EST
(In reply to comment #8)
> From my POV, the API looks good. Will get back to you in case there is
> something blocking the implementation.
> 
> An open question is: which information to use in case we have a local
> contribution (plugin.xml) and the same information retrieved from the server.
> In my eyes, it makes more sense to use the remote information as this is
> potentially newer than the local one. We will still merge both catalog
> contributions, this question is only about duplicate information (read: urls
> are equal). Ian, does this make sense to you?

Shouldn't we be showing both as two different catalogs?   Maybe I am not understanding the scenario?
Comment 11 David Green CLA 2011-03-07 16:35:21 EST
The scenario is that a catalog (identified by its URL) is specified twice: once by the user's local installation as a plug-in contribution, and second time by the catalog listing service (on the server).  It's one catalog, specified multiple times.
Comment 12 Ian Skerrett CLA 2011-03-07 16:45:46 EST
(In reply to comment #11)
> The scenario is that a catalog (identified by its URL) is specified twice: once
> by the user's local installation as a plug-in contribution, and second time by
> the catalog listing service (on the server).  It's one catalog, specified
> multiple times.

So if it is the same URL I can imagine the catalog information would be identical?  What we are discussing is potential branding differences.  Is that correct?

First, I am not sure how we would get into such a situation.  One scenerio I can imagine is for testing purposes a catalog provider wants to override the server for their own workspace.  Are there other scenerios?
Comment 13 David Green CLA 2011-03-07 17:18:11 EST
Another scenario is that MPC ships with Eclipse Marketplace defined by a plug-in, and then decides to update branding by listing on the server as well.
Comment 14 Benjamin Muskalla CLA 2011-03-08 09:20:00 EST
Ian, another possible scenario: current EPP bundles include the Yoxos marketplace and call it "Yoxos Marketplace" (local). The marketplace server lists the Yoxos marketplace as "EclipseSource marketplace" (remote). In this case, we have the same marketplace with different brandings. That's why I think the "remote" information should override the local information to be able to update the branding of the marketplaces without a new Eclipse release.

Nathan, currently I'm missing the "dependenciesRepository" attribute in the marketplace listing. Could you please add that? For now, the eclipse marketplace can point to "http://download.eclipse.org/releases/indigo". Thanks
Comment 15 Ian Skerrett CLA 2011-03-08 11:53:31 EST
(In reply to comment #14)
> Ian, another possible scenario: current EPP bundles include the Yoxos
> marketplace and call it "Yoxos Marketplace" (local). The marketplace server
> lists the Yoxos marketplace as "EclipseSource marketplace" (remote). In this
> case, we have the same marketplace with different brandings. That's why I think
> the "remote" information should override the local information to be able to
> update the branding of the marketplaces without a new Eclipse release.
> 

FWIW, I don't see EPP bundling marketplace plugins.  The whole idea of having the control from the server was to give us more flexibility to update, add and remove catalogs outside of a package release.

btw, I am not against the remote server being the default. I just think we might get a situation where the decision will not be what someone would expect.
Comment 16 David Green CLA 2011-03-10 12:49:32 EST
Is the server listing providing a dependencies repository?  It should (see bug 332073).  The extension point allows for that:

bc. 
<catalog
            description="%catalog.description"
            icon="icons/marketplace32.png"
            label="%catalog.label"
            url="http://marketplace.eclipse.org"
            dependenciesRepository="http://download.eclipse.org/releases/helios">
      </catalog>
      
The @dependenciesRepository@ attribute is used to specify where dependencies are resolved from when installing solutions from the marketplace.  Catalogs can (should) specify a composite repository so that they can add multiple repositories when it makes sense (eg: both helios and indigo)
Comment 17 Benjamin Muskalla CLA 2011-03-12 16:31:12 EST
Changes were merged together with the branding feature. See task 336159 for the changes.
Comment 18 Nathan Gervais CLA 2011-03-14 14:24:43 EDT
I've updated the catalog API call to include the icon as an attribute of the catalog.

http://marketplace.eclipse.org/catalogs/api/p

I've also added the Marketplace listing and Yoxos catalogs to the server.
Comment 19 David Green CLA 2011-03-14 17:09:21 EDT
These look good Nathan, except that the @dependenciesRepository@ is not appearing.
Comment 20 Nathan Gervais CLA 2011-03-15 09:44:43 EDT
(In reply to comment #19)
> These look good Nathan, except that the @dependenciesRepository@ is not
> appearing.

Sorry about that, should be appearing now.
Comment 21 Benjamin Muskalla CLA 2011-03-16 12:57:25 EDT
Catalogs are now retrieved from the server. Closing this as fixed.