This document explains key concepts that JChassis developers need to know as well as system and tool requirements for developing JChassis code.
This process has been bootstrapped by building the a "throw-away" JChassis prototype that includes peer-to-peer extensions including a chat system. Most basic aspect of JChassis that were envisaged for the first release have been included in this prototype.
Some trivial example applications have been developed in parallel with the first JChassis release. Example applications should be designed to exercise the entire range of JChassis functionality and will act both as a source of new ideas for the current and future releases, and also as an addition testing mechanism at the system level.
It is intended that as much as possible of JChassis will run on Java 1.1 VMs, so please keep this in mind when developing new modules. If you really need things like weak references or heavy use of "difficult" collections operations, then you must resort to Java 2. If you just have simple needs stick to 1.1. For example, if you only need simple collections functionality, use a Vector. Always check the 1.1 API to make sure you are not using methods that were added during later VMs.
To be part of the official JChassis release, all modules (and the core) will go through one or more iterations of:
Developers should announce any change in status of the module they are working on to the jchassis-devel mailing list.
Design will include actual Java interface specifications. These must be though roughly documented.
Design review will be by members of the jchassis-devel mailing list once the design has been allowed. Final decision will be by a vote amongst the project administrators (OK so thats just me at the time of writing :-)). Be warned that if you start writing code before the review is complete, this is OK, but you might need to do a lot of rewriting to meet an revised design.
Code will be documented as it is written, not afterwards. This will not only help you but the other developers who may be trying to integrate their work with your module as it is being built.
Code and test review will be done in the same way as design review.
If you don't agree with the above policies, then you should leave the project immediately. Do not write code and hope that it is somehow so good that an exception will be made. It will be rejected as part of the official release.
It is intended that JChassis will eventually have a "quality rating system" for JChassis modules. This rating will be applied to all modules that are part of the official release, as well as to third party modules at the third parties request. The rating system will indicate:
General methodology guidelines are:
It should be noted that a good CVS client will translate line termination characters to suit the environment it is working in. A common problem is that files on a SMB mount ("shared folder") have different line termination characters to what the CVS client expects because the SMB mounted system is a different OS. CVS then dutifully checks in these alien line termination characters. Checking these in will result in disastrous "cvs diffs" where every line in the file seems to have changed, albeit invisibly. The same can happen if files are moved from one OS to another without translating the line terminations. This might be just the result of moving the files to an SMB mounted filesystem. If you work on multiple OSs, please be careful. Check cvs diffs *before* committing in files. Ask someone if any of the above is unclear.
If you are interested in system testing, you should obtain some other JDKs, not necessarily Java 2 either. Examples are Kaffe's Java 1.1 VM, Sun's JDK 1.1, Sun's J2ME, etc.
$Id: developer_info.html,v 1.4 2003/05/23 23:53:16 stainsby Exp $