
This is an unstable, nightly of JSPWiki v2.3

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

* Authentication and authorization.  Note, however, that this is very experimental
  at this stage, and does not work with your existing jspwiki.properties file.
  
  Make sure that you have all the auth-related definitions from the included
  jspwiki.properties in your own one, or else you will fall prey to a dozen
  different failure cases.


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

Upgrading from 2.2:

<nothing yet>

Upgrading from 2.0:

* Please reinstall in a new directory.  Then move your modified
  templates into the new templates/ -directory.  You MUST
  have the default template in place, else things might not
  work.
* Replace jspwiki.properties with your old configuration file.
  It should run unmodified, though you might want to go through
  the new file to see new options.

Upgrading from earlier installations:

* Please make a complete reinstall.  Your wiki pages will still be
  compatible, and the configuration for the most part.

Please visit http://www.jspwiki.org/Wiki.jsp?page=Release2.2Discussion
for further information.


KNOWN MAJOR ISSUES
==================

* Documentation needs cleanup; parts of it are out of date, etc.

* See above for auth notes

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

There are some features in this release which could mostly be considered
experimental at best.  The following ones are known to work only 
partially:

* Atom support.  We can give out feeds in Atom 0.3, but it's not really
  tested properly.  There's also preliminary APP support, but it does 
  not work.
  
* WYSIWYG editing.  You need to install FCK by yourself.  It sort of
  works, but not quite.
  
* Install.jsp.  It's still a bit experimental, though it should work...

* WebDAV support.  This is known to be broken on pretty many levels...

* XHTML -> WikiMarkup translation.  Spotty, but should work for the most
  part.
  

NOTE ABOUT AUTHENTICATION
=========================

This JSPWiki version includes an unsupported version of Authorization
and Authentication.  AAA was supposed to be the major feature of the
2.2 release, but unfortunately it turned out that the solution chosen
was crappy and the coder (me) did not know what he was doing.  This
dragged the work for the 2.2 release behind for many months, as I was
not really interested in doing it.  So I decided to discard the entire
solution and settle for something simpler.  This work is still
ongoing, and a new solution is being drafted.

The old auth system is still in place, but it is completely deprecated
and largely undocumented.  You may use it if you want, but please do
not report any bugs regarding it.  You can enable it by putting
"jspwiki.auth.useOldAuth=true" in your jspwiki.properties.
