<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 9">
<meta name=Originator content="Microsoft Word 9">
<link rel=File-List href="./eclipse-charter_files/filelist.xml">
<link rel=Edit-Time-Data href="./eclipse-charter_files/editdata.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<title>Eclipse Tools Project</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>Dave Thomson</o:Author>
  <o:LastAuthor>Dave Thomson</o:LastAuthor>
  <o:Revision>2</o:Revision>
  <o:TotalTime>8</o:TotalTime>
  <o:Created>2001-11-25T03:37:00Z</o:Created>
  <o:LastSaved>2001-11-25T03:37:00Z</o:LastSaved>
  <o:Pages>2</o:Pages>
  <o:Words>2527</o:Words>
  <o:Characters>14406</o:Characters>
  <o:Lines>120</o:Lines>
  <o:Paragraphs>28</o:Paragraphs>
  <o:CharactersWithSpaces>17691</o:CharactersWithSpaces>
  <o:Version>9.2720</o:Version>
 </o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]-->
<style>
<!--
 /* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
 /* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
h1
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	mso-outline-level:1;
	font-size:21.0pt;
	font-family:Arial;
	mso-font-kerning:18.0pt;
	font-weight:bold;}
h2
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-line-height-alt:10.5pt;
	mso-pagination:widow-orphan;
	mso-outline-level:2;
	font-size:18.0pt;
	font-family:Arial;
	font-weight:bold;}
h3
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	mso-outline-level:3;
	font-size:14.0pt;
	font-family:Arial;
	font-weight:bold;}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:blue;
	text-decoration:underline;
	text-underline:single;}
p
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:Arial;
	mso-fareast-font-family:"Times New Roman";}
code
	{mso-ascii-font-family:"Courier New";
	mso-fareast-font-family:"Courier New";
	mso-hansi-font-family:"Courier New";
	mso-bidi-font-family:"Courier New";}
pre
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
	font-size:10.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:"Courier New";}
p.indextop, li.indextop, div.indextop
	{mso-style-name:indextop;
	margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:24.0pt;
	font-family:Verdana;
	mso-fareast-font-family:"Times New Roman";
	mso-bidi-font-family:Arial;
	font-weight:bold;}
p.indexsub, li.indexsub, div.indexsub
	{mso-style-name:indexsub;
	margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:7.5pt;
	font-family:Arial;
	mso-fareast-font-family:"Times New Roman";
	color:#8080FF;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
 /* List Definitions */
