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

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "BPEL M6 information";
	$pageKeywords	= "M6,BPEL,info";
	$pageAuthor		= "Bob Brodt";
	
	# 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)
	include($_SERVER['DOCUMENT_ROOT'] . "/$projectShortName/items/users_menu.php");
	include($_SERVER['DOCUMENT_ROOT'] . "/$projectShortName/items/milestones_menu.php");
		
	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<STYLE type="text/css">
span.feature {
	font-size: 18pt;
	font-weight: bold;
}

span.feature:before {
   content: counter(featureId) ". " ;
   counter-increment: featureId;
}
</STYLE>
	
<div id="maincontent">
	<div id="midcolumn" style="counter-reset: featureId;" >
		<h1>$pageTitle</h1>
		<h2>What will be in M6 ?</h2>
		
		<p>
		This release marks the 1.0 version of BPEL Designer.
		The APIs are now stable and we have quite a large community using, and contributing to, the project.
		This release will also be joining the Juno release train, scheduled for GA in May, 2012. 
		</p>

		<!-- feature -->
		<p>
		<span class="feature"></span>
		<b>Juno Release Train:</b> BPEL Designer is getting on the train and will be part of the SOA suite of products. 
		</p>
		
		<!-- feature -->
		<p>
		<span class="feature"></span>
		<b>Reorganized Update Sites:</b> There has been some confusion about where to get the "official, latest &amp; greatest software".
		This is partly due to the fact that older versions were still being delivered as part of larger product offerings and we didn't
		want to break existing builds by moving the bits around. We are working on reorganizing the update site and being able to offer
		platform-specific builds to support older versions.   
		</p>
		
		As always, help and feedback from the community is always appreciated, be it in the form of bug fixes or just general griping/complaining about stuff that's broken.
		Please contact the <a href="/$projectShortName/team.php">BPEL Team</a> if you have some spare cycles to offer ;) 
	</div>
</div>


EOHTML;


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