<?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: 		Nathan Gervais
	# Date:			2007-12-05
	#
	# Description: DTP Website
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Data Tools Platform (DTP) Project";
	$pageKeywords	= "eclipse, data tools, dtp, datatools";
	$pageAuthor		= "Linda Chan";
	
	ob_start();
	?>
	<div id="midcolumn">
		<h1><?=$pageTitle; ?></h1>
		<div class="homeitem3col">
			<h3>Project Overview</h3>
			<p>"Data Tools" is a vast domain, yet there are a fairly small number of foundational requirements when developing with or managing data-centric systems. A developer is interested in an environment that is easy to configure, one in which the challenges of application development are due to the problem domain, not the complexity of the tools employed. Data management, whether by a developer working on an application, or an administrator maintaining or monitoring a production system, should also provide a consistent, highly usable environment that works well with associated technologies.</p>
			<p>Such an environment starts with key frameworks designed both for use and extensibility. Examples include location and management of data source drivers, and configurations for access to particular data source instances. Once a connection is successfully made, the next task often is to explore the data source, making changes as required. Some of these operations might be carried out by GUI actions, others directly through commands. For example, users - both developers and administrators - typically will create, edit, and test SQL for these commands. Assistance in editing SQL through code completion, formatting, and dialect specialization, greatly enhances productivity. Further, the ability to execute or debug commands, both SQL and stored procedures, rounds out the rapid development process that Eclipse supports so well. Finally, bridging chasms, whether between relational, object, or other structures, presents challenges that data management tooling should address.</p>
			<p>The Data Tools Platform project is an open source project of eclipse.org, overseen by a <a href="/datatools/leadership.php">Project Management Committee (PMC) and project leaders.</a></p>
		</div>
		<hr class="clearer">
		<div class="homeitem">
			<h3>What's New</h3>
			<p>See <a href="http://wiki.eclipse.org/index.php/Data_Tools_Platform_Project">DTP Wiki</a> for the latest release information.</p>				
		</div>
		
		<div class="homeitem">
			<h3>Project Principles</h3>
			<p>The Data Tools Platform (DTP) project will include extensible frameworks and exemplary tools, enabling a diverse set of plug-in offerings specific to particular data-centric technologies and supported by the DTP ecosystem. In the spirit of Eclipse, the project will be guided by the following values:</p>
			<ul>
				<li>Vendor neutrality</li>
				<li>Extensibility</li>
				<li>Community Involvement</li>
				<li>Transparency</li>
				<li>Agile development</li>
			</ul>			
		</div>
	</div>
	<div id="rightcolumn">
		<div class="sideitem">
			<h6>Getting Started</h6>
			<ul>
				<li><a href="http://wiki.eclipse.org/index.php/Data_Tools_Platform_Project">DTP Wiki</a></li>
				<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=DataTools&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=helpwanted&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">DTP "helpwanted" bugs list</a></li>
				<li><a href="http://wiki.eclipse.org/index.php/Getting_Started_with_DTP">Getting Started Guide</a></li>
				<li><a href="http://www.eclipsezone.com/articles/graham-dtp/?source=archives">Overview Article on EclipseZone</a></li>
				<li><a href="http://wiki.eclipse.org/index.php/Specialized_Database_Support">Specialized Database Support for DTP</a></li>
				<li><a href="http://www.eclipse.org/datatools/presentations/106.%20How%20to%20Improve%20Database%20Connectivity%20With%20the%20Data%20Tools%20Platform.pdf">EclipseWorld 2006 Presentation: How to Improve Database Connectivity</a></li>
				<li><a href="http://www.eclipse.org/datatools/presentations/Data%20Tools%20for%20Rich%20Clients.pdf">EclipseCon 2006 Presentation: Data Tools for Rich Clients</a></li>
				<li><a href="http://www.eclipse.org/datatools/presentations/EclipseEuropeSummit_DTP_Presentation.pdf">Eclipse Summit Europe 2006 Presentation</a></li>
				<li><a href="http://www.eclipse.org/datatools/downloads.php">Download DTP</a></li>
			</ul>
		</div>
	</div>
<?

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