Prajna is developed as an Eclipse project. There are several guidelines for developers who wish to participate in Prajna development. These guidelines are designed to enhance code usability, reuse, and acceptance. These guidelines only apply for development which contributes to the Prajna code base.
Conform to the existing code style. This means following the established practices for code indentation, braces, tabs (don't use), and so forth.
Do not introduce dependencies to other Jars in the main Prajna code base (the code in the src directory). One common frustration for developers is needing to include a dozen new Jars just to incorporate a new package. The core Prajna code only uses the classes which are part of Java and JavaEE.
Obviously, this does not apply when using Prajna as part of another project. When you are integrating with other products in custom applications for your own development, you may use whatever Jar files you need.
If you are interfacing to a particular tool, consider implementing a software bridge. While the bridges are still being developed, creating a library of tools and utilities for connecting Prajna with another package is always beneficial. The bridges will be normalized as they mature.
The software bridges are also where you will insert tool-specific jar files, configurations, etc. For instance, the Prefuse software bridge is dependent on the Prefuse jar file. Please state what the Jar dependencies are in the documentation for the software bridge, and provide a link to download the jar file if possible.
The software bridges are contained in the src_ext folder. This folder should be used for any optional components in Prajna.
Provide good documentation, both inline and external files. If you are providing a significantly new capability, create demo programs to demonstrate the features. Above all, software is only usable if a developer can understand how to use it.
Classes and methods which are deprecated will not be retained forever. Prajna will follow the following guideline:A class or method which is deprecated in one major (X.Y) release of Prajna will be retained through subsequent minor releases (X.Y.Z), but removed at the next major (X.Y+1) release.
The release notes will include any information and recommended upgrades or replacements for deprecated classes and methods.