Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 72678 - VM argument osgi.splashPath does not work in run configurator
Summary: VM argument osgi.splashPath does not work in run configurator
Status: RESOLVED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: 3.1 M2   Edit
Assignee: PDE-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 71131
  Show dependency tree
 
Reported: 2004-08-26 09:12 EDT by Daniel Krügler CLA
Modified: 2004-09-14 15:36 EDT (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Krügler CLA 2004-08-26 09:12:05 EDT
Activation of the org.eclipse.core.runtime.products ext. pt. allows easy
customization of any RCP, such as the splash screen via the osgi.splashPath
entry in the config.ini file. Additionally to the route via the deployed product
the docs say, that the splash screen can alternatively be chosen via the
osgi.splashPath VM argument. Using the Eclipse run configurator such a VM
argument will not be used to show the corresponding splash picture, although the
other product features like windowImages and appName **are** correctly shown.
Please note that the corresponding osgi.splashLocation VM argument **does** work
also in the run configurator.
Comment 1 Jeff McAffer CLA 2004-09-08 11:45:04 EDT
the splash cannot be identified in the product because it needs to be shown way 
before the notion of "product" is available in the runtime.  The current 
technique of specifying the splash path in the config.ini allows products to 
brand their configuration.  Multiple products sharing a physical install can 
have different configurations and use the -configuration command line arg.

We are certainly open to options for improving this situation but don't really 
see any right now.  The addition of a -splash command line argument still does 
not solve the problem.
Comment 2 Daniel Krügler CLA 2004-09-08 11:49:50 EDT
So why does the corresponding osgi.splashLocation work instead of the
orgi.splashPath? I can't see the very difference....
Please note that I speak of the run configurator, not of normally deployed
products.
Comment 3 Jeff McAffer CLA 2004-09-08 11:52:46 EDT
Adding wassim just for fun and because the issue with running from a runtime 
workbench launch config is related to how PDE manages its config information.  

The challenge is in the searching for the plugin hosting the splash.bmp.  If 
osgi.splashPath is set to contain some absolute paths then this should work.  
If the paths are not fully qualified then we search.  The searching is relative 
to where the target's main is located and includes looking in "plugins" dirs 
etc.  The runtime workbench or workspace setup/layout is somehow inconsistent 
with the search code and the splash is not found.  

Comment 4 Wassim Melhem CLA 2004-09-08 12:23:53 EDT
It is very possible that something needs to be tweaked in the launcher to find 
the splash screen in the right plugin.

Jeff, if that is the only issue here, then please move the bug to PDE/UI.
Comment 5 Jeff McAffer CLA 2004-09-08 12:31:21 EDT
I'll go ahead and move but I am not sure that is the only issue.  There may be 
something we need to/can do in the runtime to help.

Note that this is part of the bigger issue of exposing more of the 
configuration info in the launchers.
Comment 6 Wassim Melhem CLA 2004-09-08 15:10:36 EDT
Jeff, from a PDE implementation point of view, this issue is trivial.
I just need a clarification/feedback.

1. Do we need to expose a branding section in the launcher where people could 
enter the id of the branding plugin,
OR
2. PDE should do it implicitly.  For example, given the product that they 
choose in the "Program To Run" on the main tab, we use the contributing plugin 
for that plugin as the plugin housing the splash screen?

In the case, where "an application is specified instead of a product on the 
main tab", we currently only show the splash screen if the application chosen 
is org.eclipse.ui.ide.workbench.  If we were to remove the limitation, then we 
would definitely need to have a branding section in the launcher because we 
would not know for sure in this instance where the splash screen is.

Thoughts?
Comment 7 Jeff McAffer CLA 2004-09-08 21:32:30 EDT
I think the issue is somewhat more general.  Developers do not have much 
control over the config.ini in the current setup.  Ideally we would have a 
situation where a developer could write their config.ini in a project and then 
identify it to PDE as a "template".  PDE would then use this template to 
produce the actual config.ini used in launching.  This would be on a per launch 
config basis.

Given this, PDE could then do transformations such as lookoing at the 
osgi.splashPath or osgi.framework.extensions values and substitute in the 
actual filepaths.

This addresses a raft of issues:
- how to manage additional system property settings defined by the runtime or 
other (user) plugins 
- putting the splash screen, framework extensions, ... in linked plugins (note 
that the runtime will have to do some work to enable this in normal launching 
scenarios)
Comment 8 Wassim Melhem CLA 2004-09-08 22:51:06 EDT
With the exception of the splash location in which we are addressing in this 
bug report, what other config.ini values does the user not have control over 
(directly or indirectly)?
Unless I'm unaware of something, I think the current launcher covers them all.
osgi.bundles is computed by PDE given the list of plugins chosen and whether 
update.configurator is chosen or not.

eclipse.application and eclipse.product are set given the user's choice on the 
first tab of the launch config.

osgi.framework is set by PDE given the location of the osgi plugin.

What other keys are there?

Although using a "template" config.ini could be an "alternative" to what we 
have, I don't think it should be the standard way of doing things.  People 
generally don't mind setting values in the launch configuration, but they do 
mind having to worry about and manage an extra file (config.ini).  

The "second" most popular comment I heard at EclipseCon that "there are just 
too many files to worry about", i.e. plugin.xml, build.properties, 
manifest.mf.  And now config.ini?  I am afraid that self-hosting is getting 
more and more complicated without us realizing it.

If there is a deficiency in the launch config that leaves some config.ini keys 
out of the user's control (implicitly or explicitly), please let me know what 
they are so we could incorporate them in one way or another in the UI.

By the way, the "most" popular comment I heard at EclipseCon was "Wassim, you 
don't look what I thought you were going to look like" :-)
Comment 9 Ed Burnette CLA 2004-09-08 23:10:30 EDT
Step back a sec. Why does launching need to fiddle with config.ini at all? It 
seems like that could be set up beforehand and simply used as is. If it's just 
to support the "Configuration" tab, I'd argue that tab should go somewhere 
else (like another page in the plug-in manifest editor). If it's so that all 
the plug-ins you listed in the "Plug-ins" tab can be listed out by name, I'd 
argue that's a pain in the petutty for RCP developers anyway who are left 
guessing about which plug-ins they need to copy to the deploy directory.

Ok, it's another file, no big deal if there's a good reason for it. If you 
want to get rid of a file, get rid of the preferenceCustomization .ini file 
and put all that in the config.ini or maybe in plugin.xml directly.
Comment 10 Jeff McAffer CLA 2004-09-08 23:11:19 EDT
For a complete and gory list of them, see the "Runtime options" help in the 
Plugin developer's guide "Other reference info" section.  There are alot and 
those are just the runtime ones.  You would never want to have a UI which did 
something special for all of these. You just want to get out of the middle and 
let people spec what they want and you copy/use.

As for osgi.bundles, you can spec bundles and the start level but not whether 
not the bundle is started (see comments in canonical config.ini)

When we add new keys we are basically hosed until PDE tools them.  for exampel, 
we just added osgi.framework.extensions.  Once we sort it out to ensure it is 
what we want we would tell you about it but in the mean time...

I fully agree re: simplicity.  If there is no template then PDE should continue 
to do the great job it does today and gen the whole thing.

Note that hiding the config.ini is not really doing product developers any 
favours.  They actually *need* to write their own config.ini.  With the current 
PDE support they are unable to test it using a runtime workbench.
Comment 11 Jeff McAffer CLA 2004-09-08 23:13:58 EDT
Re comment 9.  yes.  Under this approach we could actually just do 
a "config.ini editor" and allow people to point to a config.ini template.  I 
would not put it whith Plugin editing.  If anything it is more of a "product 
editor" function (if we had such a thing).
Comment 12 Wassim Melhem CLA 2004-09-09 00:15:08 EDT
> Why does launching need to fiddle with config.ini at all?
config.ini is read by the runtime upon startup, and PDE thus generates a 
config.ini and feeds it to the runtime with every runtime workbench launch.  
Therefore, it is not unnatural to give people the opportunity to manipulate 
the config.ini content at the launcher level.

>If it's just to support the "Configuration" tab,
It's actually the other way around.  The Configuration tab was created to 
allow people to tell PDE what to put in the osgi.bundles key in the config.ini

>get rid of the preferenceCustomization .ini file 
It is called plugin_customization.ini.  I'm not too crazy about this file 
either :-)

