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

	#*****************************************************************************
	#
	# team.php of Java Workflow Tooling (JWT)
	#
	# Author: 		Florian Lautenbacher
	# Date:			2007-02-26, adapted 2008-05-08
	#
	# Description: The team/committer page of the Java Workflow Tooling project
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Java Workflow Tooling (JWT)";
	$pageKeywords	= "JWT , Java Workflow Tooling Project, Workflow Editor, Workflow Administration and Monitoring, Eclipse";
	$pageAuthor		= "Florian Lautenbacher";
	
	# 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)
	# Reiniting navbar content (suppresses generic Eclipse links Committers, Newsgroups, Bugs, Articles) :
	# $Nav->setLinkList( array() );
	# Adding Portal-based "About" information, to be "Standard left menu"-compliant (see http://www.eclipse.org/projects/dev_process/project-status-infrastructure/left-menu.php) :
	# $Nav->addCustomNav( "Information about JWT", "/projects/project_summary.php?projectid=technology.jwt", "", 1  );
	# Adding JWT specific menus :

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

<div id="midcolumn">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
 <tr>
  <td valign="top" align="left"><h1>JWT Team</h1></td>
 </tr>
</table>

<div class="homeitem">
<h3>JWT Project Leads</h3>
<ul>
	<li><span>Marc Dutoo <br>(project co-lead)<br><a href="http://www.openwide.fr">Open Wide SA</a></span></li>
	<li><span><a href="mailto:florian.lautenbacher@informatik.uni-augsburg.de">Florian Lautenbacher</a> <br>(project co-lead)<br><a href="http://www.ds-lab.org/">University of Augsburg</a></span></li>
</ul>
<h3>JWT Release Engineer</h3>
<ul>
	<li><span>Christian Saad<br><a href="http://www.informatik.uni-augsburg.de/ds/">University of Augsburg</a></span></li>
</ul>
<h3>JWT Board Members</h3>
<ul>
	<li><span>Alain Boulze<br><a href="http://www.inria.fr/">INRIA / OW2</a></span></li>
	<li><span>Fabrice Dewasmes<br><a href="http://www.pragmaconsult.lu/">Pragma Consult</a></span></li>
	<li><span>Miguel Valdez Faura<br><a href="http://www.bonitasoft.com/">bonitasoft SA</a></span></li>
	<li><span>Gunther Palfinger<br><a href="http://www.emundo.eu/">eMundo GmbH</a></span></li>
</ul>
<h3>JWT Mentor</h3>
<ul>
	<li><span>John Graham<br><a href="http://www.jboss.org">JBoss - a division of Red Hat</a></span></li>
</ul>
</div>
<div class="homeitem">
<h3>JWT Committers and Contributors</h3>

<ul>
	<li><span>Bernhard Bauer<br><a href="http://www.ds-lab.org">University of Augsburg</a></span></li>
	<li><span>Marc Blanchon<br><a href="http://www.bull.com/fr/index.php">Bull SA</a></span></li>
	<li><span>Guillaume Decarnin<br><a href="http://www.openwide.fr">Open Wide SA</a></span></li>
	<li><span>Stephane Drapeau<br><a href="http://www.obeo.fr/">Obeo SA</a></span></li>
	<li><span>Melanie Hesselbart<br><a href="http://www.informatik.uni-augsburg.de/ds/">University of Augsburg</a></span></li>
	<li><span>Mickael Istria<br><a href="http://www.openwide.fr">Open Wide SA</a></span></li>
	<li><span>Rodrigue Le-Gall<br><a href="http://www.bonitasoft.com/">bonitasoft SA</a></span></li>
	<li><span>Emmanuel Rias<br><a href="http://www.bull.com/fr/index.php">Bull SA</a></span></li>
	<li><span>Christian Seitz<br><a href="http://www.informatik.uni-augsburg.de/ds/">University of Augsburg</a></span></li>
	<li><span>Pierre Vigneras<br><a href="http://www.bull.com/fr/index.php">Bull SA</a></span></li>
</ul>
	</div>

<table border="0" cellspacing="0" cellpadding="0" width="100%">
 <tr>
  <td valign="top" align="left"><h1>Contact us at <a href="mailto:jwt-dev@eclipse.org">jwt-dev@eclipse.org</a>!</h1></td>
 </tr>
</table>
</div>

<div id="rightcolumn">
   	 <div class="sideitem">
   			<h6>Incubation</h6>
   			<div align="center"><a href="/projects/what-is-incubation.php"><img 
        			align="center" src="/images/egg-incubation.png" 
        			border="0" alt="Incubation" /></a></div>
	</div>       			
</div>
EOHTML;


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