
Welcome to the stable version of JSPWiki 3.0!

This is the first version of JSPWiki which is released completely under
the Apache License.  This is done as a part of the transition to the
Apache Incubation.

Please report any issues you can find at http://issues.apache.org/JIRA/


NEW FEATURES
============

* JSPWiki now requires JDK 1.5 to run.

* Simplified Chinese, Dutch and Italian localizations added!

* Logging by JSPWiki is now done with slf4j, see http://www.slf4j.org for details.
  You can now decide at runtime which logging implementation you want, just pick
  the right slf4j implementation and drop it in WEB-INF/lib
  The default implementation is log4j, so you don't have to switch to anything else unless 
  you have a good reason.
  The log4j configuration statements have been moved to a separate file log4j.properties, 
  this file should be on your CLASSPATH, by default it is placed in WEB-INF/classes

The full log of any issues fixed can be found at:

https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310732&styleName=Html&version=12312864
			  ==> how to get this to 3.0 ?

Please also see http://www.jspwiki.org/wiki/NewIn3.0

UPGRADE NOTES
=============

Please see the UPGRADING document in this same directory.


EXPERIMENTAL FEATURES
=====================


KNOWN PROBLEMS
==============

