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

    $pageTitle       = "Contributors to Photran";
    $pageKeywords    = "photran, contributors, developers";
    $pageAuthor      = "Jeffrey Overbey";
    
    # Paste your HTML content between the EOHTML markers!    
    $html = <<<EOHTML

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>
    
    <p>Photran is primarily being developed at the University of Illinois at Urbana-Champaign,
    although we have received many valuable contributions from elsewhere.
    In alphabetical order by last name...</p>
    
    <div class="homeitem3col">
      <h3>Active Committers and Contributors</h3>
      <ul>
        <!--li>Matthew Fotzler, UIUC - PTP integration</li-->
        <li>Bill Hilliard, Intel - Managed build support (Intel Fortran)</li>
        <li><a href="http://st-www.cs.uiuc.edu/users/johnson">Ralph Johnson</a>, UIUC - Principal investigator</li>
        <li>Kurt Hendle - Debugger enhancements</li>
        <li>Matthew Michelotti, UIUC - C preprocessor support</li>
        <li>Stas Negara, UIUC - Preliminary Fortran indexer, Move Save Variables to Common Block refactoring</li>
        <li><a href="http://jeff.over.bz/">Jeff Overbey</a>, UIUC - Parser, refactoring infrastructure, refactorings, indexer/VPG, UI features, error parsers, CDT integration</li>
        <li>Greg Watson, IBM - Release engineering, project lead (PTP)</li>
        <!--li>David Weiner, UIUC - FRUIT integration</li-->
        <li>Timofey Yuvashev, UIUC - UI features, managed build support</li>
      </ul>
    </div>
    
    <div class="homeitem3col">
      <h3>Past Contributors and Committers</h3>
      <ul>
        <li>Antonio Barbado - Spanish FAQ translation</li>
        <li><a href="http://www.fortran.com/fortran/walt.html">Walt Brainerd</a>, <a href="http://www.fortran.com/">The Fortran Company</a> - F support (and more)</li>
        <li>Chin Fei Cheah, UIUC - UI features, MSI package</li>
        <li>Nicholas Chen, UIUC - UI features, MSI package</li>
        <li>Sarah de la Cruz, UIUC (CS427 Fa07) - Find All References</li>
        <li>Jeff Dammeyer, UIUC (CS427 Fa08) - Fortran Search</li>
        <li>Andrew Deason, UIUC (CS427 Fa08) - Fortran Search</li>
        <li>Kevin Decker, UIUC (CS427 Fa07) - Find All References</li>
        <li>Joe Digiovanna, UIUC (CS427 Fa08) - Fortran Search</li>
        <li>Charles Felish, UIUC (CS427 Fa07) - Find All References</li>
        <li><a href="http://www.laputan.org/">Brian Foote</a>, UIUC</li>
        <li>Feanil Patel, UIUC - Prototype Fortran debugger</li>
        <li>Craig Rasmussen, LANL - Managed build support, error parsers</li>
        <li>Dirk Rossow, Flensburger Schiffbau Gesellschaft - Fixed form lexer</li>
        <li>Ken Schultz, UIUC - Prototype Fortran debugger</li>
        <!--li>Mikhail Sennikovsky, Intel - Managed build support (Intel Fortran)</li-->
        <li>Nick Sexmith, UIUC (CS427 Fa08) - Fortran Search</li>
        <li>James Shepherd, UIUC (CS427 Fa07) - Find All References</li>
        <li>Shawn Temming, UIUC - Prototype Fortran debugger</li>
        <!--li>Leo Treggiari, Intel - Managed build support (Intel Fortran)</li-->
        <li><a href="http://leto.cs.uiuc.edu/%7Espiros">Spiros Xanthos</a>, UIUC</li>
      </ul>
      <i>Special thanks to
      Prof. Ralph Johnson,
      Nicholas Chen,
      and TAs 
      Dustin Bortner,
      Yun Young Lee,
      Maurice Rabb,
      Mohsen Vakilian
      for supervising contributions completed as part of CS427 (Software Engineering I) at UIUC.
      </i>
    </div>

  </div> 
</div>    
EOHTML;

    # Generate the web page
    $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
