Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between pages "Rich Client Platform/FAQ" and "Callisto Coordinated Update Sites"

< Rich Client Platform(Difference between pages)
(What is the recommended target platform setup? Or: How can I build and run my RCP app against a different version of the Eclipse base?)
 
(Project Responsibilities -- edited to update project responsibiliies)
 
Line 1: Line 1:
Eclipse Rich Client Platform FAQ
+
== Purpose of this document ==
  
The following are '''Frequently Asked Questions''' ('''FAQs''') about the Eclipse Rich Client Platform.
+
This page is to document processes and procedures for providing improved coordination of update sites provided by the many Eclipse Projects. It's focus is on the 10 or so projects as part of the
For relevant tutorials, help topics, newsgroups, examples, and other resources, see the main [[Rich Client Platform|RCP page]].
+
[http://www.eclipse.org/projects/callisto.php Callisto simultaneous release] but some of the information would be helpful to any Eclipse adopter.
  
For general Eclipse FAQs, which address many RCP issues, see [[The Official Eclipse FAQs]].
+
Note: as of this initial writing, this document should be taken as a 'proposal', and as its reviewed and discussed and improved by others, it will become a 'plan'. And then, eventually, once the plan seems to be
 +
working, it will become a true "process and procedures" document.
  
<div id="whatis"/>
+
This document was started because of a cross-project agreement reached at the December, 2005, EMO Architecture Council Meeting. There, through their representatives to the Architecture Council, the projects of
==What is the Eclipse Rich Client Platform?==
+
the Callisto Release agreed to improve the cross-project update experience. The agreement was that I ([[User:David williams|David Williams]]) would coordinate the effort ... but the projects still had to do the work!
:While the Eclipse platform is designed to serve as an open tools platform, it is architected so that its components could be used to build just about any client application. The minimal set of plug-ins needed to build a rich client application is collectively known as the '''Rich Client Platform'''.
+
:For more details, see the main [[Rich Client Platform|RCP page]].
+
:Also note that Part 1 of the original [http://eclipse.org/whitepapers/eclipse-overview.pdf Eclipse whitepaper] also applies, and is a good high-level overview of what is available in the Rich Client Platform. Although it speaks of the Eclipse IDE (which is itself an RCP application), almost all of the functionality described in Part 1 is available in the RCP. Exceptions are the Workspace model and Team support, which are components in the IDE, not the RCP. Part 2's discussion of JDT is specific to the Eclipse IDE, however it is a good illustration of how an application would be structured on top of the RCP.
+
  
<div id="contents"/>
+
This document is in no way to "take over" any of the Eclipse base project [http://www.eclipse.org/platform/index.php Update Team's] function, proposals, or responsibilities.
==What is included in the Rich Client Platform?==
+
:The Eclipse Rich Client Platform consists of the following components:
+
<table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2">
+
<tr><th>Component<br>
+
      </th>
+
      <th>Description<br>
+
      </th>
+
      <th>Plug-ins<br>
+
      </th>
+
      <th>Documentation<br>
+
      </th>
+
    </tr>
+
    <tr>
+
      <td>Eclipse Runtime<br>
+
      </td>
+
      <td>Provides the foundational support for plug-ins, extension points and
+
extensions (among other facilities).&nbsp; The Eclipse runtime is built on
+
top of the [http://osgi.org/osgi_technology OSGi framework].
+
      </td>
+
      <td>org.eclipse.core.runtime<br>
+
org.eclipse.osgi<br>
+
org.eclipse.osgi.services</td>
+
      <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/main.html Platform Core home page]<br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/runtime.htm Runtime overview]<br>
+
Article: [http://eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html Notes on the Eclipse Plug-in Architecture]<br>
+
      </td>
+
    </tr>
+
    <tr>
+
      <td>SWT<br>
+
      </td>
+
      <td>The Standard Widget Toolkit. SWT is designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented
+
      </td>
+
      <td>org.eclipse.swt<br>
+
+ platform-specific fragments<br>
+
      </td>
+
      <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/main.html Platform SWT home page]<br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/swt.htm SWT]<br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/SWT_Resources.html Getting Started]<br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/faq.html SWT FAQ]<br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets SWT code snippets]<br>
+
[http://eclipse.org/articles/main.html#SWT SWT Articles]
+
      </td>
+
    </tr>
+
    <tr>
+
      <td>JFace<br>
+
      </td>
+
      <td>A UI framework, layered on top of SWT, for handling many common UI programming tasks.
+
      </td>
+
      <td>org.eclipse.jface
+
      </td>
+
      <td>[[JFace]]
+
      </td>
+
    </tr>
+
    <tr>
+
      <td>Workbench</td>
+
      <td>The Workbench builds on top of the Runtime, SWT and JFace to provide a highly scalable, open-ended, multi-window environment for managing views, editors, perspectives (task-oriented layouts), actions, wizards, preference pages, and more. <br>
+
The Workbench is sometimes called the Generc Workbench, to distinguish it from the IDE Workbench facilities defined in the org.eclipse.ui.ide plug-in.
+
      </td>
+
      <td>org.eclipse.ui<br>
+
org.eclipse.ui.workbench
+
      </td>
+
      <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/main.html Platform UI home page]<br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/workbench.htm Plugging into the workbench],[http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/dialogs.htm  Dialogs and wizards], [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/wrkAdv.htm Advanced workbench concepts]<br>
