| 8 |
item] Improve organizational control over product updates</p> |
item] Improve organizational control over product updates</p> |
| 9 |
<h2>1. The Problem</h2> |
<h2>1. The Problem</h2> |
| 10 |
<p>Eclipse Update allows users to search for updates to the currently installed |
<p>Eclipse Update allows users to search for updates to the currently installed |
| 11 |
features. For each installed feature, Update will use the embedded URL to |
features. For each installed feature, Update uses the embedded URL to |
| 12 |
connect to the remote server and search for new versions. If there are updates, |
connect to the remote server and search for new versions. If there are updates, |
| 13 |
Eclipse allows users to initiate the install procedure. After downloading, |
Eclipse allows users to initiate the install procedure. After downloading, |
| 14 |
installing and restarting the platform, new feature version is ready for use.</p> |
installing and restarting the platform, new feature version is ready for use.</p> |
| 15 |
<p>In companies with many users of the same Eclipse-based product (typically a |
<p>In companies with many users of the same Eclipse-based product (typically a |
| 16 |
commercial one), several problems can arise from this model:</p> |
commercial one), several problems can arise from this model:</p> |
| 17 |
<ol> |
<ol> |
| 18 |
<li>Updates for very large products (e.g. 500+ plug-ins) can also be large. |
<li>Updates for very large products (e.g. 500+ plug-ins) are also large. |
| 19 |
I/T support teams may not like the idea of hundreds of developers individually |
I/T support teams may not like the idea of hundreds of developers individually |
| 20 |
downloading 500MEG updates to their individual machines. In addition to the |
downloading 500MEG updates to their individual machines. In addition to the |
| 21 |
bandwidth hit, such a large download request may fail, leading to repeated |
bandwidth hit, such a large download request may fail, leading to repeated |
| 23 |
<li>Some companies explicitly don't want the developers downloading updates |
<li>Some companies explicitly don't want the developers downloading updates |
| 24 |
directly from the Internet. For example, they can set up a local support team |
directly from the Internet. For example, they can set up a local support team |
| 25 |
that may not be ready to handle requests related to the version of the product |
that may not be ready to handle requests related to the version of the product |
| 26 |
available from the provider's update site. They may want to limit updates and |
already available from the provider's update site. They may want to restrict updates and |
| 27 |
fixes to the internally approved list. Ideally, they would do that by setting |
fixes to the internally approved list. Ideally, they would do that by setting |
| 28 |
up 'proxy' update sites on the LAN (behind the firewall).</li> |
up 'proxy' update sites on the LAN (behind the firewall).</li> |
| 29 |
<li>Once updates are set in the proxy sites as above, administrators need a |
<li>Once updates are set in the proxy sites as above, administrators need a |
| 31 |
</ol> |
</ol> |
| 32 |
<h2>2. The Proposal</h2> |
<h2>2. The Proposal</h2> |
| 33 |
<p>The proposed solution in Eclipse 3.0 consists of three new capabilities that |
<p>The proposed solution in Eclipse 3.0 consists of three new capabilities that |
| 34 |
together address all of the above problems. </p> |
together address the above problems. </p> |
| 35 |
<h3>2.1 Support for creating local (proxy) update sites</h3> |
<h3>2.1 Support for creating local (proxy) update sites</h3> |
| 36 |
<p>First step for a product administrator would be to set up a local Eclipse |
<p>First step for a product administrator would be to set up a local Eclipse |
| 37 |
update site on a server connected to the company's LAN (behind the firewall). |
update site on a server connected to the company's LAN (behind the firewall). |
| 38 |
The update site would be a subset of the product's update site on the Internet |
The update site would be a subset of the product's update site on the Internet |
| 39 |
because it would contain only features and plug-ins related to the updates that |
because it would contain only features and plug-ins related to the updates that |
| 40 |
the company wants applied at the moment. Technically, this site would be a |
the company wants applied at the moment. Technically, this site would be a |
| 41 |
regular Elipse update site with site.xml, feature and plug-in archives.</p> |
regular Eclipse update site with site.xml, feature and plug-in archives.</p> |
| 42 |
<p>Administrators would construct this site in two ways:</p> |
<p>Administrators would construct this site in two ways:</p> |
| 43 |
<ol> |
<ol> |
| 44 |
<li>Product support teams would make the zip file of the update site readily |
<li>Product support teams would make a zip file of the update site readily |
| 45 |
available for this particular purpose. Administrators would simply need to |
available for this particular purpose. Administrators would simply need to |
| 46 |
download the zip file from the product support web page using the tool of |
download the zip file from the product support web page using the tool of |
| 47 |
their choice and unzip it in the local server. This approach is useful for |
their choice and unzip it in the local server. This approach is useful for |
| 53 |
would be very similar to the current update search wizard up to the install |
would be very similar to the current update search wizard up to the install |
| 54 |
point. At that juncture, Update would simply copy archives into the designated |
point. At that juncture, Update would simply copy archives into the designated |
| 55 |
local site and update site.xml instead of commencing the installation phase. |
local site and update site.xml instead of commencing the installation phase. |
| 56 |
This option is fully automated and would greatly simplify administrator's task |
This mirroring capability would be fully automated and would greatly simplify administrator's task |
| 57 |
but relies on Update network connection capabilities (improved downloading |
but it relies on Update network connection support (improved downloading |
| 58 |
reliability and performance is addressed in a different Update 3.0 plan item).</li> |
reliability and performance is addressed in a different Update 3.0 plan item).</li> |
| 59 |
</ol> |
</ol> |
| 60 |
<h3>2.2 Common update policy control</h3> |
<h3>2.2 Common update policy control</h3> |
| 61 |
<p>Since features have Update site URL embedded, they are unaware of the local |
<p>Since features have Update site URL embedded in the manifest, they are unaware of the local |
| 62 |
update sites set up by administrators. It is therefore important to provide <b> |
update sites set up by the administrators. It is therefore important to provide <b> |
| 63 |
redirection capability</b>. This and other update policy settings can be set for |
redirection capability</b>. This and other update policy settings can be set for |
| 64 |
a Eclipse product by creating an update policy file and configuring Update to |
an Eclipse product by creating an update policy file and configuring Update to |
| 65 |
use that file when searching.</p> |
use that file when searching.</p> |
| 66 |
<p>The file in question can have any name, but needs to conform to standard Java |
<p>The file in question uses XML format and can have any name. The file can be set in <b> |
| 67 |
properties syntax. The file can be set in <b> |
Preferences>Install/Update</b><font color="#0000FF"> </font>in the <b>Update |
| 68 |
Preferences>Install/Update>Automatic Updates</b> <font color="#0000FF">[as of |
Policy</b> group. The text field |
| 69 |
M1; final home may change for 3.0; in M1, the entry is called 'Address Mapping |
is empty by default: users may set the URL of the update policy file. The file |
| 70 |
URL'; this will also change in subsequent milestones]</font>. This entry field |
is managed by the local administrator and is shared for all the product |
|
is empty by default: users may set the URL of the update policy file. This file |
|
|
is set up by local administrators and is shared for all the product |
|
| 71 |
installations. Sharing can be achieved in two ways:</p> |
installations. Sharing can be achieved in two ways:</p> |
| 72 |
<ul> |
<ul> |
| 73 |
<li>If users install the product: users are told to open the preference page |
<li>If users install the product: users are told to open the preference page |
| 76 |
in the primary product feature and set the default value of the 'updatePolicyFile' |
in the primary product feature and set the default value of the 'updatePolicyFile' |
| 77 |
property as follows:<br> |
property as follows:<br> |
| 78 |
<br> |
<br> |
| 79 |
<code>org.eclipse.update.core/updatePolicyFile = <URL value> |
<code>org.eclipse.update.core/updatePolicyFile = <URL value><br> |
| 80 |
</code><br> |
</code><font color="#0000FF">[this does not work yet]</font><br> |
| 81 |
<br> |
<br> |
| 82 |
This will cause all the installation to have this file set by default.</li> |
This will cause all the installations to have this file set by default.</li> |
| 83 |
</ul> |
</ul> |
| 84 |
<p>A file has been chosen for two reasons: it allows central control over the |
<p>File-based mechanism has been chosen for two reasons: it allows central control over the |
| 85 |
update policy settings for an installed product, and it is also 'all or nothing' |
update policy settings for an installed product, and it is also 'all or nothing' |
| 86 |
- individual users cannot change some aspects of the policy while keeping |
- individual users cannot change some aspects of the policy while keeping |
| 87 |
others.</p> |
others.</p> |
| 88 |
<p>The policy file can contain the following key/value pairs:</p> |
<p>The policy file must conform to the following DTD (note that the syntax is |
| 89 |
<h4>url-map</h4> |
subject to change up to the 3.0 API freeze):</p> |
|
<p>Syntax:</p> |
|
| 90 |
<blockquote> |
<blockquote> |
| 91 |
<pre>url-map.<feature ID prefix> = <local URL> |
<p><tt><?xml encoding="ISO-8859-1"?></tt> |
| 92 |
url-map.* = <default local URL for all the features></pre> |
<p><tt><!ELEMENT update-policy (url-map)*></tt><br> |
| 93 |
|
<tt><!ATTLIST update-policy</tt><br> |
| 94 |
|
<tt>></tt></p> |
| 95 |
|
<p><tt><!ELEMENT url-map EMPTY><br> |
| 96 |
|
<!ATTLIST url-map<br> |
| 97 |
|
pattern CDATA #REQUIRED<br> |
| 98 |
|
url CDATA |
| 99 |
|
#REQUIRED<br> |
| 100 |
|
></tt></p> |
| 101 |
</blockquote> |
</blockquote> |
| 102 |
<p>This key is used to remap Update URLs embedded in feature manifests. When |
<h4>url-map</h4> |
| 103 |
searching for new updates, Eclipse search will check the update policy (if |
<ul> |
| 104 |
|
<li><b>pattern</b> - a string that represents prefix of a feature ID (up to |
| 105 |
|
and including a complete ID)</li> |
| 106 |
|
<li><b>url</b> - a URL of the alternative update site that should be used if |
| 107 |
|
the feature ID begins with the pattern</li> |
| 108 |
|
</ul> |
| 109 |
|
<p>This element is used to override Update URLs embedded in feature manifests. When |
| 110 |
|
looking for new updates, Eclipse search will check the update policy (if |
| 111 |
present) and check if <b>url-map</b> for the matching feature prefix is |
present) and check if <b>url-map</b> for the matching feature prefix is |
| 112 |
specified. If a match is found, the mapped URL will be used instead of the |
specified. If a match is found, the mapped URL will be used <b> instead</b> of the |
| 113 |
embedded one. This way, administrators can configure Eclipse products to search |
embedded one. This way, administrators can configure Eclipse products to search |
| 114 |
for updates in the local server behind the firewall. </p> |
for updates in the local server behind the firewall. Mealwhile, third-party |
| 115 |
<p>Several url-map entries may exist in the file. The feature prefixes may be |
features installed by Eclipse Update will continue to be updated using the |
| 116 |
|
default mechanism because they will not find matches in the policy.</p> |
| 117 |
|
<p>Several <b>url-map</b> elements may exist in the file. Feature prefixes can be |
| 118 |
chosen to be less or more specific. For example, to redirect all Eclipse |
chosen to be less or more specific. For example, to redirect all Eclipse |
| 119 |
updates, the key would be <code>url-map.org.eclipse</code>. Similarly, it is |
updates, the pattern attribute would be <code>"org.eclipse"</code>. Similarly, it is |
| 120 |
possible to use a complete feature ID as a prefix if redirection is required on |
possible to use a complete feature ID as a pattern if redirection is required on |
| 121 |
a per-feature basis. Finally, using '*' would set up a server URL for all the |
a per-feature basis.</p> |
| 122 |
features (a setting that should generally not be used unless total control is |
<p>Patterns in the file may be chosen to progressively narrow the potential |
| 123 |
needed).</p> |
matches. This may result in multiple matches for a given feature. In this case, |
| 124 |
<p>In case of multiple matches, the one with a longer pattern will be used. For |
the <b>match with a longest pattern</b> will be used. For |
| 125 |
example:</p> |
example:</p> |
| 126 |
<blockquote> |
<blockquote> |
| 127 |
<pre>url-map.org.eclipse = URL1 |
<pre><?xml version="1.0" encoding="UTF-8"?> |
| 128 |
url-map.org.eclipse.jdt = URL2</pre> |
<update-policy> |
| 129 |
|
<url-map pattern="org.eclipse" url="URL1"/> |
| 130 |
|
<url-map pattern="org.eclipse.jdt" url="URL2"/> |
| 131 |
|
</update-policy></pre> |
| 132 |
</blockquote> |
</blockquote> |
| 133 |
<p>In the case above, all Eclipse features will be updated from URL1, except |
<p>In the case above, all Eclipse features will be updated from URL1, except <code>org.eclipse.jdt</code> that will use URL2.</p> |
| 134 |
those starting with <code>org.eclipse.jdt</code> that will use URL2.</p> |
<p>Update policy files do not contain translatable strings and therefore do not |
| 135 |
<h4>try-embedded</h4> |
require special NL handling. In general, the files should use UTF-8 encoding.</p> |
|
<p>Syntax:</p> |
|
|
<p> <code>try-embedded = (true | false) |
|
|
"true"</code></p> |
|
|
<p>This key sets the policy regarding features for which mapped URL was not |
|
|
found. If 'true' (default), update search will default to the embedded URL if no |
|
|
matching <code>url-map</code> has been found in the update policy file. Setting |
|
|
'false' effectively hides the embedded update URL. The default settings is |
|
|
recommended because it allows the primary product features to be updated from |
|
|
the local server, while third-party (add-on) features downloaded into the |
|
|
product using Eclipse Update can still by updated from the internet.</p> |
|
| 136 |
<h3>2.3 Automatic discovery of updates</h3> |
<h3>2.3 Automatic discovery of updates</h3> |
| 137 |
<p>The third part of the overall solution is covered by another plan item (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37684">Improve |
<p>The third part of the overall solution is covered by another plan item (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37684">Improve |
| 138 |
Update Manager search</a>) but is mentioned here because it is an integral part |
Update Manager search</a>) but is mentioned here because it is an integral part |
| 140 |
specified schedule (on each startup (the default), once a day, once a week |
specified schedule (on each startup (the default), once a day, once a week |
| 141 |
etc.). </p> |
etc.). </p> |
| 142 |
<h2>3. Conclusion </h2> |
<h2>3. Conclusion </h2> |
| 143 |
<p>Here is the complete sequence of steps that represents the solution:</p> |
<p>Here is the complete sequence of steps that comprise the solution:</p> |
| 144 |
<ol> |
<ol> |
| 145 |
<li>Administrator allocates a server on the company LAN for hosting local |
<li>Administrator allocates a server on the company LAN for hosting local |
| 146 |
product updates. Initially it contains no update sites.</li> |
product updates. Initially it contains no update sites. The machine must have |
| 147 |
|
an HTTP server running.</li> |
| 148 |
<li>Administrator sets up an update policy file on that server and instructs |
<li>Administrator sets up an update policy file on that server and instructs |
| 149 |
all users to configure their products using the provided URL.</li> |
all users to set the update policy preference the provided URL.</li> |
| 150 |
<li>As the product provider ships updates and fixes on their update sites, the |
<li>As the product provider ships updates and fixes on their update sites, |
| 151 |
administrators downloads supported updates into the local server.</li> |
administrator downloads supported updates onto the local server.</li> |
| 152 |
<li>Automatic updates executed at the scheduled frequency picks up the local |
<li>Automatic update executed at the scheduled frequency when the client's |
| 153 |
updates and informs the user</li> |
product is up picks up the local |
| 154 |
|
updates and notifies the user</li> |
| 155 |
<li>User chooses to install the discovered updates</li> |
<li>User chooses to install the discovered updates</li> |
| 156 |
</ol> |
</ol> |
| 157 |
<h2>4. Schedule</h2> |
<h2>4. Schedule</h2> |
| 158 |
<p>Early implementation of the update policy (with redirection) is already in |
<p>Early implementation of the update policy (with redirection) is already in |
| 159 |
the regular integration builds (since M1). Wizard for creating partial local |
the regular integration builds (since M1) but expect the actual update policy |
| 160 |
|
DTD to be in flux at least until M2. Wizard for creating partial local |
| 161 |
shadows of the remote update sites will appear after M2 (actual milestone not |
shadows of the remote update sites will appear after M2 (actual milestone not |
| 162 |
known yet).</p> |
known yet).</p> |