<!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>Eclipse Tools Project</title>
<link rel="stylesheet" href="../default_style.css" type="text/css">
</head>
<body>
<table BORDER=0 CELLSPACING=5 CELLPADDING=2 WIDTH="100%" >
  <tr> 
    <td ALIGN=LEFT VALIGN=TOP COLSPAN="2" BGCOLOR="#0080C0"><b><font face="Arial,Helvetica" color="#FFFFFF">Who's 
      running this project?</font></b></td>
  </tr>
  <tr> 
    <td> 
      <p>This page lists the people that are currently playing the leadership 
        roles described in the <a href="eclipse-charter.php">project charter</a>. 
        You will notice that there are lots of OTI and IBM people listed... it's 
        not because we want to do all the work (believe us!) - its just because 
        we built the first release of eclipse before it became an open source 
        project, and others haven't had enough time yet to get involved in key 
        roles. We welcome new people who want to get involved and can make a contribution. 
        The Eclipse Project is a meritocracy. The more you contribute the more 
        responsibility you will earn. </p>
      <p>Our email addresses are show below in &quot;disguised&quot; form as a 
        spam control measure. But we ask that you do not email us directly. Instead 
        - use the <a href="../mail/index.html" target="_top">mailing lists</a>. 
        Mailing lists have been set up for each area of work, and are the best 
        way to get involved.</p>
      <p>The Eclipse Project is managed by a small group known as the Eclipse 
        Project Management Committee (<a href="eclipse-charter.php#PMC">PMC</a>). 
        The work of the Project is organized into subprojects. Each subproject 
        has a leader who has overall responsibility for its success. Large subprojects 
        are further divided into component teams, each of who has a leader that 
        is responsible for its overall success. We have listed just the team leaders 
        here but you will encounter many dedicated eclipse project committers 
        and developers in the <a href="../newsgroups/index.html" target="_top">newsgroup</a> 
        and <a href="../mail/index.html" target="_top">mailing lists</a>.</p>
      </td>
  </tr>
</table>
<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">Project 
      Management Committee</font></b></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Dave Thomson (dave_thomson at oti.com)</b><br>
      Dave has been a principal member of OTI's technical team since 1987. He 
      led the developent teams which produced OTI's ENVY/Smalltalk and VA/Java 
      Java IDEs, and most recently, Eclipse. Dave is currently serving as PMC 
      Lead for the Eclipse Project.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Greg Adams (greg_adams at oti.com)</b><br>
      Greg is the principal architect of the user interface design of both VA/Java 
      and the Eclipse platform. His interests are in the area of UI design, usability, 
      accessibility, national language support, and user assistance (e.g. help) 
      system integration. Greg is a member of the Eclipse PMC.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>John Wiegand (john_wiegand at oti.com)</b><br>
      John is the principal architect for the platform infrastructure. John played 
      a central role in the development of VA/Java, VA/Micro Edition, and now 
      Eclipse. His interests are in the areas of performance, scalability, compilers, 
      and just about anything that's hard. John is serving as leader of the Platform 
      subproject and PDE subproject, and is a member of the Eclipse PMC.</td>
  </tr>
</table>
<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">Platform 
      Subproject Leads</font></b></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>John Wiegand (john_wiegand at oti.com)</b><br>
      John is the principal architect for the platform infrastructure. John played 
      a central role in the development of VA/Java, VA/Micro Edition, and now 
      Eclipse. His interests are in the areas of performance, scalability, compilers, 
      and just about anything that's hard. John is also serving as leader of the 
      Platform subproject and the PDE subproject.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Dorian Birsan (birsan at ca.ibm.com)</b><br>
      Dorian is component lead for the Help system and has been happily &quot;doing 
      time&quot; at IBM where he usually gets involved with technologies before 
      they become the buzzword of the day. His current hobby is playing with his 
      newborn son, before that it was the web, xml, java, parallel computing, 
      math...</td>
  </tr>
  <tr>
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Erich Gamma (erich_gamma at oti.com)</b><br>
      Erich is the lead of the Eclipse Java development environment. Prior to 
      working on Eclipse Erich has contributed VA/Micro Edition (part of IBM's 
      Java solution for embedded device programming). Erich is well known for 
      his work on Design Patterns and <a href="http://www.junit.org/" target="_top">JUnit</a>. 
      Erich is leader of the JDT subproject, and component lead for Search, Compare, 
      and the JDT UI. Erich is a member of the Eclipse Tools PMC.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="35">&nbsp;</td>
    <td height="35"><b>Kevin Haaland (kevin_haaland at oti.com)</b><br>
      Kevin is the component lead for the Platform UI. Kevin has a long history 
      of building user interface technology at OTI, and in a past life he was 
      the lead for the SWT team. Kevin also played a key role in the VA/Java project.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>DJ Houghton (dj_houghton at oti.com)</b><br>
      DJ is the component lead for Ant, Core, WebDAV, and the PDE Core. He's been 
      a member of the eclipse core team from the early days and brings a wealth 
      of experience from the VA/Micro Edition project.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>Vlad Klicnik (klicnik at ca.ibm.com)</b><br>
      Vlad is the component lead for Install/Update and Scripting. He has played 
      a central role in the architecture and development of the Eclipse platform 
      from its onset. Vlad also played a key architectural role in the development 
      of the Enterprise Edition of VisualAge for Java.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>Kevin McGuire (kevin_mcguire at oti.com)</b><br>
      Kevin is the component lead for VCM.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>Mike Wilson (mike_wilson at oti.com)</b><br>
      Mike (&quot;McQ&quot;) Wilson is the component lead for SWT. He has extensive 
      experience with a wide range of Java technology issues from implementing 
      virtual machines to large scale class library design. He is one of the original 
      proponents of the &quot;portable native widgets&quot; story, and has been 
      involved with this since the early days of Smalltalk/V and VisualAge/Smalltalk. 
      His interests include playing the cello, massively-multiplayer on line games, 
      programming language design (&quot;Scheme, rules!&quot;) and family life.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>Darin Wright (darin_wright at oti.com)</b><br>
      Darin is the component lead for Platform Debug, and JDT Debug. He was originally 
      a member of the JDT Core team, and brings a wealth of experience from the 
      VA/Micro Edition and VA/Smalltalk projects. His interests are in the area 
      of software engineering and abstract interpretation.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>Brian Young (brian_young at oti.com)</b><br>
      Brian is leader of the release engineering (aka releng) team. </td>
  </tr>
