About
People Involved
Features
User Interfaces
Related Projects

Downloads and Installation
History

Contributing
Acknowledgements

Pal Online
PAL icon PAL: Phylogenetic Analysis Library

Guidelines for Contributing Code

Contributions to PAL are very welcome. Basically, there are two main routes:
  • Minor contribution: If you want to contribute a single or few classes only, for example those implementing your own favorite method, simply send your tested code to one of the core team members. Your class(es) will then be included in the library for publication in the next release. Your contribution will be acknowledged in the sources, in all documentation, and on the web.
  • Major contribution: On the other hand, you may be interested in joining the PAL core team in further developing and improving PAL in general. This generally involves a considerable amount of continuous (and sometimes boring) work on all parts of the library. If you have experience with a similar project before and now would like to bring in your expertise in PAL, get in touch and you will be afforded full CVS rights.
In both cases the following PAL programming guidelines must be followed. The aim is to have code that is easy to understand by people other than the original author, and that runs on a minimal Java platform:
  • Coding conventions: all code must follow the Java coding conventions. In particular, the Java naming conventions for variables, class names, constants etc. must be followed strictly.
  • Access to library features must be restricted to Java 1.1 (no Java 1.2/1.3 library).
  • All classes and public/protected methods must be documented using JavaDoc comments.
  • Each public class must carry @author and @version tags.
  • All code must carry the standard PAL header, assigning copyright to the PAL Core Development Team and permitting distribution by the GNU LGPL.
  • Your code must fully comply with the GNU LGPL, i.e. must be your own or from some other GNU LGPL or public domain source. Code containing, e.g., portions from Numerical Recipes can not be accepted.
  • In your classes methods from existing PAL packages likes pal.io, pal.math, pal.util should be preferred over the corresponding SUN packages (e.g., for random numbers)
  • If you need to change code other than yours be careful not to break it!
  • Needless to say, all code should be well tested and should actually do what it claims ..
Please look at the sources of the current PAL distribution for example code.