<?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'
/* 221934 - this page to remain on eclipse.org */

$pageTitle 		= "Eclipse Committers Emeritus";
$pageKeywords   = '';
$pageAuthor     = '';

include( '_commonLeftNav.php' );

ob_start();
?>
<div id="maincontent">
<div id="midcolumn">

<h1>Eclipse Committers Emeritus</h1>
<p>
<img src="images/emeritus.gif" border="0" hspace="5" align="right">When Committers who have made significant contributions to Eclipse
become inactive and thus no longer Committers<sup>1</sup>, we want to make sure that we acknowledge their
huge contributions to our (collective) success. We choose to make that acknowledgement
by appointing them to <em>Committer Emeritus</em> status.
<p>
Our heartfelt thanks to each of these people and their
significant contributions to the long term success
of all of Eclipse.
<p>
<span style="font-color: grey">
A list of all former Committers can be found at <a href="committers-alumni.php">Committers Alumni</a>.
</span>
<div style="border: 3px solid #D4A017; padding-top: 5px; padding-bottom: 5px">
<ul>
<?php
$sql = "SELECT People.PersonID AS PID, FName, LName, ProjectID FROM People, PeopleProjects
		WHERE People.PersonID = PeopleProjects.PersonID
		  AND PeopleProjects.Relation = 'CE'
		  AND PeopleProjects.InactiveDate IS NULL
		  ORDER BY LName, FName
		  ";
$result = $App->foundation_sql($sql);
$showing = -1;
while( $row = mysql_fetch_assoc($result) ) {
	if( $showing == $row['PID'] ) {
		?>, <?= $row['ProjectID'] ?><?php
	} else {
		if( $showing == -1 ) {
			//first row, nothing to close
		} else {
			?>)</li><?php
		}
		?><li><b><?= $row['FName'] ?> <?= $row['LName'] ?></b> (<?= $row['ProjectID'] ?><?php
		$showing = $row['PID'];
	}
}
if( $showing != -1 ) {
	?>)</li></ul>
	<?php
}
?>
</div>

<br/>
<div style="font-size: small">
<b>Project leads</b> may nominate people to this page as part of the process of removing a committer in the
Foundation's <a href="http://portal.eclipse.org/">Portal</a>.  Simply go to the committer management
pane for your project and remove the committer.  In the process you can select to nominate them to
Committer Emeritus status.
</div>

<hr style="margin-top: 5px; margin-bottom: 5px;">
<div style="font-size: 60%"><sup>1</sup>
Being a Committer is a privilege that is earned by
contributing actively, and showing discipline and good judgment. It is a responsibility
that is not given or treated lightly. At the same
time, we acknowledge that active participation in Eclipse Projects
is not a lifetime commitment, and thus Committers may/will become
inactive for a variety of reasons.
</div>
</div><!-- midcolumn -->
</div><!-- maincontent -->
<?php
	# Paste your HTML content between the EOHTML markers!
	$html = ob_get_contents();
	ob_end_clean();

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