<?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());    

#
# Begin: page-specific settings.  Change these. 
$pageTitle 	= "Henshin - Getting Involved";
$pageKeywords	= "EMF, Henshin, model transformation, getting involved, community";
$pageAuthor	= "Daniel Strueber";

# 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)
# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

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

<div id="maincontent">
<div id="midcolumn">
<h1>$pageTitle</h1>

<p>As a community-driven project, we are happy to welcome new contributors offering their support to make Henshin better. To get involved with Henshin, you can follow any of the following steps:</p>

<h2>Join the mailing list</h2> 
<ul>
<li>We have two separate mailing lists: the <a href="https://dev.eclipse.org/mailman/listinfo/henshin-user">user mailing list</a> for user requests, and the <a href="https://dev.eclipse.org/mailman/listinfo/henshin-dev">developer mailing list</a> for coordinating the development of Henshin.</li>
</ul>

<h2>Contribute bug reports and feature requests</h2> 
<ul>
 <li>Use <a href="https://bugs.eclipse.org/bugs/describecomponents.cgi?product=EMFT.Henshin" target="_blank">Bugzilla</a> for bug reports and feature requests. To create issues in Bugzilla, all you need is <a href="https://accounts.eclipse.org/user/register">an Eclipse account</a>.</li>
 <li>To make sure that we can address your bug reports efficiently, please be as specific as possible. Provide a detailed, step-by-step description for reproducing the bug. Minimal example projects (use the <a href="http://agile.csc.ncsu.edu/SEMaterials/tutorials/import_export/index.html#section2_0" target="_blank">zip export</a>) and/or screenshots are a great help.</li>
 <li>For further information, see: <a href="https://wiki.eclipse.org/FAQ_How_do_I_report_a_bug_in_Eclipse%3F" target="_blank">FAQ How do I report a bug in Eclipse?</a></li>
</ul>



<h2>Contribute code</h2> 
<ul>
 <li>Check out our codebase from the <a href="http://git.eclipse.org/c/henshin/org.eclipse.emft.henshin.git" target="_blank">Git repository</a> at Eclipse. Please refer to our instructions for <a href="https://wiki.eclipse.org/Henshin_Committer_Instructions#imports" target="_blank">importing projects and resolving dependencies</a>. </li>
 <li>Ideally, please use <a href="https://git.eclipse.org/r/#/q/status%3Aopen+project%3Ahenshin/org.eclipse.emft.henshin" target="_blank">Gerrit</a> to contribute changes to the codebase. This allows us to apply our quality assurance process to all contributions. In our Wiki, we provide more detailed descriptions for <a href="https://wiki.eclipse.org/Henshin_Committer_Instructions" target="_blank">working with Gerrit</a>.</li>
 <li>Alternatively, you can also submit patches via e-mail -- especially if you want to contribute relatively small changes that do not justify the overhead of setting up Gerrit. In this case, <a href="#get-in-touch">get in touch with us</a>.</li>
</ul>


<h2>Contribute examples</h2>

<ul>
<li>Since our <a href="https://www.eclipse.org/henshin/examples.php" target="_blank">examples section</a> is one of the most important reference points for new Henshin users, we are thankful for additions to this section. If you have an idea for a contribution in this direction, <a href="#get-in-touch">get in touch with us</a>.</li>
</ul>


<h2>Contribute documentation</h2> 
<ul>
<li>Our <a href="https://wiki.eclipse.org/Henshin" target="_blank">Wiki</a> is another important resource for users, and we aim to make it as accurate and complete as possible. To improve articles in the Wiki or contribute new articles, all you need is  <a href="https://accounts.eclipse.org/user/register">an Eclipse account</a>. For feedback, <a href="#get-in-touch">get in touch with us</a>.</li>
</ul>



<h2><a name="get-in-touch"></a>Get in touch with us</h2> 
<ul>
<li>Do not hesitate to contact us with ideas and improvement suggestions. For establishing a first contact, please send an e-mail to  <a href="mailto:&#100;&#097;&#110;&#115;&#116;&#114;&#117;&#064;&#099;&#104;&#097;&#108;&#109;&#101;&#114;&#115;&#046;&#115;&#101;">the project lead</a> (Daniel Str&uuml;ber).</li>
</ul>



</div>
</div>

EOHTML;

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

?>
