<?php
/********************************************************************************
 * Copyright (c) 2005,2017 The Eclipse Foundation, and others
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 1.0 which is available at
 * http://www.eclipse.org/legal/epl-v10.html.
 *
 * SPDX-License-Identifier: EPL-1.0
 ********************************************************************************/
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 = "The Eclipse Dash Project";

ob_start();
?>
<div id="maincontent">
	<div id="midcolumn">

		<h2>What is the Eclipse Dash Project?</h2>
		<p>Project Dash is a place where the community itself can collaborate
			on tools for community awareness and collaboration in support of our
			ultimate objective of committer quality and cooperation. This is very
			much a research project as we are not entirely sure what these tools
			will be.</p>

		<h2>Components</h2>

		<h3>Eclipse Project Handbook</h3>

		<p>This document provides you with the information that you need to
			create a new Eclipse open source project or become a committer on an
			existing one.</p>
			
		<ul>
		<li>View <a href="/projects/handbook">the handbook</a>;</li>
		<li>Clone <a href="https://git.eclipse.org/r/#/admin/projects/dash/org.eclipse.dash.handbook">the repository</a> (via Gerrit); or</li>
		<li>Report <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Dash&component=Handbook">an issue</a>.</li>
		</ul>
		
		<h3>Gently Dependency Scanner</h3>
		<p>
			<strong>Coming soon!</strong>
		</p>
		<p>This is a collection of tools for rooting through content to
			determine dependencies, legal documentation conformance, etc.</p>

		<h2>The Rest of The Story</h2>
		<p>
			See our <a href="http://wiki.eclipse.org/Dash_Project">wiki pages</a>
			for discussions, directions, plans, accomplishments, and all the
			rest.
		</p>

	</div>
</div>

<div id="rightcolumn">
	<div class="sideitem">
		<h6>Incubation</h6>
		<div style="text-align: center">
			<a href="/projects/what-is-incubation.php"><img
				src="/images/egg-incubation.png" alt="Incubation" /></a>
		</div>
	</div>
</div>

<?php
$html = ob_get_contents();
ob_end_clean();

$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
