Suggestions for New Contributors
Getting Started
New Photran contributors are always welcome. Here are some suggestions for getting started.
All Developers
- Learn Java. 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++.
- Learn to Use Eclipse. Photran is essentially a Fortran add-on for Eclipse. If you have not used Eclipse before, or if you're not quite sure what "perspectives" and "views" 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.
- Learn to Use Photran. 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.
- Learn to use the JDT and PDE to Develop a Simple Plug-in. 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 "Hello, world!" message box when you click it. For example, work through Chapters 7 through 9 in The Java Developer's Guide to Eclipse, 2/e 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.
- Check Out Photran from CVS and Compile It. Read How to Check Out Photran from CVS and Compile It, and actually do it. Make sure you can compile Photran.
- Read the Photran Developer's Guide (Chapters 1 & 2). Read the first two chapters of the Photran Developer's Guide. These chapters apply to all developers.
- Join the Mailing Lists.
- Join the main Photran Mailing List. This is where Photran users post questions and get answers. If you have problems or questions about how to use Photran, this is a good place to start.
- Join the Photran Contributors' Mailing List. This is where architectural/design issues are discussed, new releases are planned, conference calls are announced, etc.
- Read about Our Coding Conventions. Read the Eclipse Naming, Coding, and JavaDoc Conventions. Look through some of the classes in org.eclipse.photran.internal.core.refactoring to get a feel for the coding style adopted in Photran (but don't be surprised when you discover that not all of our 60,000 lines of code adhere to our coding standard). 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).
Developers of UI Enhancements
- Learn the Editor Framework, JFace Text. 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.
- 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.
Developers of Program Analyses, Transformations, and Refactorings
- Learn Fortran. Work through Fortran 95/2003 Explained 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.
- Read the Photran Developer's Guide (Remaining Chapters). Read the remaining chapters of the Photran Developer's Guide. Spend some time looking at the Fortran parsing grammar (fortran95.bnf) and familiarizing yourself with the AST.
- JUnit. 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 3, which is nicely integrated with the Eclipse Java Development Tools (JDT). See junit.org.
Projects for New Developers
Note on Project Difficulty. I [Jeff] have implemented pieces of these projects at one time or another, so these are informed estimates of difficulty based on technical experience. That said, I have obviously not attempted to implement any of these projects in their entirety, and there could be complications that I did not consider or that are not immediately apparent. Conversely, seemingly difficult projects sometimes turn out to be surprisingly easy. For CS427 students, your grade will be based on the actual difficulty of the project, not on how difficult I estimated it to be, so if a project turns out to be easier or harder than anticipated, you should discuss this with the course staff to establish a fair and reasonable set of objectives.
Note that "easy" means "easy relative to some other projects," not "any CS1 student could do this project." Don't be insulted if it takes several frustrating hours to complete the project.
THESE PROJECT DESCRIPTIONS ARE UNDER REVISION.
| Click here to expand/collapse all descriptions |
UI Enhancements
-
Semantic highlighting Moderate -
Content assist Moderate -
Matching parenthesis highlighting Easy -
Hover tips containing type/declaration Moderate -
Auto-indent Moderate -
Folding Easy -
Find all references Moderate -
Prototype Fortran search Moderate -
JDT-/CDT-style preference page for editor coloring Easy -
Declaration view Moderate -
Complain about Photran (two sub-projects) Moderate
Refactorings & Transformations
Difficulty ratings for these projects assume that you have a basic knowledge of abstract syntax trees and other concepts from an introductory programming languages/compilers course. If you do not, these projects probably aren't appropriate.
-
Canonicalize Identifier Capitalization Easy -
Canonicalize Keyword Capitalization Moderate -
Align Identifiers in Declarations Challenging -
Eliminate Specification Statements Very Challenging -
Move Variable/Procedure Between Modules Very Challenging -
Make Common Variable Names Consistent Challenging
Static Analyses
-
Enforcement of naming conventions Challenging
Large Test Codes (3+ Projects)
Project Description (Difficulty: Easy)
- Parallel Ocean Program
- NWChem
- NSF Scientific Application Benchmarks, most notably WRF and GAMESS (see Section 3.0)
- Various codes listed at http://g95.sourceforge.net/g95_status.html
- LANL has several other codes, but some are export-controlled. If you are interested, we can discuss this.