+
[http://eclipse.org/articles/main.html#ui Workbench and JFace Articles]<br>
+
  
      </td>
+
It is also <b>not to add to their responsibilities</b>. The goal for Callisto release is to use and "push the limits" of the current capabilities and technologies of the Update Manager. Of course, bugs and feature
    </tr>
+
requests may
    <tr>
+
result, and that is fine, but I wanted to be clear this proposal is not for anything fundamentally new ... it is just to document what's already possible, and make sure it is coordinated and carried out with "best
      <td>
+
practices" in mind.
Other prerequisites for the Workbench
+
      </td>
+
      <td>Support for XML expressions language, commands, and help core content model.<br>
+
      </td>
+
      <td>org.eclipse.core.expressions<br>
+
org.eclipse.core.commands<br>
+
org.eclipse.help
+
      </td>
+
      <td><br>
+
      </td>
+
    </tr>
+
    </table>
+
  
 +
If I understand Wiki's at all committers can use the "talk" feature to provide feedback. Others may open a bugzilla on the Cross Project bugzilla component.
  
<div id="footprint"/>
+
== Use cases ==
  
==What is the disk footprint for the Rich Client Platform?==
+
There are 3 primary use cases that cross-project, coordinated update sites provide:
:As of Eclipse 3.1.1, the combined disk footprint for the Rich Client Platform, including the above plug-ins, startup.jar and the eclipse.exe executable, is about 6.6 Meg.
+
  
 +
1. Allow end-users to install some minimum "platform" and from that be able to use Update Manager to install all of the Callisto release, just by going to just one update site and selecting just one thing.
  
<div id="resourcesPlugin"/>
+
<del>2. Allow committers and developers to install an "SDK" version of Callisto, to be used while developing their own plugins.</del>
==Is the resources plug-in (org.eclipse.core.resources) considered part of the Rich Client Platform?==
+
:No. The workspace resource model provided by the org.eclipse.core.resources plug-in is not considered part of the Rich Client Platform. While this is the underlying data model for the Eclipse IDE, the RCP makes no assumptions about the underlying data model of the application being built. The data model could just as well be files in the local filesystem, a remote database, an RDF data store, or anything else. If it makes sense for the application, '''org.eclipse.core.resources''' can be included and used as the application's data model, but this is not required. Much effort was put into Eclipse 3.0 to remove the dependencies on '''org.eclipse.core.resources''' from the generic workbench. Any resource dependencies (for example, the New Project, Folder and File wizards, and the Resource Navigator, Tasks and Problems views), were considered IDE-specific and factored out into the IDE plugin ('''org.eclipse.ui.ide''').
+
 
+
  
<div id="idePlugin"/>
+
<del>3. Allow adopters to provide their own update sites, and "point to" appropriate sites to pick up prerequisite features. While there is nothing in this Callisto effort to support this directly, Callisto should serve as a good
==Is the IDE plug-in (org.eclipse.ui.ide) considered part of the Rich Client Platform?==
+
example of "best practices" for other projects to follow.</del>
:No.  The '''org.eclipse.ui.ide''' plug-in is layered on top of the generic workbench ('''org.eclipse.ui''') and defines the application for the Eclipse IDE, on top of which sit the other IDE components such as the Java Development Tools (JDT), Plug-in Development Environment (PDE), Debugger, and Team support. The DE instantiates the generic workbench, configuring it with IDE-specific menu and toolbar items, and adding IDE-specific views, preference pages and other extensions. The IDE uses the workspace resource model as its underlying data model.
+
:The org.eclipse.ui.ide plug-in, and the extensions defined within it, are not designed to be reused in other RCP applications.
+
  
<div id="otherComponents"/>
+
== Objectives and Constraints ==
==What other Eclipse components can be used in constructing RCP applications?==
+
:Here is a list of some of the reusable components in the broader Eclipse codebase that can be incorporated into RCP applications.
+
  
<table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2">
+
Besides promoting the use cases given above, there are other objectives and constraints to meet:
    <tr>
+
      <th>Component<br>
+
      </th>
+
      <th>Description<br>
+
      </th>
+
      <th>Plug-ins<br>
+
      </th>
+
      <th>Documentation<br>
+
      </th>
+
    </tr>
+
    <tr>
+
      <td>Help<br>
+
      </td>
+
      <td>Web-app-based Help UI, with support for dynamic content.<br>
+
      </td>
+
      <td>org.eclipse.help.appserver<br>
+
org.eclipse.help.base<br>
+
org.eclipse.help.ui<br>
+
org.eclipse.help.webapp<br>
+
org.eclipse.tomcat<br>
+
org.apache.lucene</td>
+
      <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-help-home/main.html Platform Help home page]<br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/help.htm Plugging in help]<br>
+
      </td>
+
    </tr>
+
    <tr>
+
      <td>Update Manager<br>
+
      </td>
+
      <td>Allows users to discover and
+
install updated versions of products and extensions.</td>
+
      <td>org.eclipse.update.configurator<br>
+
org.eclipse.update.core<br>
+
org.eclipse.update.scheduler<br>
+
org.eclipse.update.ui<br>
+
+ platform-specific fragments<br>
+
      </td>
+
      <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-update-home/main.html Platform Update home page]<br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_update.htm Updating a product or extension]<br>
+
      </td>
+
    </tr>
+
    <tr>
+
      <td>Text<br>
+
      </td>
+
      <td>Framework for building high-function text editors.<br>
+
      </td>
+
      <td>org.eclipse.text<br>
+
org.eclipse.jface.text<br>
+
org.eclipse.workbench.texteditor</td>
+
      <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-text-home/main.html Platform Text home page]<br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/editors_jface.htm Text editors and platform text]<br>
+
      </td>
+
    </tr>
+
    <tr>
+
      <td>Forms<br>
+
      </td>
+
      <td>Flat look control library and multi-page editor framework (used in PDE editors).<br>
+
      </td>
+
      <td>org.eclipse.ui.forms</td>
+
      <td>Article: [http://www.eclipse.org/articles/Article-Forms/article.html Eclipse Forms: Rich UI for the Rich Client]</td>
+
    </tr>
+
    <tr>
+
      <td>Welcome Page (aka Intro)</td>
+
      <td>Initial welcome experience and guided assistance.<br>
+
      </td>
+
      <td>org.eclipse.ui.intro<br>
+
      </td>
+
      <td>Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_intro.htm Intro support]</td>
+
    </tr>
+
    <tr>
+
      <td>Cheat Sheets<br>
+
      </td>
+
      <td>A Cheat Sheet guides the user through a long-running, multi-step task.<br>
+
      </td>
+
      <td>org.eclipse.ui.cheatsheets<br>
+
      </td>
+
      <td>Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_cheatsheets.htm Cheat Sheets]</td>
+
    </tr>
+
    <tr>
+
      <td>Resources<br>
+
      </td>
+
      <td>Workspace resource model, with managed projects, folders and files.<br>
+
      </td>
+
      <td>org.eclipse.core.resources<br>
+
      </td>
+
      <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/main.html Platform Core home page]<br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/resInt.htm Resources overview]</td>
+
    </tr>
+
    <tr>
+
      <td>Console</td>
+
      <td>Extensible console view.<br>
+
      </td>
+
      <td>org.eclipse.ui.console<br>
+
      </td>
+
      <td>Javadoc: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/console/package-summary.html org.eclipse.ui.console], [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/console/actions/package-summary.html org.eclipse.ui.console.actions]</td>
+
    </tr>
+
    <tr>
+
      <td>Outline and Properties views</td>
+
      <td>Outline and Properties views<br>
+
      </td>
+
      <td>org.eclipse.ui.views<br>
+
      </td>
+
      <td>TBD</td>
+
    </tr>
+
    <tr>
+
      <td>Graphical Editing Framework (GEF)</td>
+
      <td>Framework for building graphical editors. Includes Draw2D, a vector graphics framework.<br>
+
      </td>
+
      <td>org.eclipse.draw2d<br>
+
org.eclipse.gef<br>
+
      </td>
+
      <td>[http://www.eclipse.org/gef GEF home page]<br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/gef-home/overview.html?cvsroot=Tools_Project Overview], [http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/gef-home/developer/faq.html?cvsroot=Tools_Project FAQ]<br>
+
      </td>
+
    </tr>
+
    <tr>
+
      <td>Eclipse Modeling Framework (EMF) and Service Data Objects (SDO)</td>
+
      <td>EMF
+
is a modeling framework and code generation facility for building
+
tools and other applications based on a structured data model.&nbsp;
+
SDO is a framework that simplifies and unifies data application
+
development in a service oriented arcecture (SOA).</td>
+
      <td>[http://dev.eclipse.org/viewcvs/indextools.cgi/org.eclipse.emf/plugins/ EMF plug-in list from CVS]<br>
+
      </td>
+
      <td>[http://www.eclipse.org/emf/ EMF home page]<br>
+
Overviews:[http://download.eclipse.org/tools/emf/scripts/docs.php?doc=references/overview/EMF.html EMF], [http://download.eclipse.org/tools/emf/scripts/docs.php?doc=references/overview/EMF.Edit.html EMF.Edit], [http://www-106.ibm.com/developerworks/java/library/j-sdo/ SDO]</td>
+
    </tr>
+
</table>
+
  
<div id="gettingStarted"/>
 
  
==How do I get started with RCP?==
+
=== Eclipse.org Infrastructure constraints ===
:The [[Rich Client Platform#tutorials|tutorials]] by Ed Burnette and Jeff Gunther] are good starting points.  See also the [[Rich Client Platform#examples|examples]] and the [[Rich Client Platform#help|suggested help topics]].
+
  
<div id="target"/>
+
The distribution of Eclipse projects must fit in to the current disk space and "mirror system".
==What is the recommended target platform setup?  Or: How can I build and run my RCP app against a different version of the Eclipse base?==
+
:With the default setup of the Eclipse SDK, plug-ins are developed against the same plug-in configuration used by the IDE itself.  However, it is possible to configure the IDE to build, run and deploy against a different version of the eclipse base, via the Plug-in Development > Target Platform preference page.  Configuring the target platform is highly recommended in order to avoid introducing unwanted dependencies on IDE plug-ins into your RCP app.
+
:For more details, see the [http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.pde.doc.user/guide/pde_configuring.htm "Concepts"] help topic in the PDE Guide.  The tutorial in the [[RCP Book]] also walks you through this process.
+
:For a recommended setup, use the following steps.  We assume the Eclipse SDK (aka the IDE) is already installed, e.g. in c:\eclipse.
+
:# Go to the [http://download.eclipse.org/eclipse/downloads/ Platform downloads page].
+
:# Pick the build you want to use as your RCP target (e.g. the 3.2 M6 milestone build).
+
:# In the RCP SDK section (not the Eclipse SDK, Platform SDK, or RCP Binary sections) download the RCP SDK for your platform. This contains just the base RCP plug-ins for that platform.
+
:# Extract it to a different directory than the IDE's (e.g. c:\eclipse-RCP-SDK).
+
:# Optionally, if you want to deploy to other platforms, download the Delta Pack (the link is at the bottom of the RCP SDK section).  This contains the platform-specific plug-ins for all platforms.  Extract it to the same location as the RCP SDK (say OK to any prompts to overwrite files).
+
:# Run the IDE (e.g. c:\eclipse\eclipse.exe).
+
:# Go to Window > Preferences > Plugin-Development > Target Platform, and configure the location to be the eclipse subdirectory of the RCP SDK install (e.g. c:\eclipse-RCP-SDK\eclipse).  Note: if you type or paste the path, you'll need to press the Reload button.
+
:# The list of plug-ins on the Plug-ins tab should update to show the RCP SDK plug-ins; other plug-ins like those for JDT and PDE should not appear.
+
:Now, any plug-in projects in your workspace will build and run against the RCP SDK plug-ins rather than the IDE's.
+
:PDE currently supports two versions back for plug-in development.  That is, with Eclipse 3.2 you can develop 3.0 plugins and launch 3.0 systems, but not 2.1 or earlier.
+
:If you are developing against the same version as the Eclipse SDK, there is new support in since 3.2 M5 that simplifies setting up the Target Platform for RCP development, and makes it easier to incrementally include other plug-ins from the SDK build.
+
:# Go to Window > Preferences > Plugin-Development > Target Platform.
+
:# In the "Pre-defined Targets" section at the bottom, choose one of the "Base RCP" entries, e.g. "Base RCP (with Source)" and press the "Load Target" button.
+
:# The list of plug-ins on the Plug-ins tab still shows all SDK plug-ins, but only the RCP base plug-ins are checked; other plug-ins like those for JDT and PDE should not be checked.  Only checked plug-ins constitute your target.  Unchecked plug-ins are ignored.
+
  
<div id="newLook"/>
+
* Disk space.
<div id="r21pres"/>
+
** JAR files should not be duplicated to avoid wasting bandwidth and disk space on our mirrors.
<div id="presentations"/>
+
** The site.xml file can be configured to include JARs from various projects and still work with mirrors. See Distributed Bandwidth, below.
  
==Will an RCP application inherit the Eclipse IDE look?==
+
* Mirroring.
:By default, RCP apps use the same presentation as the IDE, but with different defaults (e.g. tabs are "traditional"). However, other presentation implementations are available.  For example, the R2.1 presentation available in the IDE can also be used by RCP apps; it is provided in the <code>org.eclipse.ui.presentations.r21</code> plug-in.
+
** Callisto must make the best use of our mirror sites.
:For instructions on how to deploy the R2.1 presentation, see [[RCP Custom Look and Feel]].
+
** Our mirror sites should have '''at least''' 24-hours of exclusive access to the Callisto files before releasing them to the public. This is done by waiting for Webmaster approval before sending files to download.eclipse.org.
:The default presentation of views and editors, and the overall window layout, is also configurable in several ways. See the following entries for more details.
+
** Webmaster will need to advise mirrors ahead of time, so they can anticipate the rush.
  
<div id="windowImage"/>
+
* Bandwidth.
 +
** Co-ordinate with the Webmaster to "open the floodgates" on the bandwidth ahead of time.
 +
** R3.1 required additional bandwidth for a foundation-hosted, separate mirror site. We will need this again.
  
==How can I change the window icon in my application?==
 
:[http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def.htm Define a product] via the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def_extpt.htm products extension point] and specify the <code>windowImages</code> property to refer to two image files, a 16x16 one and a 32x32 one. 
 
:It is best to specify both, since a 16x16 icon is typically used in the window trim, and a 32x32 icon is typically used in the OS's application switcher (e.g. Alt+Tab on Windows). If only one is specified, it is scaled up or down as needed, which can result in poor quality.
 
:For example, the [[RCP Browser Example|Browser Example]] has the following in its plugin.xml:
 
<pre>
 
<extension point="org.eclipse.core.runtime.products" id="product">
 
  <product
 
    name="%productName"
 
    application="org.eclipse.ui.examples.rcp.browser.app">
 
    <property
 
      name="windowImages"
 
      value="icons/eclipse.gif,icons/eclipse32.gif"/>
 
    ...
 
  </product>
 
</extension>
 
</pre>
 
 
 
:For more details, see the [http://eclipse.org/articles/Article-Branding/branding-your-application.html Branding Your Application] article.
 
  
<div id="customPrefs"/>
+
=== Coordination verus Unification ===
  
==How can I change the default UI settings for the perspective bar location, fast view bar location, etc?==
+
For ease-of-use, there should be something of a "central site" that should make it easy to "get started" with "all" of Callisto. But, in the Eclipse spirit of allowing projects to "do their own thing" each project should also have their
:Several UI settings such as the perspective bar location, fast view bar location, traditional vs. curvy tabs, etc., are controlled by preferences on the UI plug-in. These have default values defined by the generic workbench. However, the product can override these default values using the product preference customization mechanism.
+
own
:[http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def.htm Define a product] via the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def_extpt.htm products extension point] and add the following property:
+
discovery and update sites as well. This allows the central "get started" site to be one-size fits all, but still allow projects to offer even more, special features such as tools, examples, etc., that may not be part of
<pre>
+
their "main' deliverables available via Callisto, not to mention have their own schedule for fixes and point releases.  
<property
+
  name="preferenceCustomization"
+
  value="plugin_customization.ini"/>
+
</pre>
+
:Then create a file called <code>plugin_customization.ini</code>, in the same directory as the <code>plugin.xml</code> file, with contents of the form:
+
<pre>
+
<pluginId>/<preferenceName>=<preferenceValue>
+
</pre>
+
:For example, to show the perspective bar and fast view bar on the left, and to use curvy tabs, add the following to the <code>plugin_customization.ini</code> file:
+
<pre>
+
org.eclipse.ui/DOCK_PERSPECTIVE_BAR=left
+
org.eclipse.ui/SHOW_TEXT_ON_PERSPECTIVE_BAR=false
+
org.eclipse.ui/initialFastViewBarLocation=left
+
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
+
</pre>
+
:For a list of public preferences available on the UI plug-in and their valid values, see the interface [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchPreferenceConstants.html org.eclipse.ui.IWorkbenchPreferenceConstants].
+
:For more details, see the [http://eclipse.org/articles/Article-Branding/branding-your-application.html Branding Your Application] article and the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_configproduct.htm Customizing a product] section in Help.
+
  
<div id="actionSetOrder"/>
+
=== Update Policies ===
==How can I get action set menus to appear in the right order, between my app's main menus?==
+
:When adding main menus to the menu manager in your WorkbenchAdvisor's fillActionBars method, add an "additions" group marker where you'd like action sets to appear.
+
<pre>
+
menuBar.add(fileMenu);
+
menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+
menuBar.add(helpMenu);
+
</pre>
+
 
+
<div id="multiViews"/>
+
==Can multiple instances of the same view be made to appear at the same time?==
+
:Yes.  See IWorkbenchPage.showView(String primaryId, String secondaryId, int mode).
+
:The <view> element in the plugin.xml must also specify allowMultiple="true".
+
:Be sure to use a different <code>secondaryId</code> for each instance, otherwise <code>showView</code> will find any existing view with the same primaryId and secondaryId rather than showing a new one.
+
:To pass instance-specific data to the view, you will need to cast the resulting IViewPart down to the concrete view class and call your own setData method.
+
:Note that views with a secondaryId will not match placeholders specifying just the primaryId. In a perspective factory, placeholders can be added for multi-instance views using the format <code>primaryId + ':' + secondaryId</code>, where '*' wildcards are supported.
+
  
<div id="deployment"/>
+
Some sites (corporations) can establish an "corporate" update site, which may have its own policies about what updates when, etc. The process and procedures here should do nothing to interfere with that
==How can I deploy my RCP app?==
+
capability.
:[[Rich Client Platform#tutorials|Part 1 of Ed Burnette's RCP tutorial]] discusses this in the section entitled '''Running it outside of Eclipse'''. In Eclipse 3.1, there is also a product export wizard to simplify this process.
+
  
<div id="troubleshooting"/>
+
== Fundamentals ==
  
==When I try running, nothing happens, or it complains that the application could not be found in the registry, or that other plug-ins are missing. How can I track the problem down?==
+
=== Distributed Storage ===
:Try running first from within Eclipse using the Runtime Workbench (3.0 and 3.0.1) or Eclipse Application (3.1) launch configuration (Run > Debug...). Ensure that the application's plug-in(s) and all its prerequisites are selected in the Plug-ins tab. The easiest way is to select "Choose plug-ins and fragments to launch from the list", press Deselect All, check off the application's plug-in(s), and press Add Required Plug-ins. In 3.1, there is also a Validate Plug-in Set button to check that all prerequisites have been satisfied, without having to launch first. On the Main tab, be sure that the correct product or application is selected (using a product is preferred -- see the [http://eclipse.org/articles/Article-Branding/branding-your-application.html Branding Your Application] article).
+
  
:When running a deployed RCP application (not running from within Eclipse), ensure that the config.ini file in the configuration directory points to the correct product or application extension via the eclipse.product or eclipse.application entry (using a product is preferred -- see the [http://eclipse.org/articles/Article-Branding/branding-your-application.html Branding Your Application] article).  Either all plug-ins need to be specified in the osgi.bundles entry of the config.ini, or the '''org.eclipse.update.configurator''' plug-in should be included to discover all available plug-ins the first time the application is run.
+
Each project will still have its own disk space and area on Eclipse, and will still be responsible for providing jarred features and plugins there, as they would for their own update site.
  
:If eclipse fails silently, look in the configuration and/or workspace directories for a .log file. If you use the eclipse.exe launcher (or equivalent on other platforms) it will tell you where to find any relevant log file.
+
=== Distributed Bandwidth ===
  
:Try adding -consolelog, -debug and -clean to the command line (as program arguments, not VM arguments). For example, to run the browser example with an explicitly specified product:
+
The features (and archive tags, if needed) will be specified using the new "find the closest mirror"  [https://bugs.eclipse.org/bugs/show_bug.cgi?id=99412#c23 luxury support] provided by the Eclipse.org
<pre>
+
download.php script.
d:\j2sdk1.4.2_01\bin\java org.eclipse.core.launcher.Main -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug
+
</pre>
+
:or
+
<pre>
+
eclipse -vm d:\j2sdk1.4.2_01\bin\java -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug
+
</pre>
+
:-consolelog causes any log entries to be sent to the console as well (to get a console window, be sure to use java as the VM instead of javaw).
+
:-debug causes Eclipse to log extra information about plug-in dependency problems (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=75648 here] for more background).
+
:-clean forces Eclipse to re-read all the plugin.xml files rather than using its cached representation of the plug-in registry.
+
 
+
:While these options are helpful for debugging, note that there is a performance penalty for -debug and -clean, so it is not recommended that they be used in the final product.
+
  
:For other troubleshooting hints, see the <b>Troubleshooting</b> section of the [http://eclipse.org/articles/Article-RCP-1/tutorial1.html RCP Tutorial, part 1].
+
<cite>
 +
<b>Issue: </b> We (any volunteers?) should begin to collect approximate sizes and make rough estimates of required bandwidth for various scenarios, to make sure our mirroring system will suffice ... or we should panic now!?
  
<div id="orphanPlugins"/>
+
Here is WebMaster's plan to make this happen:
 +
* Go mirror shopping to get new mirror sites - especially in US and Asia
 +
* Substantially increase bandwidth a few days ahead of release
 +
* Allow mirrors 24 hours to sync up
 +
* Provision a separate, dedicated high-speed mirror within those 24 hours
 +
* Boom
 +
</cite>
  
==My own RCP plug-ins are contributed by a feature. Why is the update manager complaining that my configuration is invalid?==
+
=== The Get-Started Platform Download ===
:If you're using a feature only for the plug-ins you write, the update manager does not check dependencies on "orphan" plug-ins (i.e. plug-ins not contributed by a feature) so the configuration appears invalid. You will need to either:
+
:* include all the plug-ins (yours and the RCP plug-ins) into your feature, or
+
:* create another feature for the RCP plug-ins.
+
  
<div id="nonResourceEditors"/>
+
There will be one ZIP provided (by the Eclipse Project), that corresponds to the minimum amount of Eclipse that enables the update manager to work. This is, literally, the Eclipse Platform ... NOT including JDT and
==Are editors tied to the workspace resource model or to the broader notion of files?==
+
PDEThis feature will have the Callisto site as its implanted discovery site. It will still have 'eclipse' as its update site as it comes from the Eclipse Project (the update site being where "fixes" can be obtained
:NoThe concept of an editor in the workbench and the corresponding types (IEditorPart, EditorPart, IEditorInput) are not tied to the workspace resource model, or even to the notion of files (whether in the workspace or the file system). Editors can be used for any kind of model, and can be textual or graphical.  
+
automatically by update manager). All other features, from all other projects, will have their own project's discovery and update sites implanted in their features, not the Callisto site). The few features available from
 +
the central Callisto site will have discovery sites for all 10 Callisto projects.
  
:The Text component provides support for text editors.  See the entry for the Text component in the [[#otherComponents | list of optional components]] above. See also the [[Rich Client Platform#Examples|RCP text editor example]].
+
<cite>
 +
<b>Issue: </b>In this day and age, I'm surprised we do not offer "updates" (or "get started") in the form of a WebStart object. I think we do not only due to people constraints ... so, if there is participation from
 +
the community (including the community of Callisto projects :) then we might be able to improve the user's experience so they'd never have to see another zip file again?
 +
</cite>
  
:Eugene Ostroukhov has published [http://www.jroller.com/page/Zhou/20040215#eclipse_editors_not_tied_to a useful blog entry] describing how to create a non-file-based editor that connects to a database. See also [http://www.jroller.com/page/Zhou/20040414#update_on_custom_editor_inputs this update].
+
<b>Note: </b>We should be explicit that the Callisto Update Site, contrary to the name, must begin with a 3.2 based Platform Feature ... there is no capability planned to update from a 3.1 based environment. Likewise, there are no plans to update from an 3.2 M4 environment to a 3.2 M5 environment. We will plan to test updating from an M5 environment to an M6 environment.
  
<div id="swingIntegration"/>
+
=== The User's Experience ===  
==How can I integrate my existing Swing components into an RCP application?==
+
:Yes, see [http://www.eclipse.org/swt/faq.php#swinginswt this SWT FAQ entry].  Note, however, that the SWT_AWT bridge does not currently work on all platforms, e.g. Mac ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=67384 bug 67384]).
+
:See also the EclipseZone discussion [http://www.eclipsezone.com/eclipse/forums/t45697.html "Integrating Swing into Eclipse RCPs"]. 
+
:Also take a look at [http://swingwt.sourceforge.net/ SwingWT], an SWT-based implementation of the Swing API.
+
  
==How do I get my app to use Windows XP themes?==
+
==== The View from Update Manager Dialog ====
:See [http://www.eclipse.org/swt/faq.php#xpthemes this SWT FAQ entry].  Note that the manifest file must have the name javaw.exe.manifest or java.exe.manifest, not eclipse.exe.manifest (since eclipse.exe only launches the splash screen and then invokes the Java VM).  The manifest file must be in the jre\bin folder for the VM you use to launch Eclipse.
+
  
<div id="keyBindings"/>
+
The current plan is, for this Callisto Release, to simply list Features "by Project" [[Image:UpdateProto2.gif]].
  
==How can I define key bindings for commands?==
+
=== Central Callisto Sites ===
:See the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/wrkAdv_keyBindings.htm "Workbench key bindings" help topic] and [http://www.magma.ca/~pollockd/despumate/bindingsHowTo.html Douglas Pollock's article on key bindings].
+
  
==How can I get my views and editors to coordinate with each other?==
+
==== Release Site ====
:See the article [http://www-128.ibm.com/developerworks/java/library/os-ecllink/index.html "Make your Eclipse applications richer with view linking"] by Chinmay Pandit.
+
For the Callisto releases and milestones, there will be one central "discovery" site, such as
:You can also track part activation and other lifecycle using [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IPartService.html IPartService], [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IPartListener.html IPartListener] and [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IPartListener2.html IPartListener2].
+
http://download.eclipse.org/callisto/releases
:To track part lifecycle from within an existing view or editor, use the part service on the part's containing IWorkbenchPage:
+
<code>
+
  getSite().getPage().addPartListener(listener);
+
</code>
+
:From outside the page (e.g. from an action added to the window in the ActionBarAdvisor), use the part service on the IWorkbenchWindow:
+
<code>
+
  IWorkbenchWindow window = actionBarAdvisor.getActionBarConfigurer().getWindowConfigurer().getWindow();
+
  window.getPartService().addPartListener(listener);
+
</code>
+
:Be sure to remove the part listener in the appropriate dispose method.
+
  
<div id="helpPlugins"/>
+
Note: Its desriable to avoid any reliance on "aliases" as it makes mirroring more difficult to manage.
  
==Which plug-ins are needed for the Eclipse Help system?==
+
<del>Also, we should be explicit, there is no plans to provide a big-huge-zip that contains all the Callisto projects ... its expected to be provided entirely via update manager.</del> There has been some recent talk of providing "big zips" made easy to get by the use of a form on a web page, and then the user would get, in one download, a zipped up version of their selections. If this is done, would be handled by the Eclipse Foundation (not this cross-project group).
:See [[#otherComponents|What other Eclipse components can be used in constructing RCP applications?]].  Be sure to include the '''org.eclipse.tomcat''' plug-in since the dependency on it is indirect. The '''org.eclipse.help.ui''' plug-in requires the '''org.eclipse.help.appserver''' plug-in, which defines the '''org.eclipse.help.appserver.server''' extension point.  The '''org.eclipse.tomcat''' plug-in adds an extension to this extension point.  So although '''org.eclipse.tomcat''' is required, it's not found by adding all prerequisites of '''org.eclipse.help.ui''', and needs to be added manually.
+
:See also section 8 of the [http://www.eclipsecon.org/2005/presentations/EclipseCon2005_Tutorial8.pdf "Developing Eclipse Rich Client Applications" tutorial] from EclipseCon 2005.
+
:See also the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/help.htm "Plugging in help"] help topic.
+
:See also the "Adding Help" chapter in the [[RCP Book]].
+
  
==How can I add the Eclipse Update Manager to my application?==
+
 
:See section 9 of the [http://www.eclipsecon.org/2005/presentations/EclipseCon2005_Tutorial8.pdf "Developing Eclipse Rich Client Applications" tutorial] from EclipseCon 2005.
+
 
:See also the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_update.htm "Updating a product or extension"] help topic.
+
==== Weekly Integration Update Sites ====
:See also the "Adding Update" chapter of the [[RCP Book]].
+
 
 +
For those projects wishing to participate, there will be a site for integration builds:
 +
http://download.eclipse.org/callisto/interim
 +
 
 +
==== Working Staging Area ====
 +
 
 +
Lastly, there will be a working directory of
 +
http://download.eclipse.org/callisto/staging
 +
that is used exclusively by central "Callisto developers" in the days or weeks ahead of the other update "releases" to test that the central features and site.xml is ready before they are copied over to the "public" sites.
 +
 
 +
== User Interface Consistency ==
 +
 
 +
=== Web site consistency ===
 +
All update sites will have an "index" file, appropriate for viewing with a web browser ... and we need to work on giving this a consistent look.
 +
(currently, some projects have none, some have highly detailed slowly performing ones with jars available for download for some reason I do not understand, but [http://download.eclipse.org/webtools/updates/ some :)] have some really nice looking ones.
 +
 
 +
=== Update Manager View Consistency ===
 +
All update sites will provide a "site.xml" file, with a consistent level of abstraction for separately installable features. (Remember, not literally every feature provided by a project has to be "visible" to the update site
 +
user ... many can be "included" as being required by other features, and installed automatically when other features selected).
 +
 
 +
These will be consistent and follow the following UI guidelines:
 +
 
 +
; Project Name spelled out, followed by initial in parenthesis, if desired. Such as
 +
: Graphical Editing Framework (GEF)
 +
: Eclipse Modeling Framework (EMF)
 +
 
 +
; Version numbers only at feature level, not project level categories. Such as
 +
: Draw2d 3.2 (not GEF 3.2).
 +
 
 +
=== Predictable, consistent, long term URL's for update sites ===
 +
 
 +
There's currently great inconsistency here. I guess as long as its permanent, and long term, there's no harm. But looks sloppy.
 +
 
 +
For example, GEF is in Eclipse, and has no update site of its own. [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=128348 128348]]
 +
 
 +
Some sites have a version number in their URL, such as tools/ve/updates/1.0/ and some do not, such as
 +
tools/emf/updates/. The latter is correct, and important with the new qualified versioning conventions.
 +
 
 +
So, I suggest, this is the time to get consistent, but will need some care and thought to be sure it doesn't "break" anything.
 +
 
 +
== Planned Tests and Trial runs ==
 +
 
 +
During February, initial test versions will be created to download "all of Callisto" to see how it does,
 +
from several parts of the world. Its not expected these will be "usable" versions of Callisto.
 +
 
 +
By the end of the M5 period (3/3), there will be a usable version of Callisto available via update manager.
 +
(This is the version that can (will) be pointed to during EclipseCon, as an example of what's coming).
 +
 
 +
After M5, there will be "updates" (what's the right word for updates to updates?) to the milestones site for each Release Candidate leading up to the release.
 +
 
 +
Note: after M5, projects may elect to use the weekly I-build site. But this part of this proposal is sort of experimental, and will need some investigation, to be sure this is no great extra work for anyone ... but the idea is that for developers that are building on top of other features, it's very handy to be able to update pre-reqs in a frequent, easy way. That is, in other words, these "integration sites" are not literally an end-user requirement, so will get a little less attention.
 +
 
 +
== Project Responsibilities ==
 +
 
 +
This document and this "coordinated effort" is in no way meant to substitute for the projects themselves understanding update manger and update sites and actively
 +
contributing [[callisto_update_people | the necessary people]] to ensure the
 +
correct end result.
 +
 
 +
The following are some requirements placed on the projects participating in Callisto (most should not be anything "new", but some will be, and feasibility and need will have to be evaluated as we go).
 +
 
 +
* provide [[project update sites]], with jars, urls, site.xml files, etc. pretty much as has been done before ... but, might be a good time to change past decisions (for example, GEF does not have its own update site, for ... historical reasons, I guess).  The Callisto site.xml file will "point to" these project-level update sites, so, basically, each project must have a working update site before Callisto can have a working update site. See [[project update sites]] for more details.
 +
 
 +
* provide to "[[callisto build]]" a list of minimum features for inclusion in "runtime" version of Callisto (and, please, minimum for "end users" to take advantage of your functionality). It would include 'end user' documentation, but not 'isv documentation nor JavaDoc.
 +
 
 +
<del>* provide to [[User:David williams|David williams]] list of features for inclusion in "SDK" version of Callisto (should be no duplicates with first list, the SDK features should "require" runtime versions, so that someone may install runtime first, then install SDK later, without re-downloading or installing the runtime versions). These SDK features dos not have to be ALL your projects features, but should, at least, include 'source' and 'isv documentation'.</del>
 +
 
 +
* provide accurate "feature size" so the update time and progress can be accurate. This is just good practice, but since I've noticed many don't sizes in their updates, I thought I would call it out here, since this will be more important in Callisto.
 +
 
 +
* (maybe) provide signed jars, so users get some assurance they are installing verifiable Callisto features. This is more important now, using the "nearest mirror" techniques, since users may not know exactly where the jar is coming from. [I just say "maybe" because I do not think any of us know the technical steps or requirements for this.]
 +
 
 +
** <b>ISSUE: </b> If we have signed jars, it would be "nice" to have a "signed by Eclipse Foundation" corporate certificate, which I mention here, because I think to get such a certificate is a little time consuming (and not free :)
 +
 
 +
== Help Wanted ==
 +
 
 +
Besides the main deliverables for Callisto, the participating projects are asked to provide some assistance in testing the Callisto update site and, if possible, there are many tools that could be contributed to help. For example,
 +
 
 +
* a "peek" tool which doesn't actually update anything, but which could, say, get the date and size headers for all the jars that would be requested by update manager, just for a warm reassuring feeling that all is (still) available as expected in a quick and painless way.
 +
 
 +
* specialist to help with security, signed jars would likely be helpful.
 +
 
 +
* specialists to help test and tweak update performance would likely not be refused.
 +
 
 +
* etc.
 +
 
 +
== Bugzilla Queries ==
 +
 
 +
The following are some handy bugzilla queries related to update manager.
 +
 
 +
[https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Eclipse&product=Platform&component=Update&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&field0-0-0=noop&type0-0-0=noop&value0-0-0=&order=bugs.bug_severity,bugs.target_milestone%2Cbugs.target_milestone%2Cbugs.bug_severity%2Cmap_components.name%2Cbugs.bug_severity%2Cbugs.target_milestone%2Cbugs.bug_severity%2Cmap_components.name%2Cbugs.bug_severity%2Cmap_reporter.login_name%2Cmap_reporter.login_name%2Cmap_components.name%2Cbugs.target_milestone%2Cbugs.bug_severity%2Cbugs.target_milestone%2Cbugs.resolution%2Cmap_components.name%2Cmap_assigned_to.login_name%2Cbugs.bug_status%2Cbugs.target_milestone%2Cbugs.target_milestone%2Cbugs.target_milestone%2Cbugs.bug_severity%2Cbugs.bug_status%2Cbugs.target_milestone%2Cbugs.priority%2Cbugs.bug_id&query_based_on=  All Opened]
 +
 
 +
 
 +
[https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Eclipse&product=Platform&component=Update&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailreporter1=1&emailtype1=substring&email1=david_williams&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=  All Opened by David Williams :) since starting to play with Callisto Updates.]
 +
 
 +
== Tips and Tricks ==
 +
 
 +
In addition to the written works in the reference section, I often some across little tidbits in bug reports, newsgroups, etc., and hope we can collect some of them on our [[Callisto Build and Update Tips and Tricks]] page. (So I can find them in the future :)
 +
 
 +
== Related Links for Further Enjoyable Reading and Reference ==
 +
 
 +
[http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/product_update.htm Basics of Update Sites]
 +
 
 +
[http://www.eclipse.org/articles/Article-Update/keeping-up-to-date.html How To Keep Up To Date]
 +
 
 +
[http://www.eclipse.org/eclipse/platform-core/documents/plugin-versioning.html Plugin Versioning Proposal]
 +
 
 +
[http://www.eclipse.org/eclipse/platform-core/documents/update.html Update Site Proposal]
 +
 
 +
[http://www.eclipse.org/eclipse/platform-core/documents/3.1/run_from_jars.html Jarring Plugins]
 +
 
 +
[[Development_Conventions_and_Guidelines]]
 +
 
 +
[[JAR_Signing]]

Revision as of 15:15, 10 April 2006

Purpose of this document

This page is to document processes and procedures for providing improved coordination of update sites provided by the many Eclipse Projects. It's focus is on the 10 or so projects as part of the Callisto simultaneous release but some of the information would be helpful to any Eclipse adopter.

Note: as of this initial writing, this document should be taken as a 'proposal', and as its reviewed and discussed and improved by others, it will become a 'plan'. And then, eventually, once the plan seems to be working, it will become a true "process and procedures" document.

This document was started because of a cross-project agreement reached at the December, 2005, EMO Architecture Council Meeting. There, through their representatives to the Architecture Council, the projects of the Callisto Release agreed to improve the cross-project update experience. The agreement was that I (David Williams) would coordinate the effort ... but the projects still had to do the work!

This document is in no way to "take over" any of the Eclipse base project Update Team's function, proposals, or responsibilities.

It is also not to add to their responsibilities. The goal for Callisto release is to use and "push the limits" of the current capabilities and technologies of the Update Manager. Of course, bugs and feature requests may result, and that is fine, but I wanted to be clear this proposal is not for anything fundamentally new ... it is just to document what's already possible, and make sure it is coordinated and carried out with "best practices" in mind.

If I understand Wiki's at all committers can use the "talk" feature to provide feedback. Others may open a bugzilla on the Cross Project bugzilla component.

Use cases

There are 3 primary use cases that cross-project, coordinated update sites provide:

1. Allow end-users to install some minimum "platform" and from that be able to use Update Manager to install all of the Callisto release, just by going to just one update site and selecting just one thing.

2. Allow committers and developers to install an "SDK" version of Callisto, to be used while developing their own plugins.

3. Allow adopters to provide their own update sites, and "point to" appropriate sites to pick up prerequisite features. While there is nothing in this Callisto effort to support this directly, Callisto should serve as a good example of "best practices" for other projects to follow.

Objectives and Constraints

Besides promoting the use cases given above, there are other objectives and constraints to meet:


Eclipse.org Infrastructure constraints

The distribution of Eclipse projects must fit in to the current disk space and "mirror system".

  • Disk space.
    • JAR files should not be duplicated to avoid wasting bandwidth and disk space on our mirrors.
    • The site.xml file can be configured to include JARs from various projects and still work with mirrors. See Distributed Bandwidth, below.
  • Mirroring.
    • Callisto must make the best use of our mirror sites.
    • Our mirror sites should have at least 24-hours of exclusive access to the Callisto files before releasing them to the public. This is done by waiting for Webmaster approval before sending files to download.eclipse.org.
    • Webmaster will need to advise mirrors ahead of time, so they can anticipate the rush.
  • Bandwidth.
    • Co-ordinate with the Webmaster to "open the floodgates" on the bandwidth ahead of time.
    • R3.1 required additional bandwidth for a foundation-hosted, separate mirror site. We will need this again.


Coordination verus Unification

For ease-of-use, there should be something of a "central site" that should make it easy to "get started" with "all" of Callisto. But, in the Eclipse spirit of allowing projects to "do their own thing" each project should also have their own discovery and update sites as well. This allows the central "get started" site to be one-size fits all, but still allow projects to offer even more, special features such as tools, examples, etc., that may not be part of their "main' deliverables available via Callisto, not to mention have their own schedule for fixes and point releases.

Update Policies

Some sites (corporations) can establish an "corporate" update site, which may have its own policies about what updates when, etc. The process and procedures here should do nothing to interfere with that capability.

Fundamentals

Distributed Storage

Each project will still have its own disk space and area on Eclipse, and will still be responsible for providing jarred features and plugins there, as they would for their own update site.

Distributed Bandwidth

The features (and archive tags, if needed) will be specified using the new "find the closest mirror" luxury support provided by the Eclipse.org download.php script.

Issue: We (any volunteers?) should begin to collect approximate sizes and make rough estimates of required bandwidth for various scenarios, to make sure our mirroring system will suffice ... or we should panic now!?

Here is WebMaster's plan to make this happen:

  • Go mirror shopping to get new mirror sites - especially in US and Asia
  • Substantially increase bandwidth a few days ahead of release
  • Allow mirrors 24 hours to sync up
  • Provision a separate, dedicated high-speed mirror within those 24 hours
  • Boom

The Get-Started Platform Download

There will be one ZIP provided (by the Eclipse Project), that corresponds to the minimum amount of Eclipse that enables the update manager to work. This is, literally, the Eclipse Platform ... NOT including JDT and PDE. This feature will have the Callisto site as its implanted discovery site. It will still have 'eclipse' as its update site as it comes from the Eclipse Project (the update site being where "fixes" can be obtained automatically by update manager). All other features, from all other projects, will have their own project's discovery and update sites implanted in their features, not the Callisto site). The few features available from the central Callisto site will have discovery sites for all 10 Callisto projects.

Issue: In this day and age, I'm surprised we do not offer "updates" (or "get started") in the form of a WebStart object. I think we do not only due to people constraints ... so, if there is participation from the community (including the community of Callisto projects :) then we might be able to improve the user's experience so they'd never have to see another zip file again?

Note: We should be explicit that the Callisto Update Site, contrary to the name, must begin with a 3.2 based Platform Feature ... there is no capability planned to update from a 3.1 based environment. Likewise, there are no plans to update from an 3.2 M4 environment to a 3.2 M5 environment. We will plan to test updating from an M5 environment to an M6 environment.

The User's Experience

The View from Update Manager Dialog

The current plan is, for this Callisto Release, to simply list Features "by Project" File:UpdateProto2.gif.

Central Callisto Sites

Release Site

For the Callisto releases and milestones, there will be one central "discovery" site, such as

http://download.eclipse.org/callisto/releases

Note: Its desriable to avoid any reliance on "aliases" as it makes mirroring more difficult to manage.

Also, we should be explicit, there is no plans to provide a big-huge-zip that contains all the Callisto projects ... its expected to be provided entirely via update manager. There has been some recent talk of providing "big zips" made easy to get by the use of a form on a web page, and then the user would get, in one download, a zipped up version of their selections. If this is done, would be handled by the Eclipse Foundation (not this cross-project group).


Weekly Integration Update Sites

For those projects wishing to participate, there will be a site for integration builds:

http://download.eclipse.org/callisto/interim

Working Staging Area

Lastly, there will be a working directory of

http://download.eclipse.org/callisto/staging

that is used exclusively by central "Callisto developers" in the days or weeks ahead of the other update "releases" to test that the central features and site.xml is ready before they are copied over to the "public" sites.

User Interface Consistency

Web site consistency

All update sites will have an "index" file, appropriate for viewing with a web browser ... and we need to work on giving this a consistent look. (currently, some projects have none, some have highly detailed slowly performing ones with jars available for download for some reason I do not understand, but some :) have some really nice looking ones.

Update Manager View Consistency

All update sites will provide a "site.xml" file, with a consistent level of abstraction for separately installable features. (Remember, not literally every feature provided by a project has to be "visible" to the update site user ... many can be "included" as being required by other features, and installed automatically when other features selected).

These will be consistent and follow the following UI guidelines:

Project Name spelled out, followed by initial in parenthesis, if desired. Such as
Graphical Editing Framework (GEF)
Eclipse Modeling Framework (EMF)
Version numbers only at feature level, not project level categories. Such as
Draw2d 3.2 (not GEF 3.2).

Predictable, consistent, long term URL's for update sites

There's currently great inconsistency here. I guess as long as its permanent, and long term, there's no harm. But looks sloppy.

For example, GEF is in Eclipse, and has no update site of its own. [128348]

Some sites have a version number in their URL, such as tools/ve/updates/1.0/ and some do not, such as tools/emf/updates/. The latter is correct, and important with the new qualified versioning conventions.

So, I suggest, this is the time to get consistent, but will need some care and thought to be sure it doesn't "break" anything.

Planned Tests and Trial runs

During February, initial test versions will be created to download "all of Callisto" to see how it does, from several parts of the world. Its not expected these will be "usable" versions of Callisto.

By the end of the M5 period (3/3), there will be a usable version of Callisto available via update manager. (This is the version that can (will) be pointed to during EclipseCon, as an example of what's coming).

After M5, there will be "updates" (what's the right word for updates to updates?) to the milestones site for each Release Candidate leading up to the release.

Note: after M5, projects may elect to use the weekly I-build site. But this part of this proposal is sort of experimental, and will need some investigation, to be sure this is no great extra work for anyone ... but the idea is that for developers that are building on top of other features, it's very handy to be able to update pre-reqs in a frequent, easy way. That is, in other words, these "integration sites" are not literally an end-user requirement, so will get a little less attention.

Project Responsibilities

This document and this "coordinated effort" is in no way meant to substitute for the projects themselves understanding update manger and update sites and actively contributing the necessary people to ensure the correct end result.

The following are some requirements placed on the projects participating in Callisto (most should not be anything "new", but some will be, and feasibility and need will have to be evaluated as we go).

  • provide project update sites, with jars, urls, site.xml files, etc. pretty much as has been done before ... but, might be a good time to change past decisions (for example, GEF does not have its own update site, for ... historical reasons, I guess). The Callisto site.xml file will "point to" these project-level update sites, so, basically, each project must have a working update site before Callisto can have a working update site. See project update sites for more details.
  • provide to "callisto build" a list of minimum features for inclusion in "runtime" version of Callisto (and, please, minimum for "end users" to take advantage of your functionality). It would include 'end user' documentation, but not 'isv documentation nor JavaDoc.

* provide to David williams list of features for inclusion in "SDK" version of Callisto (should be no duplicates with first list, the SDK features should "require" runtime versions, so that someone may install runtime first, then install SDK later, without re-downloading or installing the runtime versions). These SDK features dos not have to be ALL your projects features, but should, at least, include 'source' and 'isv documentation'.

  • provide accurate "feature size" so the update time and progress can be accurate. This is just good practice, but since I've noticed many don't sizes in their updates, I thought I would call it out here, since this will be more important in Callisto.
  • (maybe) provide signed jars, so users get some assurance they are installing verifiable Callisto features. This is more important now, using the "nearest mirror" techniques, since users may not know exactly where the jar is coming from. [I just say "maybe" because I do not think any of us know the technical steps or requirements for this.]
    • ISSUE: If we have signed jars, it would be "nice" to have a "signed by Eclipse Foundation" corporate certificate, which I mention here, because I think to get such a certificate is a little time consuming (and not free :)

Help Wanted

Besides the main deliverables for Callisto, the participating projects are asked to provide some assistance in testing the Callisto update site and, if possible, there are many tools that could be contributed to help. For example,

  • a "peek" tool which doesn't actually update anything, but which could, say, get the date and size headers for all the jars that would be requested by update manager, just for a warm reassuring feeling that all is (still) available as expected in a quick and painless way.
  • specialist to help with security, signed jars would likely be helpful.
  • specialists to help test and tweak update performance would likely not be refused.
  • etc.

Bugzilla Queries

The following are some handy bugzilla queries related to update manager.

All Opened


All Opened by David Williams :) since starting to play with Callisto Updates.

Tips and Tricks

In addition to the written works in the reference section, I often some across little tidbits in bug reports, newsgroups, etc., and hope we can collect some of them on our Callisto Build and Update Tips and Tricks page. (So I can find them in the future :)

Related Links for Further Enjoyable Reading and Reference

Basics of Update Sites

How To Keep Up To Date

Plugin Versioning Proposal

Update Site Proposal

Jarring Plugins

Development_Conventions_and_Guidelines

JAR_Signing

Back to the top