platform-core-home/documents/update.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2, Wed Feb 18 18:30:02 2004 UTC revision 1.3, Mon Nov 22 18:40:33 2004 UTC
# Line 1  Line 1 
1    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN2">
2  <html>  <html>
3  <head>  <head>
4  <title>Eclipse Update Site: Eating our own dog food</title>  <title>Update Site Proposal</title>
5          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6          <link rel="stylesheet" href="http://eclipse.org/default_style.css" type="text/css">      <meta http-equiv="Content-Style-Type" content="text/css">
7        <link href="http://dev.eclipse.org/default_style.css" rel="stylesheet" type="text/css">
8  </head>  </head>
9    <body bgcolor="#ffffff">
10    
11  <body bgcolor="#FFFFFF" text="#000000">  <table width="100%">
12    <tr><td style="background:#0080C0"><b><span style="color:white">Proposal</span></b></td></tr>
13    </table>
14  <h1>Eclipse Update Site Proposal</h1>  <h1>Eclipse Update Site Proposal</h1>
15  <blockquote>  <blockquote>
16    <p><b>Summary</b> <br>    <p><b>Summary</b> <br>
# Line 20  Line 24 
24      configurations to meet all the demands. This proposal details a structure      configurations to meet all the demands. This proposal details a structure
25      which enables Eclipse component providers to contribute their features and      which enables Eclipse component providers to contribute their features and
26      plug-ins and for Eclipse consumers to efficiently select, download and install      plug-ins and for Eclipse consumers to efficiently select, download and install
27      their components of interest.<br>      their components of interest.</p>
28      Last Modified: 1100 February 17, 2004</p>    <p>    Last Modified: November 22, 2004</p>
29  </blockquote>  </blockquote>
30    
31  <h2>Problem Definition</h2>  <h2>Problem Definition</h2>
32  <p>The base Eclipse function is currently distributed as roughly the following  <p>The base Eclipse function is currently distributed as roughly the following
33    zip files</p>     zip files (as of 3.1M3)</p>
34  <ul>  <ul>
35    <li>binary Platform (one per target OS/WS) (7 x ~24MB)</li>    <li>RCP Binary (one per target OS/WS) (8 x ~5MB)</li>
36    <li>binary JDT (one OS/WS independent) (~12MB)</li>    <li>RCP SDK (one per target OS/WS) (8 x ~18MB)</li>
37    <li>SDK zips includind source and all doc (one per target OS/WS) (7 x ~80MB)</li>    <li>Platform Binary (one per target OS/WS) (8 x ~25MB)</li>
38      <li>Platform SDK (one per target OS/WS) (8 x ~56MB)</li>
39      <li>JDT Binary (OS/WS independent) (~15MB)</li>
40      <li>JDT SDK (OS/WS independent) (~27MB)</li>
41      <li>PDE Binary (OS/WS independent) (~4MB)</li>
42      <li>PDE SDK (OS/WS independent) (~5MB)</li>
43      <li>Full Eclipse SDK zips including source and all doc (one per target OS/WS)
44        (8 x ~88MB)</li>
45    <li>assorted other zips (e.g., examples, webdav, ...)</li>    <li>assorted other zips (e.g., examples, webdav, ...)</li>
46  </ul>  </ul>
47  <p>Eclipse tools and technology project downloads are available separately and  <p>Eclipse tools and technology project downloads are available separately and
# Line 47  Line 58 
58  <p>The main issues with the current setup are:</p>  <p>The main issues with the current setup are:</p>
59  <ul>  <ul>
60    <li>Does not promote the easy provision, acquisition and use of plug-ins from    <li>Does not promote the easy provision, acquisition and use of plug-ins from
61      a variety of souces. The basic premise of Eclipse is that plug-in consumers       a variety of sources. The basic premise of Eclipse is that plug-in consumers
62      can gather a set of interesting plug-ins, put them together in an Eclipse platform  
63      configuration and enjoy an integrated seemless environment. Currently plug-in      can gather a set of interesting plug-ins, put them together in an Eclipse
64        platform  configuration and enjoy an integrated seemless environment. Currently
65        plug-in
66      producers provide their plug-ins in various forms and the lack of any managed      producers provide their plug-ins in various forms and the lack of any managed
67      acquisition mechanism forces potential users to grovel around for plug-ins      acquisition mechanism forces potential users to grovel around for plug-ins
68    
69      and then hope that they got the right thing.</li>      and then hope that they got the right thing.</li>
70    <li>Does not scale as the scope of Eclipse increases. The current approach addresses    <li>Does not scale as the scope of Eclipse increases. The current approach addresses
71      the provision/acquisition problem by packaging collections of interesting      the provision/acquisition problem by packaging collections of interesting
# Line 64  Line 78 
78      double the Eclipse SDK size). Following the current model, there would be      double the Eclipse SDK size). Following the current model, there would be
79      one of these uber-zips per target OS/WS.</li>      one of these uber-zips per target OS/WS.</li>
80    <li>Does not scale as the Eclipse use scenarios increase. As the range of people    <li>Does not scale as the Eclipse use scenarios increase. As the range of people
81      using Eclipse broadens, there will be increasing demand for alternative collections       using Eclipse broadens, there will be increasing demand for alternative
82      of plug-ins. These will contain either more or less than the Eclipse SDK. While      collections
83      we can take a stab and produce some common packagings, we will not</li>      of plug-ins. These will contain either more or less than the Eclipse SDK.
84        While  we can take a stab and produce some common packagings, we are are
85        not likely to satisfy all/most people.</li>
86    <li>Makes poor use of existing disk and bandwidth resources. As mentioned earlier,    <li>Makes poor use of existing disk and bandwidth resources. As mentioned earlier,
87      something like 95% of each OS/WS specific SDK zip is identical content. Further,      something like 95% of each OS/WS specific SDK zip is identical content. Further,
88      from build to build, not all plug-ins change. The user doc for example tends      from build to build, not all plug-ins change. The user doc for example tends
# Line 78  Line 94 
94      and bandwidth for both eclipse.org and our users.</li>      and bandwidth for both eclipse.org and our users.</li>
95    <li>Finally, it is somewhat ironic that the update/install mechanism has been    <li>Finally, it is somewhat ironic that the update/install mechanism has been
96      designed in part to address exactly these kinds of concerns yet it is one      designed in part to address exactly these kinds of concerns yet it is one
97    
98      of the few components that does not see regular use by the Eclipse team itself.      of the few components that does not see regular use by the Eclipse team itself.
99      As a result, the update/install team misses out on the regular feedback enjoyed       As a result, the update/install team misses out on the regular feedback
100        enjoyed
101      by the other Eclipse teams. It is seemingly hard to justify putting update/install      by the other Eclipse teams. It is seemingly hard to justify putting update/install
102      forward as a useful technology but not using it ourselves. </li>       forward as a useful technology while not using it ourselves. </li>
103  </ul>  </ul>
104  <h2>Scenarios</h2>  <h2>Scenarios</h2>
105  <h3>Scenario 1: minimal install</h3>  <h3>Scenario 1: minimal install</h3>
# Line 137  Line 155 
155    <li>go to step 3 of scenario 1</li>    <li>go to step 3 of scenario 1</li>
156  </ol>  </ol>
157  <h2>Problem Solution</h2>  <h2>Problem Solution</h2>
158  We propose to use the Eclipse update technology to address the described problems  <p>We propose to use the Eclipse update technology to address the described problems
159  and implement the listed scenarios. Note that this new structure is a complement  and implement the listed scenarios. Note that this new structure is a complement
160    
161  to the existing large zip packagings of Eclipse. We are not proposing to stop  to the existing large zip packagings of Eclipse. We are not proposing to stop
162  creating the familiar SDK etc zips.  
163    creating the familiar SDK etc zips. (we leave it to someone more brave to propose
164      that!)</p>
165  <h3>Update site</h3>  <h3>Update site</h3>
166  <p>eclipse.org (and others) will provide update sites sporting all the relevant  <p>eclipse.org (and others) will provide update sites sporting all the relevant
167    features and plug-ins. Collections of projects can cooperate and share an update    features and plug-ins. Collections of projects can cooperate and share an update
# Line 148  Line 169 
169    the need for some sort of shared site update mechanism. However, the user must    the need for some sort of shared site update mechanism. However, the user must
170    be able to navigate these individual sites seamlessly (see the section on Update    be able to navigate these individual sites seamlessly (see the section on Update
171    manager). </p>    manager). </p>
172    <p>There will be one update site per <em>release family</em>. A release family
173      is a set of releases which form a substantial and separable effort. For example,
174      Eclipse 2.0, 2.1, 3.0 and 3.1 are all different release families. The life
175      of release family continues after its initial release (e.g., 3.0) to include
176      maintenance releases (e.g., 3.0.1, 3.0.2, ...). Isolating release families
177      to their own update sites helps maintain a separation between development going
178      on for the next release family and maintenance work on the previous family.</p>
179  <h3>Versioning</h3>  <h3>Versioning</h3>
180  <p>Update sites are not possible unless we use the Eclipse version numbering scheme  <p>Update sites are not possible unless we use the Eclipse version numbering
181    effectively. The main challenge is for plug-ins to have version numbers that    scheme  effectively. The main challenge is for plug-ins to have version numbers
182    indicate their content. Updating versions so they correctly reflect semantic    that
183    change would be good but not essential. What is required however is that if    accurately relate to their content. The essential element here is to ensure
184    two plug-ins have the same id and version, their content is identical. The easiest    that if two plug-ins have the same id and version, their content is identical.
185      The
186      easiest
187    way to do this is to use the version qualifier (i.e., the forth version element).    way to do this is to use the version qualifier (i.e., the forth version element).
188    The qualifier should be the version tag from the map file used for the build     For normal (not nightly) builds, the qualifier should be the version tag from
189    which generated them (e.g., 3.0.0.v20040212). The map file defines the content    the map file used for the build
190    going into the build. If that does not change, then we can assume that the content    which generated them (e.g., 3.1.0.v20041122). The map file defines the content
191    of the output plug-in will not change. In this way, identical plug-ins will not     going into the build. If that does not change, then we can assume that the
192    be duplicated on the update site and consumers will not have to download them    content
193    if they already have them.</p>    of the output plug-in will not change. In this way, identical plug-ins will
194  <p>Features on the other hand are packagings of plug-ins. They are also relatively    not  be duplicated on the update site and consumers will not have to download
195    small. Since the content of a feature is indirectly defined by the content of    them
196    the plug-ins included in the feature, it is hard to detect change. The safe bet    if they already have them. For more detail on plugin versioning, see the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/documents/plugin-versioning.html">Plug-in
197    here is to use the build stamp as the qualifier for feature version (e.g., 3.0.0.I200402131200).    Versioning Proposal</a>.</p>
198    This has the benificial effect of clearly identifying the features for a particular  <p>Features on the other hand are collections of plug-ins. They are also relatively
199       small. Since the content of a feature is indirectly defined by the content
200      of  the plug-ins included in the feature, it is hard to detect change. The
201      safe bet
202      here is to use the build stamp as the qualifier for feature version (e.g.,
203      3.0.0.200402131200).  This has the benificial effect of clearly identifying
204      the features for a particular
205    build. Further, since the entire feature set is regenerated, the collection    build. Further, since the entire feature set is regenerated, the collection
206    of features with the same version number completely defines the entire build    of features with the same version number completely defines the entire build
207    
208    output.</p>    output.</p>
209  <p>Nightly builds would not go into the update site. There is no easy way to correlate  <p>Nightly builds do not go into an update site. There is no easy way to correlate
210    the content in a nightly build (out of HEAD) with that of an integration build    the content in a nightly build (out of HEAD) with that of an integration build
211    (using versioned resources). As a result, all plug-ins would be new and the economies  
212    of the proposed solution would not be realized. Further, nightly builds are    (using versioned resources). As a result, all plug-ins would be new and the
213    primarily there for the individual teams to ensure they have not adversely affected    economies  of the proposed solution would not be realized. Further, nightly
214    other components etc. That is, they do not figure prominently in the scenarios    builds are
215      primarily there for the individual teams to ensure they have not adversely
216      affected  other components etc. That is, they do not figure prominently in
217      the scenarios
218    driving this proposal.</p>    driving this proposal.</p>
219  <p>Plug-in directories currently reflect the id and version of the plug-in. With  <p>Plug-in directories currently reflect the id and version of the plug-in. With
220    the addition of the map stamp, the directory names will grow by typically ~10    the addition of the map stamp, the directory names will grow by typically ~10
# Line 185  Line 225 
225    not interpreted. Qualifiers are compared using lexographical sorting. As such,    not interpreted. Qualifiers are compared using lexographical sorting. As such,
226    care should be    care should be
227    taken to ensure that the qualifier for subsequent builds monotonically increase.    taken to ensure that the qualifier for subsequent builds monotonically increase.
228    For example, rather than prepending the build type identifier (e.g., I20040217...    For example, if a build type identifier is to be included in the qualifier,
229    or M7), the build type should be appended and the build date used as the main    it should be appended and
230    body (e.g., 20040217-I and 20040213-M7).</p>    the build date used
231  <p></p>    as the main
232  <p></p>    body (e.g., 20040217-I and 20040213-M7). See the complementary proposal on
233      version numbering for more information.</p>
234  <h3>Update manager</h3>  <h3>Update manager</h3>
235  <p>The main challenges for the update manager are in making all of this scale  <p>The main challenges for the update manager are in making all of this scale
236    and usable. </p>    and usable. </p>
# Line 269  Line 310 
310  </ul>  </ul>
311  <p>Note: the plugin.xml updating outlined above must be carried out on any manifest.mf  <p>Note: the plugin.xml updating outlined above must be carried out on any manifest.mf
312    files present in the build.</p>    files present in the build.</p>
 <p></p>  
313  <p>PDE Build will also be updated to output directly to update site format. This  <p>PDE Build will also be updated to output directly to update site format. This
314    is already largely supported but there maybe some modest work required.</p>    is already largely supported but there maybe some modest work required.</p>
315  <p>A possible longer term advance is to change PDE build to only build the plug-ins  <p>A possible longer term advance is to change PDE build to only build the plug-ins

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3