<?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'
/*******************************************************************************
 * Copyright (c) 2010 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors: Adrian Mos
 *    
 *******************************************************************************/

	$pageTitle 		= "Mangrove - Getting Involved";
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/default/style.css"/>');

	$html  = <<<EOHTML
<div id="midcolumn">
<h2>$pageTitle</h2>
<p>We are very happy that you are considering getting involved in Mangrove! 
You can get involved by contributing code, documentation, tutorials, bug reports, or by sending your suggestions and questions to the mailing list.</p>

<h3>Access to the code</h3>
<p><b>Browsing the Git repository:</b> http://git.eclipse.org/c/mangrove/org.eclipse.mangrove.git/<br />
<p><b>Committer access to the SVN:</b> ssh://COMMITTER_ID@git.eclipse.org/gitroot/mangrove/org.eclipse.mangrove.git<br />

<h3>Code structure</h3>
<p>The various Mangrove plugins are organized in different modules according to their purpose. The modules are:</p>
	<ul>
		<li><b>org.eclipse.soa.mangrove.core -</b> the EMF core plugins</li>
		<li><b>org.eclipse.soa.mangrove.branches -</b> the Transformation Plug-ins (initial existing code in STP-IM): contain the logic required to move and convert information between editors, tools and the core metamodel instance.</li>
		<li><b>org.eclipse.soa.mangrove.builder -</b> ensures the constant updating of SOA artifacts in the core as well as in the corresponding editors and tools (e.g. when saving a diagram, update the appropriate artifacts in the core while also enabling the update of the corresponding artifact in related editors or tools).</li>
		<li><b>org.eclipse.soa.mangrove.leaves -</b> the Editor Extensions (initial existing code in STP-IM), extensions and improvements to editors and tools for adding Mangrove-specific functionality at design time (e.g. views allowing the enrichment of certain SOA elements in the core or configuration menus for customizing the amount of information to be moved to/from the core).</li>
		<li><b>org.eclipse.soa.mangrove.roots -</b> the Runtime Connections: plugins for moving information to and from runtime tools and repositories when needed in order to have a "living" core, providing a good reality snapshot. This can be useful when diagrams are out of sync or when aggregated monitoring information is required to update graphical elements. Also for generating deployment information in a common format.</li>
	</ul>

<h3>Mailing List</h3>
<p>The information about the Mangrove DEV mailing list is available at: <b>https://dev.eclipse.org/mailman/listinfo/mangrove-dev</b></p>	

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