<html><head>
<link rel="stylesheet" href="../../default_style.css">
<title>Eclipse Foundation</title></head>
<body text="#000000" bgcolor="#ffffff" link="#0000ee" vlink="#551a8b" alink="#ff0000">
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=left width="72%"> <font class=indextop> eclipse.org migration faq</font> 
      <br>
      <font class=indexsub>&nbsp; </font></td>
    <td width="28%"><img src="../../images/Idea.jpg" height=86 width=120></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align="left" valign="top" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Eclipse 
      Community Bulletin </font></b></td>
  </tr>
  <tr> 
    <td> <br>
      <h1 ALIGN="CENTER"><b><span style='font-size:16.0pt;font-family:Arial;"Times New Roman"'><b> 
        Eclipse.org Infrastructure Migration FAQ</b></span></b></h1><br><br>
      <ol>
        <li><b>Why are the servers being moved to an ISP? </b> 
          <p>The Eclipse Foundation is taking over control and responsibility 
            of the eclipse.org website from IBM. To ensure a consistent high level 
            of service and availability, the Eclipse Foundation has decided to 
            host eclipse.org with an Internet Service Provider (ISP). 
        </li>
        <p></p>
        <hr size="1">
        <li><b> If the download servers are unavailable, how can I access Eclipse 
          downloads?<br>
          <br>
          </b>Eclipse is hosted on a number of mirrors. Please choose a mirror 
          close to you from the list of Eclipse mirrors: <a href="http://www.eclipse.org/downloads/index.php" target="_top">http://www.eclipse.org/downloads/index.php</a> 
        </li>
        <p></p>
        <hr size="1">
        <li><b>What version of my builds will be stored on the mirrors by Saturday, 
            October 16th before the move?</b> 
          <p>Your project's build schedule will determine when you should release 
            code into cvs and incorporate it into a build that can be propagated 
            to the mirrors. After your builds are pushed to the download.eclipse.org 
            server, it takes a minimum of one day to propagate the material to 
            a significant number of mirrors. Any builds that are on the main server 
            by October 14th will have been propagated to several servers by Saturday. 
          </p>
        </li>
        <p></p>
        <hr size="1">
        <li><b>Will eclipse.org be allocated more bandwidth after the move? It's 
            often slow to download a drop from the eclipse download servers, especially 
            after a product release.</b> 
          <p>No, the new site will have the same amount of bandwidth. We encourage 
            users to take advantage of the available mirrors during peak times 
            after a product release.</p>
        </li>
        <p></p>
        <hr size="1">
        <li><b>Will the servers be faster? Often it is is very slow to check out 
            code from dev.eclipse.org or query the bugzilla bugs database.  </b> 
          <p>No, the existing hardware will be moved to the new location. The 
            Eclipse Foundation will be installing new servers at a later date. 
          </p>
        </li>
        <p></p>
        <hr size="1">
        <li><b>Will eclipse.org mail be lost during the transition? </b> 
          <p>No, it will just be queued until the servers are online again 
            and then delivered as normal. </p>
        </li>
        <hr size="1">
                <li><b>Where should I direct infrastructure requests after the transition? </b> 
          <p>As usual, please send all questions to webmaster@eclipse.org.</p>
        </li>
      </ol>
    </td>
  </tr>
  </table>
  &nbsp; 
	<TABLE  width="100%" CELLSPACING=0 CELLPADDING=3>
		
  <tr> 
    <td> 
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <hr width="85%">
      <blockquote> 
        <blockquote> 
          <blockquote>
            <p><font size="1">Brand or product names are registered trademarks 
              or trademarks of their respective holders. Java and all Java-based 
              trademarks are trademarks or registered trademarks of Sun Microsystems, 
              Inc. in the United States and other countries.</font><br>
              <br>
            </p>
          </blockquote>
        </blockquote>
      </blockquote>
      <hr width="85%">
    </td>
		</tr>
        </table>&nbsp;        
&nbsp;
</body></html>
