<html><head>
<link rel="stylesheet" href="../../default_style.css">
<title>Eclipse Foundation</title>
</head>
<body bgcolor="#ffffff">
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=left width="72%"> <p><font class=indextop> how to join</font></p>
    <p><strong>Committer Member</strong></p></td>
    <td width="28%"><img src="../../images/Idea.jpg" height=86 width=120></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=left valign=top bgcolor="#0080c0"><b><font face="Arial,Helvetica" color="#ffffff">Becoming 
      a Committer Member of the Eclipse Foundation</font></b></td>
  </tr>
  <tr>
    <td><p>Before you can become a Committer Member of the Eclipse Foundation, you must first become a Committer. While these things may sound similar, they are actually quite different.</p>
      <ul>
        <li><strong>Committers</strong> are those people who have write access to the CVS repositories or other content on the Eclipse Foundation's website. A good description can be found in Exhibit D of the <a href="../documents/Eclipse%20MEMBERSHIP%20AGMT%202005_06_16%20Final.pdf">Eclipse Membership Agreement</a>: &quot;<em>In order for an individual to become a Committer, another Committer for the project (or component) must nominate that individual. Once an individual is nominated, the existing Committers for the project (or component) will vote using the process and rules established in the project&rsquo;s corresponding Charter. When a new project is started, the corresponding PMC will nominate an initial set of Committers for approval by the Executive Director (or his delegates). Becoming a Committer is a privilege that is earned by contributing and showing discipline and good judgment. It is a responsibility that should be neither given nor taken lightly.</em>&quot; <br>
          <br>
          Read the &quot;Becoming a Committer&quot; section below for more details.<br>
          <br>
</li>
        <li><strong>Committer Members</strong> are those Committers who decide to join the Eclipse 
		Foundation as Members. Note that people who work for a Member company who are Committers do not 
		need to join as individual Committer Members. They already have all of the rights and 
		privileges of a Committer Member. It is also important to understand that you do not have to 
		join the Foundation as a Committer Member to be a Committer. <br>
          <br>
          One of the important benefits of becoming a Committer Member is that you are eligible to vote in the elections for the Committer Representatives on the Eclipse Board of Directors. <br>
        </li>
    </ul></td>
  </tr>
  <tr>
    <td align=left valign=top bgcolor="#0080c0"><b><font face="Arial,Helvetica" color="#ffffff">Becoming 
      a Committer</font></b></td>
  </tr>
  <tr> 
    <td> <p>If you are interested in becoming a Committer at Eclipse, the first and most important question is which project do you want to contribute to? </p>
      <ul>
        <li>    The overall Eclipse project is divided into dozens of sub-projects and components within those sub-projects. You should start with the project that is the most interesting and most exciting to you. We have projects on the core technology (look into the Platform Project) and on extensions to the core technology (look into the Tools Project) and on dozens of research and incubator ideas (look into the Technology Project), and on web tooling, and business reporting, and test and performance tooling, and many other interesting topics.</li>
      </ul>      
      <p>          Second, a few operational details: </p>
      <ul>
        <li>        In order to request a password for our news servers, etc., please go to our <a href="http://dev.eclipse.org/newsManager/newsRequestForm.html">request form</a>. Please note that we password protect our newsgroups and other services primarily to protect our contributors email addresses from spammers. To request a Bugzilla password to report bugs and enter feature requests, please go to our <a href="https://bugs.eclipse.org/bugs/createaccount.cgi">account creation form</a><em>. </em><br>
</li>
        <li> We distinguish between two similar sounding, and related, organizations: the Eclipse 
		Foundation is a member-funded not-for-profit corporation that supports the Eclipse Open Source 
		Projects. The Projects are the open source community where the development happens. This 
		distinction is important because you can be an active developer and contributor to the open 
		source Projects without being a &quot;member&quot; of the Eclipse Foundation. (Most of our 
		non-affiliated open source committers are also members of the Foundation, but it is not a 
		requirement.) There is no cost to being an individual member of the Foundation.</li>
      </ul>      
      <p>      Third, about becoming a developer and committer on the Eclipse Open Projects:</p>
      <ul>
        <li>Becoming a Committer at Eclipse is a multi-stage process. The basic rule is that all new committers are voted in by the existing committers on a project. Similar to other open source communities, we operate as a meritocracy....which among other things translates to mean that you have to prove your abilities before you can become a committer.<br>
        </li>
        <li>The best way to start contributing to Eclipse is to start with well-formed bug reports and feature requests for project(s) that you are primarily interested in. Build a good reputation with the existing committers on a project. Over time, start proposing code enhancements and volunteer time to the project. Then once you have demonstrated your skills to the existing team, ask a current project committer to sponsor you as a committer. The election process is defined in each top-level project's charter. <br>
          <br>
                                                                            </li>
      </ul>      
    </td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td>&nbsp;</td>
  </tr>
</table>
</body></html>
