<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>The Embedded Rich Client Platform Subproject</title>
<link rel="stylesheet" href="../eclipse-webtools/templates/eclipse/eclipse.css"></head>
<body text="#000000" bgcolor="#ffffff" link="#0000ee" vlink="#551a8b" alink="#ff0000">
&nbsp; 
<table BORDER=0 CELLSPACING=5 CELLPADDING=2 WIDTH="100%" >
  <tr> 
    <td ALIGN=LEFT width="60%"><font class=indextop>the embedded rich client platform 
      (eRCP) </font><br>
      <font class=indexsub>Project Charter</font></td>
    <td WIDTH="40%"><img SRC="../../images/Idea.jpg" HSPACE=50 height=86 width=120 align=CENTER></td>
  </tr>
</table>

<p>This proposal is in the Project Proposal Phase (as defined in the <a href="/projects/dev_process/">Eclipse 
  Development Process document</a>) and is written to declare the intent and scope 
  of a proposed project called the Embedded Rich Client Platform, or eRCP. In 
  addition, this proposal is written to solicit additional participation and inputs 
  from the Eclipse community. You are invited to comment on and/or join the project. 
  Please send all feedback to the <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.ercp">http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.ercp</a> 
  newsgroup. </p>
<table BORDER=0 CELLSPACING=5 CELLPADDING=2 WIDTH="100%" >
  <tr> 
    <td ALIGN=LEFT VALIGN=TOP COLSPAN="2" BGCOLOR="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">The Eclipse Technology Project - eRCP Charter - The Eclipse Foundation</font></b></td>
  </tr>
  <tr> 
    <td> 
      <p><b>Overview</b><br>
        The Embedded Rich Client Platform (eRCP) Project is an Eclipse Technology 
        sub-project in line with the Technology Project's mission of investigation 
        and innovation in the platform and tools areas.</p>
      <p><b>Mission</b><br>
        The mission of the eRCP Project is to investigate how existing Eclipse 
        RCP technologies can be used or modified for use within embedded devices. 
        The project will primarily concentrate on fulfilling the requirements 
        of mobile devices. Should the investigative phase reveal that RCP technologies 
        may be used, then the intension of the project is to develop open source 
        API specifications, reference implementations, and test suites to enable 
        eRCP application development for embedded devices. </p>
      <p><b>Scope</b><br>
        The eRCP project focuses on adapting the following Eclipse components 
        for the embedded space:</p>
      <ul>
        <li>eSWT</li>
        <li>Eclipse Runtime and Extension Point Framework</li>
        <li> eJface</li>
        <li>eWorkbench</li>
        <li>eUpdate </li>
      </ul>
      <p>There is a component workgroup to focus on each of these components. 
      </p>
      <p><b>Project Management</b><br>
        The eRCP Project as a whole falls under the scope of the Technology Project 
        Charter. This document shall only record additions or exceptions to that 
        Charter. The components of eRCP are managed by the eRCP Project Lead(s).</p>
      <p>The Project Lead is expected to ensure that:</p>
      <ul>
        <li>All components workgroups operate effectively by providing leadership 
          to guide the Project's overall direction and by removing obstacles, 
          solving problems, and resolving conflicts.</li>
        <li>All component plans, technical documents and reports are publicly 
          available</li>
        <li>All components workgroups operate using open source rules of engagement: 
          meritocracy, transparency, and open participation.</li>
      </ul>
      <p><b>Committers</b><br>
        In addition to the guidelines for committers set forth in the Technology 
        Project Charter, the following rules apply to committers of a particular 
        component:</p>
      <ol>
        <li>Multiple committers from a single company are allowed, but each company 
          represented shall have only one vote for any activities which require 
          a vote of committers.</li>
        <li>Removal of committers requires a majority + 1 vote of existing committers.</li>
      </ol>
      <p><b>Project Organization</b><br>
        The Project Lead designates the initial set of committers and component 
        leads for each component of the project.</p>
      <p> <b>The Development Process</b><br>
        Each component shall deliver a component development and build plan to 
        the Project Lead. These shall be consolidated by the Project Lead for 
        review by the PMC.</p>
    </td>
  </tr>
</table>

</body>
</html>
