<?php
/*******************************************************************************
 * Copyright (c) 2009, 2013 Eclipse Foundation and others.
* 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:
*		Eclipse Foundation - Initial version
*		Anthony Hunter - changes for GMF Runtime
* 		Michael Golubev - changes for GMF Tooling
********************************************************************************/
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());

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

$html  = <<<EOHTML
<div id="midcolumn">
<h2>$pageTitle</h2>

<p>As every Eclipse project, GMF Tooling is strongly dependent on active support by its community.
You may become part of that community and get involved by reporting bugs or enhancement request,
by contributing patches, by participation in disscussions on the mailing list, or by supporting the
maintaining of the GMF wiki.</p>

<h3>Contributor Mailing List</h3>
<p>Technical or organizational discussions (no help wanted questions) around the GMF project take place
at the <a href="http://dev.eclipse.org/mailman/listinfo/gmf-dev">GMF Developer Mailing List</a>.
It is intended for use by developers actually working on or otherwise contributing to day-to-day
development of all the GMF projects (Tooling, Runtime and Notation ). Older discussions can be found in the
<a href="http://dev.eclipse.org/mhonarc/lists/gmf-dev/maillist.html">Mailing List Archive</a>.</p>

<h3>How to get started: Sources</h3>
<p>
	GMF Tooling sources are located in the <a href="https://git.eclipse.org/c/gmf-tooling/org.eclipse.gmf-tooling.git/">Eclipse GIT repository</a>. 
	Sources for this web-site can be found in <a href="https://git.eclipse.org/c/www.eclipse.org/gmf-tooling.git/">separate repository</a>.
</p>
<p>
	To improve the contributor experience, GMF-Tooling has adopted Gerrit as a main contribution tool. 
	Check <a href="https://wiki.eclipse.org/Gerrit">Wiki</a> on how to setup Gerrit for any Eclipse project. 
	You may also find useful one of the standard Team Project Set files (from Eclipse go to File / Import / Team wizard):
	<ul> 
	<li><a href="/gmf-tooling/developers/projectSet-minimum.psf">plugins only</a>,</li> 
	<li><a href="/gmf-tooling/developers/projectSet-with-releng.psf">plugins and releng (features, update site, etc)</a></li>
	<li>or <a href="/gmf-tooling/developers/projectSet-examples.psf">examples</a>.</li>
	</ul>
</p>

<h3>How to get started: Target Platform</h3>
<p>
	The simplest way to setup target platform and ensure that all required dependencies are installed is as follows: 
	<ul> 
	<li>create separate Eclipse installation, start from either <a href="http://www.eclipse.org/downloads/packages/">Modeling or DSL Package</a></li>
	<li>ensure that appropriate update site for Eclipse Simultaneous Release is enabled</li> 
	<li>install GMF Tooling from appropriate <a href="/gmf-tooling/download.php">update sites</a>, ensure that "Contact all update sites" option is enabled</li> 
	<li>use the result installation as a target platform: (Eclipse Preferences / Plugin Development / Target Platform)</li>
	</ul>
</p>


<h3>How to get started: Builds</h3>
<p>
	GMF Tooling uses Tycho / Maven for builds, detailed instructions on how to build it locally may be found <a href="https://wiki.eclipse.org/Graphical_Modeling_Framework/Contributors_Area#Build_locally">at the Wiki</a>.
</p>
<p>
	For production GMF Tooling uses <a href="https://hudson.eclipse.org/gmf-tooling/">dedicated Hudson instance</a>, the Gerrit-triggered builds may be found <a href="https://hudson.eclipse.org/gmf-tooling/job/gerrit-tycho-gmp.gmf.tooling/">here</a>.
</p>
<p>
Check GMF Tooling <a href="https://wiki.eclipse.org/Graphical_Modeling_Framework/Contributors_Area">Contributors Area</a> Wiki.
</p>

</div>
EOHTML;

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