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

	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "RT Project Charter";
	$pageKeywords	= "RT PMC project lead";
	$pageAuthor		= "Jeff McAffer";
	
$html = <<<EOHTML
	<div id="midcolumn">
		<h2>RT Project Charter</h2>
          <p>This charter was developed in accordance with the <a href="http://www.eclipse.org/projects/dev_process/proposal-phase.php" class="external text" title="http://www.eclipse.org/projects/dev_process/proposal-phase.php" rel="nofollow">Eclipse Development Process</a> and outlines the mission, scope, organization, and development process for the Eclipse Runtime Project (RT). This document extends the <a href="http://www.eclipse.org/projects/dev_process/Eclipse_Standard_TopLevel_Charter_v1.1.php" class="external text" title="http://www.eclipse.org/projects/dev_process/Eclipse_Standard_TopLevel_Charter_v1.1.php" rel="nofollow">Eclipse Standard Top-Level Charter v1.1</a>, and includes the required content and overrides which follow. It is anticipated that as the standard charter is updated, this charter will incorporate the changes and make adjustments as seen fit by the PMC, and with approval from the EMO and board of directors.
</p>

<h3>Overview</h3>

<p>Since the creation of the Eclipse Rich Client Platform (RCP) and the adoption of Equinox and OSGi in 2004, interest in and use of Eclipse technologies in runtime scenarios has been steadily increasing. Initially, the focus of these runtime efforts was on desktop or client technologies.  The community has steadily found new and innovative uses for Equinox and the Eclipse platform in areas such as <a href="http://www.eclipse.org/ercp/" class="external text" title="http://www.eclipse.org/ercp/" rel="nofollow">devices</a>, <a href="http://www.eclipse.org/rap/" class="external text" title="http://www.eclipse.org/rap/" rel="nofollow">rich internet applications</a> and <a href="http://www.eclipse.org/equinox/server/" class="external text" title="http://www.eclipse.org/equinox/server/" rel="nofollow">servers</a>. 

</p><p>RT is an open source collaborative software development project dedicated to supporting and enhancing these efforts and providing a generic, extensible, standards-based runtime platform.
</p><p>This document describes the composition and organization of the project, roles and responsibilities of the participants, and development process for the project.
</p>


<h3>Mission</h3>
<p>RT is designed to foster, promote and house runtime efforts in the Eclipse community.  These efforts strive towards the common goal of providing a uniform component model across a wide variety of computing environments.  The Equinox framework and OSGi form the basis of this infrastructure.  
</p><p>RT projects target "clients" and "servers" across embedded devices, desktops, and enterprise systems, and provide those intermediate software services which enable applications to be more easily and concisely constructed across these environments.  This supports and extends the Equinox vision of a consistent programming and component model where developers create application domain code that runs on a variety of platforms.  
</p><p>By providing a consistent symmetric architecture, RT technology enables developers to focus on the business problem at hand and still have many system architecture options available at deployment time.
</p>

<h3>Scope</h3>

<p>Concretely, RT projects supply the Equinox implementation of the OSGi core framework specification and a set of bundles that implement additional services and other infrastructure for running applications on the Equinox framework and OSGi-based systems.  The nature of this work is scoped as follows:
</p>
<ul><li> Developing and delivering the OSGi framework implementation used for all of Eclipse. 
</li><li> Implementation of all aspects of the OSGi specification (including but not limited to the Enterprise Expert Group, Mobile Expert Group and Vehicle Expert Group work).
</li><li> Investigation and research related to future versions of OSGi specifications and related runtime issues.
</li><li> Implementation of key framework services and extensions needed for running Eclipse (e.g., the Eclipse Adaptor, Extension registry) and deemed generally useful to systems using Equinox.
</li><li> All implementations must be based on OSGi and run on Equinox.
</li><li> The implementation of generally applicable runtime standards (e.g., OASIS, JCP).
</li><li> Incidental tooling efforts to enable or facilitate particular runtime functions in conjunction with (e.g., as a component of) a sub-project.
</li></ul>

<h3>Out of Scope</h3>

<ul><li> Major tooling efforts
</li><li> Industry-specific vertical technologies
</li></ul>
			<p>&nbsp;</p>
		
	</div>
EOHTML;

generateRapPage( $App, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html );
?>

