
NOTE:  Regarding ApacheDS Releases

  We use even minor numbers to denote stable releases and release branches 
  where new features are not added but only bug fixes are made.  Odd numbered
  releases and branches are for experimental feature release branches of which
  several releases may occur.  For example after 0.9 below there may be 0.9.1,
  0.9.2 ... 0.9.n et. cetera. until there is a feature freeze and a stable
  release is created like 0.10.

Changes in 0.9 (since 0.8)
==========================

 o Added Preferences implementation for system settings (user Prefs not done)
 o Added support for JNDI state factories and object factories
 o Added schema support for object and state factories - plugin is prep'd for
   generating these from schema definitions and domain models: code to do this
   just needs to be added.
 o Added factory.hints property to help drive the selection of a object
   factory when there are multiple alternatives
 o Added Authenticator (thanks to Endi)
 o Added support for multiple types of custom backends (thanks to Endi)
 o 0.9 now uses MINA instead of apseda for massive performance and concurrency
   gains.  MINA is the network layer for Apache Directory.
 o Revamped interceptor factory: interceptors easier to manage and to add
   custom interceptors.  Design is similar to filter chaining.  Excellent 
   feature that makes extending and configuring interceptors for the server
   a breeze.
 o Several performance improvements
 o Refactored and cleaned up APIs in general
 o Several documentation improvements were made with slight revamp and the
   addition of docs for new features
 o Perhaps the latest most exciting feature is the addition of the Kerberos 
   provider plugin which is a full Kerberos V service listening by default on
   port 88.  The plugin uses the Directory Network layer (MINA) to service
   UDP and TCP requests to the KDC and it uses the ApacheDS DIT to store its 
   entires without any netork latency or unnecessary security exposure.  
 o Fixed bugs with filter parser in LDAP common affecting server
 o Fixed issues with authenticating to server
 o Corrected broken simple authentication and annonymous binds
 o Cleaned up user partition creation and configurationn
 o Created and added better user and developer guide information
 o Corrected case problems with attribute type names
 o Added proper ou=schema presentation of schema objects
 o Added Samba schema
 o Created and added new distinguished name normalized
 o Added DHCP schema
 o Fixed bug when trying to shutdown the server via JNDI
 o Changed package structure to accomodate growth better
 o We now try to take next available port if user does not have access rights
   for 389 or the alt port specified is already in use
 o Moved logic to start up LDAP and Kerberos providers out into main
   subproject, leaving a new base class for a context factory implementation
   called the CoreContextFactory
 o Exited incubator so all groupIds were finalized
 o Rearranged the SVN repository to reflect better project demarcations