As for figuring out what plugins to choose etc., that is a separate issue 
which will be simplified when add such buttons as "Add RCP plugins" to the 
plugins tab of the launcher.  Same for the future deployment solution coming 
soon.

Note that with the current launcher, you NEVER have to list all your plugins 
on the config tab or even be aware of that tab.  PDE does what is best for 
you.  If update.config is among the plugins chosen on the plugins tab, then 
PDE puts core.runtime and update.configurator on the osgi.bundles key.  If 
not, then PDE automatically puts all the plugins on the osgi.bundles key.

I took a look at the Runtime options list in the Help content, and the list is 
pretty healthy, and evergrowing.  We certainly cannot contain them all in the 
launcher, and therefore the launcher must support launching with a "template" 
config.ini.  This request was filed by (my good friend) Pascal in bug 72274.

Incidentally, the same reason why PDE should not try to contain all the 
config.ini args in the launcher can be used to argue that PDE should not 
invest in an editor for the config.ini file.
The list of keys is long and evergrowing.  Having looked at the keys, there is 
no rhyme or reason or logical grouping of keys that we can use to come up with 
a sensible editor that provides add-on value.  The editor would just end up 
being labels and text fields, which is not much better than a text editor.

So before we start boiling the ocean, here are the three themes that are most 
important from a PDE point of view and how we will address them:

