Bug 251477 - [metadata] specification of "suggested" or "related" capabilities
Summary: [metadata] specification of "suggested" or "related" capabilities
Status: CLOSED WONTFIX
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: p2 (show other bugs)
Version: 3.5   Edit
Hardware: PC Windows XP
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: P2 Inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords: helpwanted
Depends on:
Blocks: 226577 247342
  Show dependency tree
 
Reported: 2008-10-20 16:51 EDT by Susan McCourt CLA
Modified: 2019-11-14 02:24 EST (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Susan McCourt CLA 2008-10-20 16:51:06 EDT
How do we express in metadata that if the user installs IU "A" that we want to suggest to the user that they install IU "B"?  In this case, B is not a required capability, but rather a suggested or related capability.  Further complicating this is that we may only want to suggest "B" to the user if "C" is installed.

More examples and ideas to follow.  This bug represents the metadata requirements for these relationships.  Bug #247342 discusses the presentation of these relationships.
Comment 1 Susan McCourt CLA 2008-10-20 17:18:15 EDT
Some of the use cases:

1) Mylyn bridge for C/C++, where you don't want to show the bridge if C/C++ is
not installed.

2) The converse of #1 - You already have Mylyn installed and want to suggest the C/C++ bridge when installing C/C++

3) Webserver adaptors for the JEE support, where adaptors complement what is
being installed to make it fully functional.

This means that:
a) suggestions can span sites.  The suggestion to install Mylyn C++ bridge if you are installing CDT probably originated from Mylyn, yet the user is installing content from the CDT site.
b) suggestions must be able to take into account the content and/or properties of the target profile, otherwise we are just making too many bogus suggestions.

Pascal suggests that a suggestion is a separate IU much like a category.  This lets aggregators compose suggestions independent of the IU provider.  The required capabilities in a suggestion IU enumerate the suggested IUs.
- is the id of the suggestion IU the id of the IU for which it is making suggestions?  
- somehow we need to express the conditions under which the suggestion IU is "enabled."  The suggestion IU should be able to express IU's that must be present in the profile for the suggestion to be visible, or even property values in the target profile that must be present for the suggestion to be visible (such as platform, etc.)
Comment 2 Susan McCourt CLA 2008-10-20 17:21:36 EDT
marking M4 as there are M4 UI bugs that depend on the outcome of this discussion.

cc'ing Dave.
Dave, Pascal thought you might have some suggestions for expressing the enablement conditions for a suggestion within the metadata.
Comment 3 John Arthorne CLA 2008-10-20 20:03:54 EDT
When we talked about these use-cases in the past, we were leaning towards something automatic rather than a system based on user suggestions. I.e., metadata that could express: If A and B are installed, then automatically install C. Thus the CDT/Mylyn bridge would be installed automatically once both CDT and Mylyn are installed, regardless of which was installed first. Making it implicit has some advantages: the user doesn't need to be aware of or understand the capabilities provided by the bridge plugin, and they may not even be aware of the two features being bridged if they are low level pieces.  

There may be cases where explicit user interaction is helpful though.

A related issue is bug 236111. Someone might want to have the bridge feature already in the install so that it can be enabled automatically once its prerequisite is available.
Comment 4 Susan McCourt CLA 2008-10-20 22:08:43 EDT
>Making it
> implicit has some advantages: the user doesn't need to be aware of or
> understand the capabilities provided by the bridge plugin, and they may not
> even be aware of the two features being bridged if they are low level pieces.  
> 
> There may be cases where explicit user interaction is helpful though.

The problem that continues to plague us is that there is not just one user.  Some users would rather not bother with such detail (such as Ellen in the user persona definitions), and others do not appreciate any "magic" that happens for them, for different reasons (Laurel, Dave, etc.).  From a UI point of view, one of the big pieces of work for 3.5 is to define these users and then satisfy the users who want to understand the relationships and dependencies involved in an install/uninstall/update without overwhelming those who don't care.

As long as we can define what the metadata looks like for these relationships, then we can separately iterate on the UI.  It sounds like even in an automatic case, we need a way to not only specify the relationship, but to specify conditions under which the relationship is valid.
Comment 5 Pascal Rapicault CLA 2008-12-08 14:56:24 EST
We will not be addressing this in 3.5.
Comment 6 Max Rydahl Andersen CLA 2009-02-04 07:13:14 EST
(In reply to comment #5)
> We will not be addressing this in 3.5.

:( :(

Could we please get any pointer to how adopters can avoid having the current P2 download large 100% optional dependencies like TPTP, Birt etc. when we provide plugins for these things in our product for the intention to only have these enabled IFF the user installs them ?  (i.e. we don't want the user to get these large dependencies enforced on them)

Comment 7 John Arthorne CLA 2009-02-04 09:47:57 EST
Required capabilities in p2 have a "greedy" attribute that can be set to false, which will avoid those dependencies being traversed during resolution. There is no tooling support for this, but it is possible by directly editing your p2 metadata. 
Comment 8 Lars Vogel CLA 2019-11-14 02:24:37 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

If the bug is still relevant, please remove the "stalebug" whiteboard tag.