</table>
<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">JDT 
      Subproject Leads</font></b></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Erich Gamma (erich_gamma at oti.com)</b><br>
      Erich is the lead of the Eclipse Java development environment. Prior to 
      working on Eclipse Erich has contributed VA/Micro Edition (part of IBM's 
      Java solution for embedded device programming). Erich is well known for 
      his work on Design Patterns and <a href="http://www.junit.org/" target="_top">JUnit</a>. 
      Erich is leader of the JDT subproject, and component lead for Search, Compare, 
      and the JDT UI. Erich is a member of the Eclipse Tools PMC.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Philippe Mulet (philippe_mulet at oti.com)</b><br>
      Philippe is the component lead for the JDT Core. He has originally transitioned 
      from an academic research context from Ecole des Mines (Nantes, France) 
      to IBM, developing both a theorical and practical expertise of language 
      implementations. He authored papers on meta-level architectures and designed 
      advanced Java compilation tools for IBM development environments. He is 
      also responsible for the VA/Java and the VA/Micro Edition compiler and code 
      assist technologies. His interests are in the area of compilation tools 
      for IDEs, design and implementation of OO languages and reflective architectures.</td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP height="22">&nbsp;</td>
    <td height="22"><b>Darin Wright (darin_wright at oti.com)</b><br>
      Darin is the component lead for Platform Debug, and JDT Debug. He was originally 
      a member of the JDT Core team, and brings a wealth of experience from the 
      VA/Micro Edition and VA/Smalltalk projects. His interests are in the area 
      of software engineering and abstract interpretation.</td>
  </tr>
</table>
<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">PDE 
      Subproject Leads</font></b></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>John Wiegand (john_wiegand at oti.com)</b><br>
      John is the principal architect for the platform infrastructure. John played 
      a central role in the development of VA/Java, VA/Micro Edition, and now 
      Eclipse. His interests are in the areas of performance, scalability, compilers, 
      and just about anything that's hard. John is also serving as leader of the 
      Platform subproject and the PDE subproject.</td>
  </tr>
  <tr>
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Dejan Glozic (dejan at ca.ibm.com)</b><br>
      Dejan is the component lead for the PDE UI component and is also the developer 
      of the new Install/Update UI. Dejan has been a member of the Eclipse UI 
      team from the beginning. Before Eclipse, Dejan was the lead architect for 
      the original JFace project that was later integrated into Eclipse. His main 
      interests are user interfaces, and most recently on employing Web metaphors 
      in application UI design. In his free time, Dejan is a passionate audophile, 
      guitar player and<br>
      civilian flight simulation addict.</td>
  </tr>
  <tr>
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>DJ Houghton (dj_houghton at oti.com)</b><br>
      DJ is the component lead for Ant, Core, WebDAV, and the PDE Core.</td>
  </tr>
</table>
<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">Advisors</font></b></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td> 
      <p><b>Jim des Rivi&egrave;res (jim_des_rivieres at oti.com)</b><br>
        Jim (aka Jeem) has played a major architectural role in helping to define 
        a consistent set of API's for Eclipse, and in the design of the core infrastructure. 
        Jeem is the resident authority on API clarity, and continues to play a 
        key role in helping us all to understand what it means to have stable 
        API's in Java.</p>
      </td>
  </tr>
  <tr> 
    <td align=RIGHT valign=TOP>&nbsp;</td>
    <td><b>Jeff McAffer (jeff_mcaffer at oti.com)</b><br>
      In previous life, Jeff was the lead architect/component lead for the Platform 
      Core, WebDAV, Ant integration and PDE Core components. While he is currently 
      off starting a new long-term project, he is a staunch defender of the platform 
      vision and can still be found lurking in the newsgroups, mailing lists and 
      occasionally the code.</td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>
