<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# index.php
	#
	# Author: 		Markus Knauer
	# Date:			2007-06-10
	#
	# Description: Plan of the Eclipse Packaging Project
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "EPP Project Plan";
	$pageKeywords	= "eclipse, download, packages, packaging, installer, plan, planning";
	$pageAuthor		= "Markus Knauer";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">


<!-- MIDCOLUMN START -->
<div id="midcolumn">

<h1>$pageTitle</h1>

<h2>Europa Timeframe</h2>

<p>Within the Europa timeframe the EPP will</p>
<ul>
 <li>define initial packages for the Eclipse download page</li>
 <li>build these packages for Windows, Linux-GTK, MacOSX-Carbon</li>
 <li>building packages depends on working update sites; therefore EPP will run its 
     builds when the <a href="http://dash.eclipse.org/~bfreeman/europa/">Europa build 
     status</a> is green; package updates will be available for release candidates
     about one day after its release (see 
     <a href="http://wiki.eclipse.org/index.php/Europa_Simultaneous_Release#Milestones_and_Release_Candidates">
     Europa wiki page</a>)</li>
</ul>

<h2>Ganymede Timeframe</h2>

<ul>
 <li>Create a package eco system where package maintainer can add new packages.</li>
 <li>Integrate the EPP Usaged Data Collector in all packages.</li>
 <li>Deliver milestone builds and nightly build based on the Ganymede Update Site in time.</li>
 <li>Set up an automated build process and integrate it with the Ganymatic build.</li>
</ul>

<h2>Planning</h2>

<table border="1">
<tr><th>Dates</th><th></th></tr>

<tr><td>Feb 22</td><td>Ganymede M5 (EPP)</td></tr>
<tr><td>Feb 22</td><td>EclipseCon Memory Sticks (EPP)</td></tr>
<tr><td>Feb 27</td><td>Europa Winter (EPP)</td></tr>
<tr><td>Feb 29</td><td>Europa Winter (Public Access)</td></tr>

<tr><td>Mar 17</td><td>EclipseCon</td></tr>
<tr><td>Mar 20</td><td>EclipseCon end</td></tr>
<tr><td style="background-color: rgb(255, 204, 204);">Mar 31</td><td style="background-color: rgb(255, 204, 204);">EPP new packages must be announced on bugzilla by package maintainer</td></tr>

<tr><td>Apr 11</td><td>Ganymede M6 API Freeze (EPP)</td></tr>
<tr><td style="background-color: rgb(255, 204, 204);">Apr 11</td><td style="background-color: rgb(255, 204, 204);">EPP new packages and working configuration files available</td></tr>

<tr><td>May 09</td><td>Ganymede M7 (EPP)</td></tr>
<tr><td style="background-color: rgb(255, 204, 204);">May 09</td><td style="background-color: rgb(255, 204, 204);">EPP package content feature freeze</td></tr>
<tr><td style="background-color: rgb(255, 204, 204);">May 09</td><td style="background-color: rgb(255, 204, 204);">EPP package build system feature freeze</td></tr>
<tr><td style="background-color: rgb(255, 204, 204);">May 20</td><td style="background-color: rgb(255, 204, 204);">EPP release review (UDC)</td></tr>
<tr><td>May 23</td><td>Ganymede RC1 (EPP)</td></tr>
<tr><td>May 30</td><td>Ganymede RC2 (EPP)</td></tr>

<tr><td>Jun 06</td><td>Ganymede RC3 (EPP)</td></tr>
<tr><td>Jun 13</td><td>Ganymede RC4 (EPP)</td></tr>
<tr><td>Jun 23</td><td>Ganymede Final (EPP)</td></tr>
<tr><td>Jun 25</td><td>Ganymede Final (Public Access)</td></tr>

</table>

<hr class="clearer" />
</div>
<!-- MIDCOLUMN END -->

<!-- RIGHTCOLUMN START -->
<div id="rightcolumn">
</div>
<!-- RIGHTCOLUMN END -->

</div>

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
