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

#*****************************************************************************
#
# template.php
#
# Author: 		Denis Roy
# Date:			2005-06-16
#
# Description: Type your page comments here - these are not sent to the browser
#
#
#****************************************************************************

#
# Begin: page-specific settings.  Change these.
$pageTitle 		= "Tigerstripe";
$pageKeywords	= "Type, page, keywords, here";
$pageAuthor		= "Eric Dillon";
# End: page-specific settings
#

# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML

<div id="maincontent">

<div id="midcolumn">
<h1>$pageTitle</h1>
		<table border="0" width="750">
			<td valign="top" >
				<h3>An Eclipse Technology Subproject</h3>
				<p>Tigerstripe is a framework for Model Driven Engineering (MDE) with special support for the Telecommunications Industry.</p>
				<small>Note: this is the open-source incarnation of Tigerstripe that was available from the <a href="http://www.tigerstripedev.net">www.tigerstripedev.net</a> website.</small>
			</td>
			<td><img src="/tigerstripe/images/tsScreenShot.gif"/>
			</td>
		</table>
		
		<div class="homeitem3col">
			<h3>Get the latest about Tigerstripe !</a></h3>
			<ul>
				<li>Looking to get started with Tigerstripe, for more informations, or insight? Visit our <a href="http://wiki.eclipse.org/Tigerstripe">wiki!</a></li>
				<li>Looking for the latest build of Tigerstripe? Get it from <a href="downloads/allDownloads.php#latest">Here</a></li>
				<li>Tigerstripe Generators can be checked-out from the "<a href="generators">generators</a>" page</li>
				</ul>
		</div>
		<hr class="clearer" />
						
		<div class="homeitem">
			<h3>Why Tigerstripe?</h3>
			<p>Tigerstripe is focusing on themes that we found were typically not covered in existing MDE frameworks:</p> 
			<ul>
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#Focused_Modeling">Users of MDE frameworks may not be UML experts</a>...</li> 
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#Large_Model_Support">Enterprise Models are BIG</a>...</li> 
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#Distributed_Teams">Smaller pieces of Enterprise Models are owned by various Teams</a>...</li> 
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#MDE_Roles">MDE involves multiple roles</a>...</li> 
			</ul>
			<hr class="clearer" />
 		  	<div align="right">
				<a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F">Read more...</a>
		 	</div>
		</div>
		
		<div class="homeitem">
			<h3>Project News and Events</h3>
			<ul>
				<li><a href="http://www.eclipse.org/tigerstripe/downloads">Sep 23rd, 2008: Tigerstripe 0.4 is released!</li>
				<li><a href="http://www.eclipse.org/tigerstripe/downloads">July 1st, 2008: Tigerstripe 0.3 is released!</li>
				<li><a href="http://www.eclipse.org/tigerstripe/downloads">June 20th, 2008: Tigerstripe 0.3RC1 build available!</li>
				<li><a href="http://www.eclipse.org/tigerstripe/downloads">May 26th, 2008: Tigerstripe 0.3M2 build available!</li>
				<li><a href="http://www.eclipse.org/tigerstripe/downloads">May 6th, 2008: Tigerstripe 0.3M1 build available!</li>
				<li><a href="http://wiki.eclipse.org/TigerstripeF2F_20080421">April 21-23, 2008: Tigerstripe Committers summit, Seattle</a>, hosted by Cisco</li>
				<li><a href="http://live.eclipse.org/node/482">April 17th, 2008: Webinar on Tigerstripe</a>, co-presented with HP</li>
				<li>...</li>
			</ul>
		</div>
		
	</div>

	<div id="rightcolumn">
 		<div class="sideitem">
		   <h6>Incubation</h6>
 		  <div align="center">
 		  	<a href="/projects/what-is-incubation.php">
 		  		<img align="center" src="/images/egg-incubation.png" border="0" alt="Incubation" />
 		  	</a>
 		  </div>
 		</div>
 		<div class="sideitem">
 			<h6>New to Tigerstripe?</h6>
 			<ul>
 				<li><a href="http://wiki.eclipse.org/Tigerstripe_Community_Resources">Community Resources</a></li>
 				<li><a href="/tigerstripe/downloads.php">Downloads</a></li>
 				<li><a href="/tigerstripe/generators">Generators</a></li>
 				<li><a href="/tigerstripe/documentation/index.php">Documentation</a></li>
 				<li><a href="/tigerstripe/mailing-lists.php">Mailing Lists</a></li>
 				<li><a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.tigerstripe">Newsgroup</a></li>
 				<li><a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Tigerstripe">Report Bug</a></li>
 			</ul>
 		</div>
	</div>
</div>
EOHTML;


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