blob: a8e11bd32993c89c912eef8c5d1cd7835f93e310 [file] [log] [blame]
<?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">
<h3>Getting Started</h3>
<p>New Photran contributors are always welcome. Here are some suggestions for getting started.</p>
<h4>All Developers</h4>
<ol>
<li> <b>Learn 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>Learn to Use 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>Learn to Use Photran.</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 may want to focus on learning
CDT: Once you know how to use CDT, you will know how to use Photran.
<li> <b>Learn to use the JDT and PDE to Develop a Simple Plug-in.</b>
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. This will also require you to learn how to do Java development in Eclipse, although
this should be easy if you already know how to do C/C++ and Fortran development in Eclipse.
<li> <b>Check Out Photran from CVS and Compile It.</b>
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>, and actually do it. Make sure you can compile
Photran.
<li> <b>Read the Photran Developer's Guide (Chapters 1 &amp; 2).</b>
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>. These chapters apply to all developers.
<li> <b>Join the Mailing Lists.</b>
<ul>
<li> Join the main <a href="https://dev.eclipse.org/mailman/listinfo/photran">Photran
Mailing List</a>. 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>. This is where architectural/design issues are discussed,
new releases are planned, conference calls are announced, etc.
</ul>
<li> <b>Read about Our Coding Conventions.</b>
Read the <a href="http://dev.eclipse.org/conventions.html">Eclipse Naming, Coding, and JavaDoc Conventions</a>.
Look through some of the classes in org.eclipse.photran.refactoring.core to get a feel for the coding
style used in Photran. In general, we use 120-character lines, 4-column tabs, descriptive variable names,
and curly braces on the next line, etc. A copyright notice must appear at the top of every source file,
and every API class should be JavaDoc'ed. Vocabulary specific to that class appears in bold in the class
documentation, and method comments assume that the reader has already read the class documentation
(so that vocabulary can be used freely).
</ol>
<h4>Developers of UI Enhancements</h4>
<ol>
<li> <b>Learn the Editor Framework, JFace Text.</b>
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> If you will be working on dialog boxes, you will need to learn the Standard Widget Toolkit. Depending on
what you will be working on--preference pages, project property dialogs, etc.--you may need to learn about
other parts of the Eclipse framework as well. Ask if you are not sure.
</ol>
<h4>Developers of Program Analyses, Transformations, and Refactorings</h4>
<ol>
<li> <b>Learn Fortran.</b>
Work through <i>Fortran 95/2003 Explained</i> by Metcalf, Reid, and Cohen or another book on Fortran 90/95.
Depending on what you're writing, you might be able to ignore certain parts of the language. Ask if you
are not sure.
<li> <b>Read the Photran Developer's Guide (Remaining Chapters).</b>
Read the remaining 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>. Spend some time looking at the Fortran parsing grammar (fortran95.bnf) and familiarizing
yourself with the AST.
<li> <b>JUnit.</b>
If you will be working on refactorings or another non-UI part of Photran, you will probably need to write
unit tests. This is done in JUnit, which is nicely integrated with the Eclipse Java Development Tools
(JDT). See <a href="http://www.junit.org" target="_top">junit.org</a>.
</ol>
</div>
<div class="homeitem3col">
<h3>Projects for New Developers</h3>
<h2>UI Enhancements</h2>
<ul>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Context-sensitive syntax highlighting OR semantic highlighting<br>
<small<small>See org.eclipse.cdt.internal.ui.editor.Semantic*.java</small></small>
</td><td align="left">
Very Challenging
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Content assist (scope based on line number)
</td><td align="left">
Moderate
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Matching parenthesis highlighting
</td><td align="left">
Very Easy
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Hover tips containing declaration/type
</td><td align="left">
Easy
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Auto-indent
</td><td align="left">
Easy
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Folding
</td><td align="left">
Easy
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Fortran search/find all references
</td><td align="left">
Moderate
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Preference page like JDT
</td><td align="left">
Easy
</td></tr></table>
</ul>
<h2>Easy Refactorings</h2>
<ul>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Canonicalize Capitalization
</td><td align="left">
Easy
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Eliminate Specification Statements
</td><td align="left">
Moderate
</td></tr></table>
</ul>
<h2>Static Analyses</h2>
<ul>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Enforcement of naming conventions
</td><td align="left">
Moderate
</td></tr></table>
</ul>
<h2>Doxygen Support</h2>
<ul>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Generate Doxygen stubs
</td><td align="left">
Moderate
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
Doxygen view and Doxygen checking (requires parser)
</td><td align="left">
Challenging
</td></tr></table>
<li> <table border="0" cellspacing="0" cellpadding="0" width="75%"><tr><td nowrap align="left" width="85%">
&quot;Generate Doxygen&quot; action
</td><td align="left">
Easy
</td></tr></table>
</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);
?>