<?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'

$pageTitle 		= "Callisto Simultaneous Release";
$pageKeywords	= "projects callisto";
$pageAuthor		= "Bjorn Freeman-Benson Dec 2005";

ob_start();
if( $_GET['key'] ) {
?>
    <div id="maincontent">
	<div id="midcolumn">
<?php
           if( preg_match( "/^(\d\d\d\d\.\d\d\.\d\d)$/", $_GET['key'], $matches ) > 0 ) {
               $key = $matches[1];
			  $contents = file_get_contents( "callisto-files/" . $key . ".html" );
			   echo $contents ;
			} else {
?>
				<font color="red">
				Sorry, <?= $_GET['key'] ?> is not a valid Callisto file.
				</font>
<?php
			}
?>

      </div>
  </div>
<?php
} else {

?>
<style type="text/css">
h2 {
border-bottom: solid
}
h3 {
border-bottom: thin dotted
}
</style>

    <div id="maincontent">
	<div id="midcolumn">
        <h1><?= $pageTitle ?></h1>
        
        <div style="border: 2px solid #FBA16C; padding: 1em;">Note: This page dicusses topics related 
        to the 2006 Callisto Simultaneous Release. Most of the Callisto pages are deprecated. You are 
        urged to find current information on pages related to <a href="europa.php">the 2007 effort</a>,
        currently named the <a href="europa.php">Europa Simultaneous Release</a>.</div>
        
        <h2>Goal</h2>
        <p>The goal of the Callisto Simultaneous Release was to release ten major Eclipse
        projects at the same time. Callisto was a definite success.</p>
        <p>We did this simultaneous release to support the needs of the ecosystem
        members who integrate Eclipse frameworks into their own software and products. 
        While those product producers naturally accept the ultimate responsibility for their
        customers' experiences, Callisto's goal was to eliminate uncertainity about 
        project version numbers, and thus to allow ecosystem members to start their
        own integration, cross-project, and cross-product testing efforts earlier.
        Callisto was about improving the productivity of
        the developers working on top of Eclipse frameworks by providing a more
        transparent and predictable development cycle; Callisto was about developers 
        helping developers serve the whole Eclipse community.</p>
              
        <p><em>While Callisto was about the simultaneous release of ten projects, it was
        not a unification of the projects - each project remained a
        separate open source project operating with its own project leadership,
        its own committers, and its own project plan.</em></p>
        
        <h2>Projects Included In The Release</h2>
        <ul>
        <li><a href="/birt/">Business Intelligence and Reporting Tools (BIRT) Project</a></li>
        <li><a href="/cdt/">C/C++ IDE</a></li>
        <li><a href="/datatools/">Data Tools Platform</a></li>
        <li><a href="/emf/">Eclipse Modeling Framework</a></li>
        <li><a href="/gef/">Graphical Editor Framework</a></li>
        <li><a href="/gmf/">Graphical Modeling Framework</a></li>
        <li><a href="/eclipse/">Platform</a></li>
        <li><a href="/tptp/">Test and Performance Tools Platform</a></li>
        <li><a href="/webtools/">Web Tools Platform</a></li>
        <li><a href="/vep/">Visual Editor</a></li>
        </ul>
        
        <h2><a name="Installing">Downloading and Using The Callisto Simultaneous Release</a></h2>
        <p>The complete installation instructions are at the <a href="http://download.eclipse.org/callisto/releases/">Callisto Update Discovery page</a>.</p>

        
       <h2>Callisto CVS Projects</h2>
       <p>A number of utilities were written to automate the assembly of Callisto builds.
       These are available in their own CVS respository. You can find more information about
       how this was organized and individual project responsibilities for the build on this 
       Eclipsepedia page: <a href="http://wiki.eclipse.org/index.php/Callisto_build">Callisto build</a>.</p>
        
        <h2>Great Bugs Contest</h2>
        <p>We had a contest for great Callisto bug reports and we gave away
        T-shirts, iPods, and an Eclipse-brand mountain bike. Read about what consistitutes
        a <a href="/projects/callisto-files/callisto-bug-contest.php">great Callisto bug report</a> and 
        <a href="/projects/callisto-files/callisto-bug-contest.php">the simple contest guidelines/rules</a>.
        The goal, of course, was to encourage the larger community to find Callisto bugs - bugs
        that are at the intersection and integration of projects - and we more or less succeeded.</p>
        <div align="center"><a href="/projects/callisto-files/callisto-bug-contest.php"><img src="/projects/callisto-files/callisto-shirt-crop.png"/></a></div>
        
        <h2><a name="Requirements">Requirements</a></h2>
        <p>Projects that were part of Callisto agreed to abide by the following requirements:
        <ol>
<li>The projects in the Callisto Simultaneous Release <b>must</b> work together. </li>
<li>All Callisto projects <em>should</em> have jar'ed plug-ins because this is good Eclipse citizenship.</li>
<li>All Callisto projects <em>should</em> use Eclipse message bundles, not Java bundles because this is a good Eclipse citizenship.</li>
<li>All Callisto projects <b>must</b> use ICU4J by RC0.</li>
<li>All Callisto projects <b>must</b> use capabilities.</li>
<li>All Callisto projects <b>must</b> have their own functional project update site - the Callisto site 
    will reference these sites, not replace them.</li>
<li>All Callisto projects <b>must</b> use <a href="http://www.eclipse.org/equinox/documents/plugin-versioning.html">4-part version numbers</a> by M5.</li>
<li>Starting with RC1, all Callisto projects <b>must</b> plan not to break upstream
consumers and if there is a potential breaking change, those consumers must be
notified and given the chance to agree, disagree, or veto.</li>
<li>All Callisto projects <em>should</em> have a written ramp down policy.</li>
        </ol>
        </p>
        
    	<h2>Milestone and Release Candidate Schedule</h2>
    	<p>These milestone and release candidate dates are based on the dependencies of the projects (we
    	call these the +0, +1, and +2 dependencies). Obviously, if a +0 date slips, then it will cause the
    	+1 and +2 dates to slip; similarly for a +1 slip causing +2 slips.</p>
    	<p>The milestones and release candidate dates and project-specific
    	version names are listed on <a href="http://wiki.eclipse.org/index.php/Callisto_Plan_Summary">this wiki page</a>.
    	The team aimed for a June 30th Callisto release.
    	</p>
    	<p>
    	There are two planned, optional participation, maintenance dot releases. 
    	<a href="http://wiki.eclipse.org/index.php/Callisto_Coordinated_Maintenance">The wiki</a>
    	describes the dates and processes.</p>
    	
        <h2>Planning and Coordination</h2>
        <p>The Callisto Simultaneous Release was planned and managed by the <a href="/org/foundation/council.php">Planning Council</a>.
        The Council held coordination conference calls as follows (minutes to be posted here):
        <ul>      
        <li> <a href="callisto.php?key=2006.02.03">3-Feb 8am PT/11am ET - CallistoM5 status</a> </li>
    <li> <a href="callisto.php?key=2006.02.10">10-Feb 8am PT/11am ET - CallistoM5 status</a> </li>
    <li> <a href="callisto.php?key=2006.02.17">17-Feb 8am PT/11am ET - CallistoM5 status</a> </li>
    <li> <a href="callisto.php?key=2006.02.24">24-Feb 8am PT/11am ET - CallistoM5 status</a> </li>
    <li> <a href="callisto.php?key=2006.03.03">3-Mar 8am PT/11am ET - CallistoM5 status</a> </li>
    <li> <a href="callisto.php?key=2006.03.10">10-Mar 8am PT/11am ET - CallistoRC0 status</a> </li>
    <li> <a href="callisto.php?key=2006.03.19">19-Mar 6-8pm - face-to-face at EclipseCon; RC0 status</a></li>
    <li> <a href="callisto.php?key=2006.04.12">12-Apr 9am PT/noon ET - CallistoRC1 status</a></li>
    <li> <a href="callisto.php?key=2006.04.19">19-Apr 9am PT/noon ET - CallistoRC2 status</a> </li>
    <li> <a href="callisto.php?key=2006.04.26">26-Apr 9am PT/noon ET - CallistoRC2 status</a> </li>
    <li> <a href="callisto.php?key=2006.05.03">3-May 9am PT/noon ET - CallistoRC3 status</a> </li>
    <li> <a href="callisto.php?key=2006.05.10">10-May 9am PT/noon ET - CallistoRC3 status</a> </li>
    <li> <a href="callisto.php?key=2006.05.17">17-May 9am PT/noon ET - CallistoRC4 status</a> </li>
    <li> <a href="callisto.php?key=2006.05.24">24-May 9am PT/noon ET - CallistoRC4 status</a> </li>
    <li> <a href="callisto.php?key=2006.06.26">26-May 1500 UTC - Callisto Simultaneous Release Review</a></li>
    <li> <a href="callisto.php?key=2006.05.24">31-May 9am PT/noon ET - CallistoRC5 status</a> </li>
    <li> <a href="callisto.php?key=2006.06.07">7-Jun 9am PT/noon ET - CallistoRC5 status</a> </li>
    <li> <a href="callisto.php?key=2006.06.14">14-Jun 9am PT/noon ET - CallistoRC6 status</a> </li>
    <li> 21-Jun 9am PT/noon ET - CallistoRC6 status </li>
        </ul>
        <p>The Council established the <a href="https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev">cross-project-issues-dev@eclipse.org</a>
        mailing list for, obviously, any cross project issues that arise.</p>
        
		<h2>Humor</h2>
		<p>From <a href="http://www.nineplanets.org/callisto.html">The Ten Planets</a>: <em>Callisto seems to have 
		little internal structure; however there are signs 
from recent Galileo data that the interior materials have settled 
partially, with the percentage of rock increasing toward the center.</em>  </p>

  </div></div>
<?php
}
	$html = ob_get_contents();
	ob_end_clean();

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