1. Launching for people who are not developing an RCP app should remain as 
simple as ever.  They must not have to worry about a config.ini, branding, etc.

2. RCP app developers should not unnecessarily be exposed to a config.ini file 
or a configuration tab.  They would only to do two extra things over group 1.  
The first thing would be choosing the list of plugins on the Plugins tab.  
This step will be simplified by the buttons referenced above.  They might also 
need to specify the location of the splash screen if PDE cannot correctly 
guess it.  That is what my questions in comment #6 were about.  Users don't 
need to list all the plugins on the config tab as PDE will correctly fill out 
the osgi.bundles key with every launch.

3. People who want to use a custom config.ini file should be allowed to do so 
and PDE should not stand in their way.  This would be addressed in bug 72274.

I think this would make most people happy, would not impede anyone's 
productivity and would not complicate self-hosting more than necessary.  

One question remains:
Given that in cases 1 and 2, PDE correctly guesses the osgi.bundles key for 
the launch, should the table of plugins on the config tab be removed?  The 
table might become unnecessary since the people who want a fine control over 
what plugins to start and at what level might be the same group as case 3, 
where they would supply a template config.ini
Comment 13 Ed Burnette CLA 2004-09-09 00:35:17 EDT
> config.ini is read by the runtime upon startup, and PDE thus
> generates a config.ini and feeds it to the runtime...
Well technically so is my main class file but PDE doesn't generate that. :)

I've never had a need for that table in the Configuration tab myself but maybe 
others have. I still find the option to clear the configuration area to be 
confusing (I'm sure you understand it but... :). Should all that be replaced 
by an option that says either 'generate a config file automatically' or 'use 
the following config file'.

If you had a config.ini editor it would only need to support the most common 
options in the GUI and anything uncommon could be handled by the source pane. 
For example, specifying the product name and a way to manage the plug-in list 
(either automatically or manually) might be good candidates for the GUI.
Comment 14 Wassim Melhem CLA 2004-09-09 00:52:38 EDT
>Should all that be replaced by an option that says either 'generate a config 
>file automatically' or 'use the following config file'.
Ideally, that is what I would like to see.  
The table, or more accurately the entire config tab, was originally added to 
allow the runtime team and other equally courageous people to mess around with 
the startup bundles.  Since they are now asking for a template config.ini, 
then the table becomes unnecessary.
The best way to figure out if any other people were using the table is to 
remove it without warning and see if anybody opens a blocker against us <g>.

>I still find the option to clear the configuration area to be confusing
The configuration area can now contain preferences and other metadata stored 
by plugins, so for testing, developers might need to clear that data every 
once in a while.  Plus the config area for a launch is in a deeply hidden 
location that cannot be easily located by mortals, so having the checkbox is 
pretty handy.
Comment 15 Jeff McAffer CLA 2004-09-09 09:29:49 EDT
The configuration tab can likely be gutted BUT..  the clear configuration area 
should remain.  As Wassim points out, there is lots of stuff in the 
configuration area.  The generated config.ini is just one element.

> Since they are now asking for a template config.ini, then the table becomes 
unnecessary.
I feel compelled to point out that from the start we wanted a template 
config.ini but we got a configuration tab.  Now we are reasserting our desire.

> One question remains:
Yes.  This would likely be fine.

> Incidentally, the same reason why PDE should not try to contain all the 
> config.ini args in the launcher can be used to argue that PDE should not 
> invest in an editor for the config.ini file.
There is an element of truth to this but I'm with Ed here.  There is 
significant enough known and potentially complicated function in config.ini 
that a specialized editor may make sense.  Note that the same characteristic 
cna be seen in the manifest.mf file.  The runtime and dependencies tabs expose 
higher level views of the contents of this file (thankfully) but the file 
itself is completely open ended.
Comment 16 Jeff McAffer CLA 2004-09-09 09:35:06 EDT
you might be interested in bug 73541
Comment 17 Wassim Melhem CLA 2004-09-13 23:24:13 EDT
The problem with the splash screen in the launcher has been fixed.

The config.ini issue will be addressed in bug 72274.