<?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 M5 information";
	$pageKeywords	= "M5,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 M5 ?</h2>
		
		<p>
		This will be primarily a bug fix release to stabilize the existing code before we add any new features.
		Here are some of the known problem areas that we are currently working on:
		</p>

		<!-- feature -->
		<p>
		<span class="feature"></span>
		<b>Deployment framework:</b> this needs to be updated to use the WTP JEE tools. See this <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324823">bugzilla</a> for more info. 
		</p>
		
		<!-- feature -->
		<p>
		<span class="feature"></span>
		<b>Undo/redo:</b> this is only working at about 90% capacity.
		We need to ensure that all editing actions are filtered through the GEF command stack.  
		</p>
		
        <!-- feature -->
		<p>
		<span class="feature"></span>
		<b>Refactoring:</b> renaming of external WSDL and XSD resources and endpoints causes some...interesting side-effects.
		</p>

        <!-- feature -->
		<p>
		<span class="feature"></span>
		<b>Validation:</b> there are some serious issues with how malformed XML is handled.
		Mostly it's ignored because the editor uses a fault tolerant XML parser that tries really hard to make sense of garbage.
		We need to report XML parsing errors when the editor resource is loaded and saved.
		</p>

        <!-- feature -->
		<p>
		<span class="feature"></span>
		<b>Nightly builds:</b> we hope to have nightly builds available for public consumption very soon.
		This will include migration of the CVS repository to Git to ease the pain of source code management.
		Of course, the existing CVS repository will remain intact and in-sync with the new Git repository.
		</p>

        <!-- feature -->
		<p>
		<span class="feature"></span>
		<b>General bug fixing:</b> Some serious bug triage is in order and as soon as we have a spare moment...
		Check out the list of
		<a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=BPEL&query_format=specific&order=bug_id%20DESC&query_based_on=">
		known bugs</a>.
		</p>
		
		There are quite a few tasks to complete before the M5 release and help is always appreciated.
		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);
?>
