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

Bug 76491

Summary: Create a all platforms in one download
Product: [Eclipse Project] Platform Reporter: Pascal Rapicault <pascal>
Component: RelengAssignee: Platform-Releng-Inbox <platform-releng-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: birsan, clongfield, dev, ed.burnette, jean-michel_lemieux, jed.anderson, jeffmcaffer, n.a.edgar
Version: 3.0   
Target Milestone: ---   
Hardware: PC   
OS: Windows 2000   
Whiteboard:

Description Pascal Rapicault CLA 2004-10-18 15:10:06 EDT
Today, if I want to ship an RCP app for all the platforms, I have to download
all the RCP binaries and unzip them on top of each other deleting all the files
that are duplicated (note that this is a problem for the executables).

This process is not very user friendly and makes the export for any platform
different than the one you are running on difficult.

It would be good to create one of the two things:
- a Super RCP SDK drop containing in complement of the regular plugins all the
fragments and all the executables for all the platforms.
- A "all fragments" drop containing only all the fragments and all the
executables for all the platform.

Note that the same things could be done for other products.
Comment 1 Sonia Dimitrov CLA 2004-10-18 17:12:10 EDT
I think we will need to look at legal requirements.
Comment 2 Adrian Cho CLA 2004-10-19 17:33:11 EDT
There should not be any issues.  Each of the plug-ins and features are self-
contained with their own legal documentation and at this stage, all the 
platforms use the same default license.
Comment 3 Pascal Rapicault CLA 2004-10-22 09:48:08 EDT
*** Bug 76725 has been marked as a duplicate of this bug. ***
Comment 4 Ed Burnette CLA 2004-10-22 11:05:34 EDT
I hear this request a lot. With a Swing application it's pretty trivial, you 
just package the jar(s) and a little launcher script (maybe a .bat file for 
Windows and a /bin/sh script for Linux/Unix). Distributing a multi-platform 
RCP application is much harder currently.

I do think a distinction should be made between full blown RCP applications 
and simpler non plug-in based applications that just use SWT (and optionally, 
JFace). The simpler configuration should help lower the barrier for Eclipse 
technology adoption even more.
Comment 5 Ed Burnette CLA 2004-10-22 11:07:37 EDT
Bug 76725 has some more notes on this including a pointer to Jeff's proposal:

http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-
home/documents/deployment_packs.html
Comment 6 Ed Burnette CLA 2004-10-22 11:20:43 EDT
Sorry for 3 posts in a row but I have a question after reading the Deployment 
Packs proposal. It says: "Further there is still a need for platform specific 
RCP SDK drops to carry the appropriate source."

Am I reading this right that you think there needs to be *both* a unified 
multi-platform deployment package *and* 8 little platform specific packages?

Why not have one Runtime package that contains all the runtime for all the 
platforms, and one SDK package that contains the contents of the Runtime 
package plus all the source for all the platforms, and get rid of all the 
other RCP packages? Yes, it would be much bigger than any one of the current 
RCP drops but smaller than the sum total (due to sharing of common ws, arch, 
and other plug-ins), and much easier for the multi-platform developer. And it 
would help unclutter the download page.
Comment 7 Pascal Rapicault CLA 2004-10-22 11:31:06 EDT
In order to limit the number of download and reduce the confusion I think we 
want 9 downloads.

The first 8 ones are what we have today has "RCP Runtime Binary".
The 9th one is the "RCP SDK" including all the fragments for all the platforms 
with all the source and all the executable.

The rationale for is:
The RCP Binary would be comparable to the JRE for a given platform. It is just 
a building block that you get and you can run RCP apps against.
The RCP Software Development Kit, given the multi-platform nature of RCP, 
should come with all the necessary artefacts for you to create an application 
for any platform supported by RCP.
Comment 8 Ed Burnette CLA 2004-10-22 13:30:28 EDT
I don't think comment #7 works for two reasons:

1. You have to include an all-platforms download that does not include source. 
Presumably you don't want source and development doc in your commercial 
application download because of the extra space and because end users don't 
need the source.

2. I don't see the rationale for the 8 small downloads. The JRE isn't included 
in this (that's a discussion for another day).

I'm thinking it should be like this:
  1 SWT Runtime Binary (multi-platform combo package for deployment)
  1 SWT SDK (adds source and programmer doc, is this needed? *)
  1 RCP Runtime Binary (multi-platform combo package for deployment)
  1 RCP SDK (adds source and programmer doc, is this needed? *)
  1 Platform Runtime Binary (multi-platform combo package for deployment)
  1 Platform SDK (adds source and programmer doc)
  9 Eclipse SDK (one for each platform including source and programmer doc)

*I'm not *really* sure you need all the SDK packages since presumably 
developers already have the Eclipse SDK or Platform SDK which includes all 
that.

This would satisfy the initial request stated in this bugzilla entry. And 
also, I know it's not the primary concern but it would have the nice effect of 
reducing the number of packages on the download page from 67 to 27.

The rationale for leaving the Eclipse SDK in single-platform downloads is that 
most people only develop on one platform (but deploy on many). You could argue 
that Platform SDK should remain in single-platform packages for the same 
reason. Or you could argue that Eclipse SDK should be 1 multi-platform package 
to reduce the downloads to 19.
Comment 9 Jed Anderson CLA 2004-10-22 13:43:10 EDT
In my experience RCP apps are not based just on SWT.  I tend to use SWT and just
enough of the workbench to get the perspectives, views, editors, preferences,
etc.  So just an SWT based RCP distro isn't much help because you still have to
go back and add in plugins by hand.

I feel this could be better addressed by tooling and the Super RCP drop.

Given the Super RCP drop the tool could perform all of the nasty cut/paste work
required to assemble the distribution for any given platform/ws.  This work is
very PDE like, and I would assume that the final product would end up in the PDE.

Also, it is important to note that RCP developers often distribute their own
version of some of the workbench classes to filter out some of the root
functionality in the workbench.  Performing this overlay requires in-depth
knowledge of the Eclipse classloading and I could see it being difficult for a
novice Eclipse developer to get it right.  A tool could recognize this situation
and set up the classpaths accordingly.

Finally, I think it is important to note that if we created a drop with all of
the platform specific fragments a tool could use the drop together with a
vanilla Eclipse drop to create the Super RCP drop.  This might be the least
bandwidth intensive solution because users will already have the vanilla Eclipse
distribution installed.
Comment 10 Pascal Rapicault CLA 2004-10-22 14:10:09 EDT
Jed, the problem you indicate of redefining some classes is interesting, but if 
we were to provide such a feature then it breaks the fact that eclipse is an 
integration platform given that any piece could be redefined.
I think that some changes like that should be contributed back to the 
appropriate components. 
Note that you may want to enter a feature enhancement against Platform Runtime.

Ed I think for now we should focus on the RCP case and on the Eclipse SDK 
(although we may want to do that later). I was using the JRE to do a parallel 
nothing more nothing less.
I don't see why you need to have a RCP Binary (all platform), when you have a 
RCP SDK (all platform), since the first one can be derived from the second by 
PDE.
Comment 11 Jed Anderson CLA 2004-10-22 14:19:23 EDT
Pascal, my friend, I completely agree.  However, the time it take for a feature
request, implementation and release is 6 months to a year.  My previous clients
had only three months!  When you have no time you have no choice but to hack away.

So I guess my point is that I agree with you academicly, but pratical issues
force such garrish measures.  
Comment 12 Jeff McAffer CLA 2004-10-22 15:23:22 EDT
so many comments, so little time...

Observations
- The runtime binaries are largely for show.  They could be deleted
- People tend to develop, test, debug on one machine.  They expect to have 
source.
- not everyone deploys
- SWT only is interesting but not a mainline usecase just as OSGi only, etc etc 
is not.
- Overlaying/hacking/changing Eclipse plugins is sometimes required but there 
are no plans to make/adjust tooling to directly support this.
- the deployment pack (as I propose) contains ALL fragments, not just those 
interesting for RCP

Conclusions:
- ignore the RCP binary drops
- RCP SDK drops stay as-is.  They are used by developers to write, test, debug.
- people interested in deploying (RCP or IDE) get the Deployment Pack

Separate issue:
- The current dowloads pages are a disaster.  They grew without control and are 
in dire need of rework.  Even a simple reorientation to pick a platform first 
then pick what you want helps alot.  The problem is not the number of downloads 
but rather figuring out what you want.  In most cases people know the platform
(s) they need and so can narrow quite quickly.  The real solution is some sort 
of smart tech where the user selects the platform and function they want and 
either the client or server figures out what to download.  But that is for 
another day...
Comment 13 Nick Edgar CLA 2004-10-22 15:29:03 EDT
The Deployment Packs proposal speaks in terms of using features to describe the
platform-specific dependencies, which implies not only the use of
org.eclipse.update.configurator, but a broader buy-in to the Eclipse Update
mechanisms such as features.

What if the RCP app does not want to use the eclipse feature mechanism, or use
some other install/update technology?  Is it possible to create a deployment
pack independently of the feature mechanism?

I see the problem as having two parts:
1) How to simplify the distribution of platform-specific fragments and other
pieces outside of regular the plug-ins and fragments (startup.jar, eclipse.exe,
etc.).
2) How to choose which platform-specific fragments should be part of the runtime
configuration.  

