<?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       = "Suggestions for New Contributors";
    $pageKeywords    = "photran, contributing";
    $pageAuthor      = "Jeffrey Overbey";
    
    # Paste your HTML content between the EOHTML markers!    
    $html = <<<EOHTML

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>
    
    <div class="homeitem3col">
    <p>New Photran contributors are always welcome.  Here are some suggestions for getting started.</p>

    <ol>
      <li> <b>Java.</b>
           Photran is built on top of Eclipse and is written in Java.  Obviously, this means you need to know Java.
           If you have programmed in C or C++, learning the basics of Java should only take a few weeks, and you will
           find that programming in Java is far less painful than programming in C or C++.
      <li> <b>Eclipse.</b>
           Photran is essentially Fortran add-on for Eclipse.  If you have not used Eclipse before, or if you're not
           quite sure what &quot;perspectives&quot; and &quot;views&quot; are, you should work through
           a basic Eclipse tutorial before attempting to learn Photran.  Start Eclipse, click on the Help menu,
           and click Help Contents.  Expand the Workbench User's Guide, expand Getting Started, and work through
           the section labeled Basic Tutorial.
      <li> <b>CDT.</b>
           If you have not used Photran before, you should become a fluent Photran user before you try to add a new
           feature or fix a bug in it.  See the Documentation page on the Photran web site.  Photran reuses many
           components of the Eclipse C/C++ Development Tool (CDT), so you will actually want to focus on learning 
           CDT.  Once you know how to use CDT, you will know how to use Photran.
      <li> If you have never developed an Eclipse plug-in before, develop a simple plug-in, perhaps one which
           adds an item to the menu bar which pops up a &quot;Hello, world!&quot; message box when you click it.
           For example, work through Chapters 7 through 9 in <i>The Java Developer's Guide to Eclipse, 2/e</i>
           by D'Anjou et al.
      <li> If you will be working on the Photran editor, read about the JFace Text framework (Chapter 26 in
           D'Anjou et al.).  It may not make sense immediately; that's OK.  Use the sample XML editor as a starting
           point.  Try changing the syntax highlighting, or adding auto-indentation, or whatever feature(s) are
           relevent to the work you want to do.  Make sure you can implement them in a simple editor before tackling
           the Photran editors.
      <li> Read <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.photran/org.eclipse.photran-dev-docs/dev-guide/cvs-instructions.pdf?cvsroot=Technology_Project">How
           to Check Out Photran from CVS and Compile It</a></li>, and actually do it.  Make sure you can compile
           Photran.
      <li> Read the first two chapters of the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.photran/org.eclipse.photran-dev-docs/dev-guide/dev-guide.pdf?cvsroot=Technology_Project">Photran
           Developer's Guide</a></li>, and the remainder if it is relevant to your work.
      <li> Join the main <a href="https://dev.eclipse.org/mailman/listinfo/photran">Photran
           Mailing List</a></li>.  This is where Photran users post questions and get answers.
           If you have problems or questions about how to <i>use</i> Photran, this is a good place to start.
      <li> Join the <a href="https://dev.eclipse.org/mailman/listinfo/photran-dev">Photran
           Contributors' Mailing List</a></li>.  This is where architectural/design issues are discussed,
           new releases are planned, etc.
    </ol>
    </div>

    <div class="homeitem3col">
      <h3>Projects for New Developers</h3>
      
      <h2>UI Enhancements</h2>
      <ul>
        <li> Context-sensitive syntax highlighting
        <li> Content assist (scope based on line number)
        <li> Matching parenthesis highlighting
        <li> Hover tips containing declaration/type
        <li> Auto-indent
        <li> Folding
        <li> Fortran search/find all references
        <li> Preference page like JDT
      </ul>
      
      <h2>Easy Refactorings</h2>
      <ul>
        <li> Canonicalize Capitalization
        <li> Eliminate Specification Statements
      </ul>
      
      <h2>From LANL</h2>
      <ul>
        <li> Generate Doxygen stubs
        <li> Enforcement of naming conventions
      </ul>
      
      <h2>Large Test Codes</h2>
      <ul>
        <li> POP
        <li> NWChem
      </ul>
    </div>

  </div>
</div>    
EOHTML;

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