This directory is used to hold various files useful to 
core developers (committers and contributors) to server tools
component. 

Note, when checking 'development' out of repository to 
workspace, you may want to use "check out as" and 
name your workspace project 'jst server development', 
in case you have several 'development' folders checked out.

Files in this directory should not be linked/published
directly for web access (there's some issues with mirror 
updates I've heard) or included directly in builds. 

However, this directory can be used for initial or 
working copies of such documents which are then copied 
or published to appropriate locations once ready for 
such distribution.