These both need to be addressed.  The proposal addresses (1) by putting them all
in the same build.  But using features and Update mechanisms is only one way to
address (2). 

Pragmatically, I'm fine with having an Update-specific solution for now, but it
would be nice if plug-ins and fragments could describe their own
platform-specific constraints.  A lightweight configurator (possibly built into
the runtime -- see bug 66451) could then select the appropriate plug-ins and
fragments at runtime. 

Was there some reason why we didn't originally make plug-ins and fragments
self-describing?  I can imagine that this was perhaps a conscious decision,
since the same fragment can get reused in multiple configurations.  For example,
the org.eclipse.swt.motif fragment is used in the Aix, HPUX, Solaris and Linux
Motif configurations.  But would it be a bad idea to move this into the
fragment's own manifest? e.g. ws="motif" os="aix|hpux|linux|solaris" (or better
yet, omit the os attribute entirely).

Comment 14 Ed Burnette CLA 2004-10-22 15:29:48 EDT
Pascal, The reason for having the source-less deployment package was so the 
developer could simply unpack the deployment package, overlay their own plug-
ins and branding, and repackage it. It's low tech but it works, and having the 
multi-platform deployment package simplifies the process greatly over what 
they currently have to do.

I think you're thinking ahead a bit about PDE export wizards subsetting and 
copying files automatically to populate a deployment directory. If those 
wizards existed and they were smart enough to know what is source and what is 
developer doc then you're right, you wouldn't need the source-less packages 
because the wizards could derive it. Hmm.... taking your idea a step further, 
all you would really need is a multi-platform combo package for the Eclipse 
SDK since that contains everything, and all the subsets can be derived from it.

Jed, the SWT packages contain only SWT and SWT fragments, for use by programs 
like Azureus which don't need plug-ins. The RCP packages contain all the Core 
RCP plugins including Core Runtime, SWT and JFace and Workbench and so forth. 
You don't need to add anything by hand if you stay within that set.

