Bug 185052 - [europa] installable feature should contribute to capabilities prefs
Summary: [europa] installable feature should contribute to capabilities prefs
Status: NEW
Alias: None
Product: Community
Classification: Eclipse Foundation
Component: UI Guidelines (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: Cross-Project issues CLA
QA Contact:
URL: http://wiki.eclipse.org/index.php?tit...
Whiteboard:
Keywords: performance
Depends on:
Blocks:
 
Reported: 2007-05-02 05:39 EDT by Eric Jodet CLA
Modified: 2009-04-15 04:08 EDT (History)
9 users (show)

See Also:


Attachments
screen shot (47.63 KB, image/jpeg)
2007-05-02 05:42 EDT, Eric Jodet CLA
no flags Details
Install Europa: component categories (27.43 KB, image/jpeg)
2007-05-03 09:35 EDT, Eric Jodet CLA
no flags Details
3.3.M6 Advanced Preference Page (80.24 KB, image/jpeg)
2007-05-03 09:36 EDT, Eric Jodet CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Eric Jodet CLA 2007-05-02 05:39:28 EDT
Version: 3.3.0
Build id: I20070323-1616 (3.3 M6)

- installed all currently Europa installable features on top my fresh M6 install
- instrumented core.runtime to track plugin activation
- found that for base 3.3 M6, 36 plugins were activated, whereas 92 were activated for europa
- wonder how I could activate / de-activate some feature base on the work I intend to do (ex: work on Database or develop some C/C++)

Based on what is already done in Eclipse based toolkits such as WID/RAD, we could improve / optimize the number of features / plugins loaded at startup based on corresponding capability.
Each feature could contribute the Capabilities preference page:
- capability enabled: feature / plugins loaded at startup
- capability disabled: feature / plugins not loaded at startup

I went to the Capabilities preference page and found that only the BIRT feature was contributing to this page (compared to base Eclipse).

See also bug 136397
Comment 1 Eric Jodet CLA 2007-05-02 05:42:11 EDT
Created attachment 65584 [details]
screen shot

current europa capabilities preference page
Comment 2 Dani Megert CLA 2007-05-02 06:34:05 EDT
Capabilities is one thing but we should also check why those plug-ins get loaded at all.
Comment 3 Eric Jodet CLA 2007-05-02 06:41:32 EDT
(In reply to comment #1)
investigation currently in progress: instrumented core.runtime to track early plugin activation along with stack trace.
Comparing base Eclipse to "nearly full" europa results.
Comment 4 Eric Jodet CLA 2007-05-02 06:43:14 EDT
(In reply to comment #3)
It was a reply to comment #2, not #1

Comment 5 Dani Megert CLA 2007-05-02 06:55:48 EDT
You might want to use the Core Tools:
http://www.eclipse.org/eclipse/platform-core/downloads/tools/org.eclipse.core.tools_1.4.0.zip
Comment 6 Boris Bokowski CLA 2007-05-02 14:07:57 EDT
See also http://borisoneclipse.blogspot.com/2007/03/who-is-to-blame.html (really easy to use by everybody because it is a plug-in you drop into your install, it does not require command line settings)
Comment 7 Boris Bokowski CLA 2007-05-02 14:09:12 EDT
Who do you want to take action? All projects contributing to the Europa release train?
Comment 8 Dani Megert CLA 2007-05-02 14:18:25 EDT
Eric, can you assess and also post a heads/up reminder to the cross project mailing list?
Comment 9 Boris Bokowski CLA 2007-05-02 15:42:47 EDT
Is there anything we (Platform UI) can/should do?  If not, individual bugs against the projects in question should be filed.
Comment 10 Dani Megert CLA 2007-05-02 15:49:44 EDT
Boris, I don't think you can do anything here. The only thing where Plat UI is a known cause for early loading is bug 136397 where we would need some advice form SWT.

Eric to file bugs. Please cc me.
Comment 11 Boris Bokowski CLA 2007-05-02 16:58:01 EDT
This bug is still assigned to Platform UI. Can it be moved somewhere else? I don't mind it being classified as Platform UI, I just would like to change the assignee because we try to keep our inbox empty.
Comment 12 Eric Jodet CLA 2007-05-03 00:48:19 EDT
(In reply to comment #6)
Boris,
we already use your plugin which turns to be very helpful.
Comment 13 Eric Jodet CLA 2007-05-03 00:51:37 EDT
(In reply to comment #11)
Switched to Cross-Project component
Comment 14 Eric Jodet CLA 2007-05-03 00:56:47 EDT
(In reply to comment #8 and comment #10)
next actions:
- send a heads-up to to the cross project mailing list
- open one individual bug per europa feature (cc Daniel)
Comment 15 Martin Oberhuber CLA 2007-05-03 05:57:58 EDT
Do I understand this right:

* Plugins/Features that contribute to the UI through plugin.xml are OK, as long
  as the plugin is not automatically activated when starting Eclipse in the
  default Perspective.

* In case plugins are activated, plugin owners should check whether activation
  is really necessary or could be deferred e.g. by declarative contribution to
  the UI rather than programmatic contribution. 

* In case there are UI or other contributions that do require plugin activation
  or cannot be converted to being declarative in time for Europa, plugins 
  should contribute to the Capabilities extension such that this activation 
  can be suppressed.

I think it would help if somebody could point us to sample code how to contribute to the Capabilities extension properly (ideally with some sample code and XML, perhaps from BIRT?
Comment 16 Ed Merks CLA 2007-05-03 06:32:43 EDT
These were my comments on the cross project mailing list

For EMF we have capabilities defined in an example plugin.  We ran into problems with providing these as an actual part of our standard feature since IBM products wanted to define their own notion of what functions fits in what capability categories.  So if the idea is that Europa will now deliver on the order of 20 or more categories out of the box, I'm not sure that's a great idea.  Is it possible to use capabilities to filter out capabilities themselves so they can be redefined differently by a client who has their own notion of how best to group the function contributed by various Eclipse projects into categories of capability?  I fear that an uncoordinated effort will just result in a hodgepodge of categories and I don't think EMF will be in a position to contribute to that (and reading the bugzilla I don't think EMF loads plugins before their time is right).  So a word of caution, be careful what you ask for, you may get it.  

I also wonder if people think it's realistic to ask others to ship their features with their capabilities disabled.  I know that when people install EMF directly they are really expecting it to be enabled and I'm sure every project is in the same position in that regard.  Is there a declarative mechanism whereby products could change the default enableblement state of various capabilities?
Comment 17 Martin Oberhuber CLA 2007-05-03 07:55:14 EDT
When I got this right, the idea was not necessarily to have it disabled by default, but to give the user the ability to disable it.

I agree that the responsibility for defining the granularity of Capabilities seems to be with the products based on Eclipse (and not the core framework, Eclipse itself).
 
Having a second level of enablers ("Capabilities of Capabilities", or "Capability Enablers", or "defined but currently hidden Capabilities") seems like an interesting idea.
Comment 18 Eric Jodet CLA 2007-05-03 08:00:32 EDT
(In reply to comment #15)
> Do I understand this right:
> 
> * Plugins/Features that contribute to the UI through plugin.xml are OK, as long
>   as the plugin is not automatically activated when starting Eclipse in the
>   default Perspective.
> 
--> correct, in my opinion

> * In case plugins are activated, plugin owners should check whether activation
>   is really necessary or could be deferred e.g. by declarative contribution to
>   the UI rather than programmatic contribution. 
> 
--> agreed: that's one main point - check whether plugin activation is expected

> * In case there are UI or other contributions that do require plugin activation
>   or cannot be converted to being declarative in time for Europa, plugins 
>   should contribute to the Capabilities extension such that this activation 
>   can be suppressed.
> 
--> the main idea of this thread is (according to me): even if plugin is
installed or contributes to such pull-down menu, or have an icon - whatever
plugin activation may be - contributing to the General / Capabilities
preference  would enable end-user to be able to activate/deactivate desired
plugin(s) based on intended usage of the Toolkit.

> I think it would help if somebody could point us to sample code how to
> contribute to the Capabilities extension properly (ideally with some sample
> code and XML, perhaps from BIRT?
> 
Comment 19 Eric Jodet CLA 2007-05-03 09:34:07 EDT
(In reply to comment #16)
As suggested by Ed, we may come up with a capabilities hiearchy that matches the categories displayed in the update wizard, when installing europa.
Grouping might be similar as what can already be found in 3.3 M6 (see screen shots).
Doing this way would prevent us from having too many items in the General Capabilities pref page confusing the end-user.
Comment 20 Eric Jodet CLA 2007-05-03 09:35:13 EDT
Created attachment 65761 [details]
Install Europa: component categories
Comment 21 Eric Jodet CLA 2007-05-03 09:36:21 EDT
Created attachment 65762 [details]
3.3.M6 Advanced Preference Page
Comment 22 John Arthorne CLA 2007-05-03 09:48:26 EDT
Note that capabilities are mainly used to filter declarative contributions to the UI. Disabling a capability has no impact on the runtime level, and won't necessarily prevent a plugin from being activated. Eric, do you have evidence that defining capabilities would reduce the number of plugins that get activated? We should avoid asking all Europa projects to do anything until we know if it will have the desired effect.

Ed's point is also very important. If Europa had an associated product plugin, that would be a reasonable place to define capabilities. It generally isn't appropriate to define capabilities at a lower level, because larger Eclipse-based products may want a different level of granularity in their capabilities.
Comment 23 Eric Jodet CLA 2007-05-03 10:04:46 EDT
(In reply to comment #22)
John: no evidence here, as I'm talking about an enhancement / new feature to implement.
(see my last comment about how we could categorize projects / features)

I already opened 4 child bugs, but you're right: better have a common way to handle this in order to provide component owners with some guidelines.
I stand by with child bugs for now until a common agreement is found.
Comment 25 Bjorn Freeman-Benson CLA 2007-08-10 02:49:39 EDT
Moving to UI Group.