<?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'

$branding = <<<EOBRANDING
<div id="branding">
<img src="images/projectdash.gif" alt="Dash"/>
</div>
EOBRANDING;
$Menu->setProjectBranding($branding);

$pageTitle = "Dash";

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

<div style="text-align: center">
<a href="/dash/monkey-help.php?key=installing"><img 
onmouseover="javascript:this.src='images/getmonkey-on.gif'" 
onmouseout="javascript:this.src='images/getmonkey-off.gif'" 
src="images/getmonkey-off.gif" 
alt="Get Monkey"/></a>
</div>


<h2>What is Project Dash?</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>Things You Can Get And Use</h2>

<h3>Dashboard</h3>

<p>The dashboard is a set of web pages (and REST web APIs) that monitor the recent activity of all the
Eclipse projects and committers. The results are 
on <a href="http://dash.eclipse.org/">the dashboard pages</a> and
the code is slowly being moved into the Dash CVS repository.</p>

<h3>Eclipse Monkey</h3>

<p>Eclipse Monkey is a dynamicscripting tool for the automation of routine programming tasks. Monkey scriptsare little Javascript programs using either the Eclipse APIs or custom MonkeyDOMs. For details on how to download, how to use, and how to share, 
<a href="monkey-help.php?key=installing">see the Monkey Help page</a>.
</p>
<p>If you'd like to help with the development of Eclipse Monkey, you
can materialize all the relevant source components using 
<a href="/buckminster">Buckminster</a> 
(<a href="http://download.eclipse.org/technology/buckminster/updates">use their update site</a>).
Simply use File &gt; Open File... &gt; <code>http://www.eclipse.org/dash/monkey/monkey.cquery</code>
and choose <em>Resolve and Materialize</em>.
</p>

<!--
<h2>Dash Time</h2>
<p>Dash Time is a regular virtual gathering
 for talking about Dash or Eclipse processes or community or technology or anything else that matters. 
 This is in the spirit of <a href="http://en.wikipedia.org/wiki/Salon_%28gathering%29">salon</a> - a gathering of stimulating people to increase their knowledge 
 through conversations and readings. And, in that spirit, we promise that no action items will be assigned.
</p><p>
Tuesdays, 10am Pacific time (1pm Eastern time). We'll be using simultaneous conference call, 
irc, and wiki that are all described on the <a href="http://wiki.eclipse.org/index.php/DashTime">wiki page</a>. We'll also use the wiki page as a 
scratchpad and a trail of conversations that we'll keep as long as they are useful.
</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();

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