Jeff, SWT-only is a mainline usecase, trust me on this.
How can you write, test, and debug with only an RCP SDK drop? It doesn't have 
a JDT.
...
I think it would be a good exercise to create some personaes (can't believe 
I'm saying this) that typify the various categories of Eclipse users and 
developers. Then you can design your packages to target these personaes as 
appropriate. For example, one (call him "Phil") could be your typical Java 
programmer who is only using Eclipse on one platform as an IDE for arbitrary 
Java programs. Another one ("Henri") is leading a team developing a suite of 
commercial closed-source RCP applications for deployment on multiple 
architectures. "Oliver" is using SWT in a popular open source project as a 
replacement for Swing and doesn't need any of the runtime. "Jim" is writing 
plug-ins based largely on Swing components for external customers who already 
have Eclipse, "Rose" is developing in-house plug-ins to extend the IDE and 
only cares about Windows, and "Ed" is a loose cannon who spends all his time 
reading -dev mailing lists and writing bugzilla updates (sorry, couldn't 
resist :).
Comment 15 Pascal Rapicault CLA 2004-10-22 15:42:30 EDT
Nick, in the case described here, the features are only used at development 
time to drive PDE and simplify the way people describe the content of their 
product. In any case they are not shipped and therefore not used at runtime.
This is the same technique than the one we are using today to build the RCP 
drops for eclipse (see http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.sdk-
feature/features/).
Comment 16 Jeff McAffer CLA 2004-10-22 16:23:36 EDT
Nick (comment 13)
The Deployment Pack as described has only one feature and that is for the 
launcher.  This is more of as input to PDE build (which most easilly 
understands feature-based descriptions of what to build).  There is no need to 
actually deploy the features or use update.confirgurator.

Interestingly, it may be relevant to have at least more feature which captures 
all of the RCP plugins.  This would essentially be as an example.  For example, 
the feature that includes SWT is a pain to do as you have to enumerate every 
SWT fragment with OS qualifiers etc.

As for having fragments be self-describing, yes, this could be interesting.  
The idea originally was that the decision to install a fragment was one thing 
and the behaviour another.  

In any event, if you give PDE build a set of features with all the right mark 
up, it will automagically create the right thing for each target platform.  It 
is really quite wonderful but is still somewhat hard to get right.

Ed (comment 14)
Not sure if we are agreeing but the only new thing I am proposing is a single 
zip that contains ALL fragmetns for ALL platforms and NO source.  People 
interested in deploying simply overlay this on their current target and 
deploy.  This is true whether they are doing RCP, IDE, ....  Other Eclipse 
components with fragments etc could do likewise.

SWT-only:  I agree that many people are interested in just SWT.  

RCP SDK: The Eclipse use of the term "SDK" is as "the wad of stuff you need 
when you are developing plugins for a particular configuration".  It does NOT 
include/imply the tooling.  It just happens that the most convenient path for 
people right now is for them to get the "Eclipse SDK" and run it.  In fact, the 
model, to be extensible and consistent would have them download (sigh) the 
binary platform, JDT and PDE to create an IDE and then download the appropriate 
SDK for their needs (IDE, RCP, GEF, ...) and use that as their target.

As for your users, only Henri will be interested in the Deployment Pack.  
Everyone else is either not deploying Eclipse bits or is deploying to people 
who already have Eclipse.  Of course, Ed should be interested but... ;-)
Comment 17 Jean-Michel Lemieux CLA 2004-10-25 11:34:08 EDT
To support Jeff's comment about being harry - oh, I mean about only supporting
Henry's use-case is that fundamentaly the Eclipse platform RCP is defined as:

"The platform for building Eclipse based applications using the Eclipse Workbench." 

Other configurations, although technically possible and definitly interesting,
aren't the current focus of the RCP and thus of this bug report. But as Jed has
said, there may be real projects using only JFace and SWT but at some point they
will want plug-ins :) 

The deployment pack would also benefit applications not using the workbench, for
example, SWT + JFace + Runtime.

 
Comment 18 Sonia Dimitrov CLA 2004-12-20 15:37:05 EST
Delta pack (deployment pack) available as if 3.1 M4 build:  
http://download.eclipse.org/downloads/drops/S-3.1M4-200412162000/eclipse-RCP-
3.1M4-delta-pack.zip