@list l0
	{mso-list-id:97258917;
	mso-list-type:hybrid;
	mso-list-template-ids:938493464 -1722270466 1328035828 162058584 -1583577958 1708689942 358257648 -789267326 1364346306 1905806722;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1
	{mso-list-id:1140729447;
	mso-list-type:hybrid;
	mso-list-template-ids:-548665272 99540706 454694258 918687008 -856886194 92689176 392868292 981366132 -2098539492 -955852746;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l2
	{mso-list-id:2083134086;
	mso-list-type:hybrid;
	mso-list-template-ids:-2080353412 1356621094 -131857262 -1447128774 -425566188 1893082798 1171154726 2031539886 1440021566 -1653822288;}
@list l2:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</style>
</head>

<body lang=EN-CA link=blue vlink=blue style='tab-interval:.5in'>

<div class=Section1>

<table border=0 cellspacing=5 cellpadding=0 width="100%" style='width:100.0%;
 mso-cellspacing:3.7pt;margin-left:8.5pt;mso-padding-alt:1.5pt 1.5pt 1.5pt 1.5pt'>
 <tr>
  <td colspan=2 valign=top style='background:#0080C0;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
        <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial;
  color:white'>Eclipse Project Charter - v0.52</span></b><span
  style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td style='padding:1.5pt 1.5pt 1.5pt 1.5pt'>
  <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'>Overview</span></b><span
  style='font-size:10.0pt;font-family:Arial'><br>
  The Eclipse Project is a collaborative software development project dedicated
  to providing a robust, full-featured, commercial-quality, and freely
  available industry platform for the development of highly integrated tools.
  This document describes the composition and organization of the project,
  roles and responsibilities of the participants, and development process for
  the project. The project charter is a living document that will be updated to
  reflect the evolution of the development process evolves over time.<o:p></o:p></span></p>
  <p><b>Mission</b><br>
  Eclipse is a kind of universal tool platform - an open extensible IDE for
  anything and yet nothing in particular. The real value comes from tool
  plug-ins that &quot;teach&quot; Eclipse how to work with things - java files,
  web content, graphics, video - almost anything one can imagine. Eclipse
  allows tool builders to independently develop tools that integrate with other
  people's tools so seamlessly you can't tell where one tool ends and another
  starts.</p>
  <p>The success of Eclipse depends on how well it enables a wide range of tool
  builders to build best of breed integrated tools. But the real vision of
  Eclipse as an industry platform is only realized if these tools from
  different tool builders can be combined together by users to suit their
  unique requirements, in ways that the tool builders never even imagined. </p>
  <p>The mission of the Eclipse Project is to adapt and evolve the Eclipse
  technology to meet the needs of the Eclipse tool building community and its
  users, so that the vision of Eclipse as an industry platform is realized.</p>
  <p><b>Scope</b><br>
  The Eclipse Project encompasses both the Eclipse platform technology itself,
  and a set of tools that together form the software development kit (SDK) for
  building Eclipse-based tools. The Eclipse Project will be structured into the
  following subprojects:</p>
  <ul type=disc>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l1 level1 lfo1;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Platform - the platform upon
       which all other Eclipse based tools are built. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l1 level1 lfo1;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>JDT - The Java development
       tooling, or Java IDE. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l1 level1 lfo1;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>PDE - Plug-in development
       environment. <o:p></o:p></span></li>
  </ul>
  <p><img width=435 height=134 id="_x0000_i1025"
  src="eclipse-structure.gif"></p>
  <p>&nbsp;</p>
  <p>The Platform subproject is further subdivided into the following
  components:</p>
  <table border=0 cellpadding=0 width="75%" style='width:75.0%;mso-cellspacing:
   1.5pt'>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Ant<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Ant
    Java based build tool<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Compare<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Universal
    Compare Facility<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Core<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Core
    libraries<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Debug<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Universal
    Debugger<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Help<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Help
    system<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Scripting<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Scripting
    support<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Search<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Integrated
    Search Facility<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>SWT<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Standard
    Widget Toolkit<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>UI<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>User
    Interface libraries<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Update<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Dynamic
    Update/Install/Field Service<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>VCM<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Versioning
    and Configuration Management<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>WebDAV<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>WebDAV
    integration<o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  <p>The JDT subproject is further subdivided into the following components:</p>
  <table border=0 cellpadding=0 width="75%" style='width:75.0%;mso-cellspacing:
   1.5pt'>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>JDT
    Core<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Compiler
    and Builder<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>JDT UI<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Java
    IDE User Interface<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>JDt
    Debug<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Debug
    support for Java<o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  <p>The PDE subproject is further subdivided into the following components:</p>
  <table border=0 cellpadding=0 width="75%" style='width:75.0%;mso-cellspacing:
   1.5pt'>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>PDE
    Core<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>PDE
    Build<o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>PDE UI<o:p></o:p></span></p>
    </td>
    <td width="75%" style='width:75.0%;padding:.75pt .75pt .75pt .75pt'>
    <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>PDE
    User Interface<o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  <p><b>Project Management Committee</b><a name=PMC></a><br>
  The Eclipse Project is managed by a small group known as the Eclipse Project
  Management Committee [Eclipse PMC].</p>
  <p>The Eclipse PMC is responsible for the strategic direction and success of
  the Eclipse Project. This governing and advisory body is expected to ensure
  the project's welfare and guide its overall direction. The PMC is responsible
  for overall development direction, conflict resolution, development processes
  and infrastructure, and the overall technical success of the project.</p>
  <p>The PMC has the following responsibilities:</p>
  <ul type=disc>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Providing the leadership and
       vision to guide the project's overall direction. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Providing assistance and
       support to the developers working on the project by removing obstacles,
       solving problems, and resolving conflicts. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Ensuring that subproject
       plans are produced, and presenting these plans to the Board. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Establishing the development
       processes and infrastructure needed for the development team to be
       effective. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Recommending new subprojects
       to the Board, if appropriate, and appointing the subproject lead. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Establishing the initial set
       of subproject committers, and establishing the procedures for voting in
       new committers. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Helping to ensure that subprojects
       have enough contributors, and helping to fill vacancies in roles. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Producing &#8220;how to get
       involved&#8221; guidelines to help new potential contributors get started.<o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Coordinating relationships
       with other eclipse.org projects. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Facilitating code or other donations
       by individuals or companies. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Ensures licensing is
       compatible with licensing established by board. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l0 level1 lfo2;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Representing the project to
       the outside world. <o:p></o:p></span></li>
  </ul>
  <p>The PMC Lead is appointed by the Board. The initial PMC is selected by the
  PMC Lead. Thereafter, to become a member of the PMC, an individual must be
  nominated by a member of the PMC, and unanimously approved by all PMC
  members. The goal is to keep the membership of the PMC very small.</p>
  <p>In the unlikely event that a member of the PMC becomes disruptive to the
  process or ceases to contribute for an extended period, the member may be
  removed by unanimous vote of remaining PMC members.</p>
  <p>The PMC is responsible for producing and maintaining the project charter.
  Development must conform to any rules or processes outlined in the charter,
  so a change to the development process may necessitate a change to the
  charter.</p>
  <p>The work of the PMC is shared by the PMC members. All PMC members are
  expected to contribute actively. In particular, PMC members are expected to
  take responsibility for overseeing certain areas of work in the project, and
  reporting to the PMC on these areas.</p>
  <p>Active participation in the user newsgroup and the appropriate developer
  mailing lists is a responsibility of all PMC members, and is critical to the
  success of the project. PMC members are required to monitor the main project
  mailing list, and the developer mailing lists for all subprojects and
  components they are overseeing.</p>
  <p><b>Roles</b><br>
  The Eclipse Project is a meritocracy -- the more you contribute, and the
  higher the quality of your contribution, the more you are allowed to do.
  However with this comes increased responsibility.</p>
  <p><b>Users</b><br>
  Users are the people who use the products that the Project produces. People
  in this role aren't contributing code, but they are using the products,
  reporting bugs, and making feature requests and suggestions. Users are
  encouraged to participate through the user newsgroup(s), asking questions,
  providing suggestions, and helping other users. Users are also encouraged to
  report problem reports using the bug tracking system. </p>
  <p><b>Developers</b><br>
  Users who contribute code or documentation become developers. Developers are
  the people who contribute code, fixes, documentation, or other work that goes
  into the product. Developers are also encouraged to participate in the user
  newsgroup(s), and should monitor the developer mailing list associated with
  their area of contribution. When appropriate, developers may also contribute
  to development design discussions related to their area of contribution.
  Developers are expected to be proactive in reporting problems in the bug
  tracking system.</p>
  <p><b>Committers</b><br>
  Developers who give frequent and valuable contributions to a subproject, or
  component of a subproject (in the case of large subprojects), can have their
  status promoted to that of a &quot;Committer&quot; for that subproject or
  component respectively. A Committer has write access to the source code
  repository for the associated subproject (or component), and gains voting
  rights allowing them to affect the future of the subproject (or component).</p>
  <p>In order for a Developer to become a Committer, another Committer for the
  subproject (or component) can nominate that Developer or the Developer can
  ask for it. Once a Developer is nominated, the Committers for the subproject
  (or component) will vote. If there are at least 3 positive votes and no
  negative votes, the Developer is recommended to the PMC for commit
  privileges. If the PMC approves, the Developer is converted into a Committer
  and given write access to the source code repository for that subproject (or
  component). Becoming a Committer is a privilege that is earned by
  contributing and showing discipline and good judgement. It is a
  responsibility that should be neither given nor taken lightly</p>
  <p>At times, Committers may go inactive for a variety of reasons. The
  decision making process of the project relies on active committers who
  respond to discussions and votes in a constructive and timely manner. The PMC
  is responsible for ensuring the smooth operation of the project. A Committer
  that is disruptive, does not participate actively, or has been inactive for
  an extended period may have his or her commit status removed by the PMC.</p>
  <p>Active participation in the user newsgroup and the appropriate developer
  mailing lists is a responsibility of all Committers, and is critical to the
  success of the project. Committers are required to monitor and contribute to
  the user newsgroup.</p>
  <p>Committers are required to monitor the developer mailing list associated
  with all subprojects and components for which they have commit privileges.
  This is a condition of being granted commit rights to the subproject or
  component. It is mandatory because committers must participate in votes
  (which in some cases require a certain minimum number of votes) and must
  respond to the mailing list in a timely fashion in order to facilitate the
  smooth operation of the project. When a Committer is granted commit rights
  they will be added to the appropriate mailing lists. A Committer must not be
  unsubscribed from a developer mailing list unless their associated commit
  privileges are also removed.</p>
  <p>Committers are required to track, participate in, and vote on, relevant
  discussions in their associated subprojects and components. There are three
  voting responses: +1 (yes), -1 (no, or veto), and 0 (abstain).</p>
  <p>Committers are responsible for proactively reporting problems in the bug
  tracking system, and annotating problem reports with status information,
  explanations, clarifications, or requests for more information from the submitter.
  Committers are responsible for updating problem reports when they have done
  work related to the problem.</p>
  <p><b>Subprojects</b><br>
  The work of the Project is organized into subprojects. New subprojects must
  be significant works consistent with the mission of the Eclipse Project, be
  recommended by the PMC, and confirmed by the Board. Subprojects can be
  discontinued by decision of the Board.</p>
  <p>When a new subproject is created, the PMC appoints a subproject lead to
  act as the technical leader and names the initial set of Committers for the
  subproject. Thereafter the PMC may appoint a new subproject lead from time to
  time as required, but the new subproject lead must be confirmed by a majority
  of the other Committers of the subproject. Subproject leads are accountable to
  the PMC for the success of their project.</p>
  <p><b>Subproject Components</b><br>
  The PMC may decide to divide subproject further into components. If a
  subproject is divided into components, commit privileges are normally granted
  at the component level, and the committers for a given component vote on
  issues specific to that component. Components are established and
  discontinued by the PMC. When the PMC creates a component it appoints a
  component lead to act as the technical leader and names the initial set of
  Committers for the component. The component lead is designated as a committer
  for the subproject and represents the component in discussions and votes
  pertaining to the subproject as a whole. Component Committers do not
  participate in votes at the level of the subproject as a whole, unless they
  are also the component lead.</p>
  <p><b>Ports</b><br>
  For components that contain platform-specific code (such as SWT), it may be
  advantageous to allow developers to work on a port of the component to a new
  platform without requiring that they already be committers for the component.
  In this case the main code base is known as the component &quot;core&quot;,
  and the port code base is known as a component &quot;port&quot;. The decision
  to set up a port is made by the PMC. When a new port of a component is
  created, the PMC appoints a Port Lead, and an initial set of committers who
  will have commit and voting privileges specifically for the port. The port is
  done under the auspices of the core component, and all committers for the
  core component automatically also have commit and voting privileges on the
  port. Normally the Component Lead will also be the Port Lead.</p>
  <p><b>Architecture Team</b><br>
  The Platform, JDT, and PDE will have coordinated release plans, milestone
  dates, freeze cycles, builds, and ship dates. These subprojects will be
  coordinated by a group consisting of the subproject leads, the component
  leads from these subprojects, and the members of the PMC. This group will be
  called the Eclipse Project Architecture Team.</p>
  <p><b>Infrastructure</b><br>
  The infrastructure required to support the development process is the
  responsibility of the PMC. The Eclipse Project will have at least the
  following:</p>
  <ul type=disc>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Bug Database - Bugzilla
       database for tracking bugs and feature requests. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Source Repository -- One or
       more CVS repositories containing both the master source code and
       documentation for the subprojects. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Website - A website will
       contain information about the project, including documentation,
       downloads of releases, and this charter. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>General Mailing List -
       Mailing list for development discussions pertaining to the project as a
       whole or that cross subprojects. This mailing list is open to the
       public. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Subproject Mailing Lists -
       Development mailing list for technical discussions related to the
       subproject. This mailing list is open to the public. <o:p></o:p></span></li>
   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
       auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'><span
       style='font-size:10.0pt;font-family:Arial'>Component Mailing Lists --
       Development mailing list for technical discussions related to the
       component. This mailing list is open to the public. <o:p></o:p></span></li>
  </ul>
  <p><b>The Development Process</b><br>
  Each subproject lead must produce a development plan for the release cycle,
  and the development plan must be approved by the PMC and by a majority of
  Committers of the subproject.</p>
  <p>Each subproject must identify, and make available on its web site, the
  requirements and prioritizations it is working against in the current release
  cycle. In addition, each subproject must post a release plan showing the date
  and content of the next major release, including any major milestones, and
  must keep this plan up to date.</p>
  <p>The Committers of a subproject or component decide which changes may be
  committed to the master code base of a subproject or component respectively.
  Three +1 ('yes' votes) with no -1 ('no' votes or vetoes) are needed to
  approve a code change. Vetoes must be followed by an explanation for the veto
  within 24 hours or the veto becomes invalid. All votes are conducted via the
  developer mailing list associated with the subproject or component.</p>
  <p>Special rules may be established for subprojects or components with fewer
  than three Committers. For efficiency, some code changes from some
  contributors (e.g. feature additions, bug fixes) may be approved in advance,
  or approved in principle based on an outline of the work, in which case they
  may be committed first and changed as needed, with conflicts resolved by
  majority vote of the Committers of the subproject or component, as
  applicable. More restrictive rules for releasing changes may be established
  by the PMC near the end of release cycles or for maintenance streams.</p>
  <p>The master copy of the code base must reside on the project web site where
  it is accessible to all developers and committers. Committers must check
  their changes and new work into the master code base as promptly as possible
  (subject to any check-in voting rules that may be in effect) in order to
  foster collaboration among widely distributed groups and so that the latest
  work is always available to everyone. The PMC is responsible for establishing
  a release engineering and build process to ensure that builds can be reliably
  produced on a regular and frequent basis from the master code base and made
  available for download from the project web site.</p>
  <p>The PMC is responsible for establishing the level of testing appropriate
  for each subproject, and approving the test plans.</p>
  <p>All development technical discussions are conducted using the development
  mailing lists. If discussions are held offline, then a summary must be posted
  to the mailing list to keep the other committers informed.</p>
        <p><b>Licensing</b><br>
          All contributions to the Eclipse Project must adhere to the Common Public 
          License <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>. 
          Notwithstanding the above, at the discretion of the PMC, Eclipse Project 
          downloads may include separately licensed code from third parties as 
          a convenience and where permitted by the third party license, provided 
          this is clearly indicated.</p>
        <p>All contributions must contain the following copyright notice.</p>
        <pre>/**********************************************************************</pre>
        <pre>Copyright (c) {date} {name of original contributor} and others.</pre>
        <pre>All rights reserved. &nbsp; This program and the accompanying materials</pre>
        <pre>are made available under the terms of the Common Public License v1.0</pre>
        <pre>which accompanies this distribution, and is available at</pre>
        <pre><a
  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a></pre>
        <pre><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></pre><pre>Contributors:</pre><pre><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;contributor1&gt; - &lt;description of contribution&gt;</pre><pre><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;contributor2&gt; - &lt;description of contribution&gt;</pre><pre><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>...</pre><pre>**********************************************************************/</pre>
        <p> The original contributor is the one who contributes the first version 
          of the file. A contributor may be a person or an organization - whoever 
          owns the copyright. If the contributor is an organization, the person 
          may also be indicated. For each additional contributor, indicate the 
          part of the code or contribution that came from the contributor, especially 
          if it contains an interesting algorithm or data table etc. For clarity, 
          also indicate the contributor in the actual section of contributed code. 
          Also reference the bugzilla bug ID if applicable. The basic principle 
          is to clearly identify the contribution... especially if it is a separable 
          block of code.</p>
        </td>
  <td style='padding:1.5pt 1.5pt 1.5pt 1.5pt'>
  <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><span
  style='font-size:10.0pt'><o:p></o:p></span></p>
  </td>
 </tr>
</table>

<p class=MsoNormal style='margin-top:14.2pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

</body>

</html>
