
Apache JSPWiki 2.10.0 - Release Notes
=====================================

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.  

The license file can be found in LICENSE.


Welcome to the stable version of Apache JSPWiki 2.10.0!

Apache JSPWiki 2.10.0 is the first JSPWiki release made as an Apache TLP. This release
features, among other things:
  * use of jspwiki-custom.properties to override specific values of jspwiki.properties file
  * new CleanBlue skin, contributed by Ichiro Furusato
  * support of the X-Forwarded-For HTTP request header
  * merging and compression of css & js
  * upgrade of used libraries
    -> lucene to 4.6
    -> commons-io to 2.4
    -> hsqldb to 2.3.0 (for testing)
    -> jetty to 8.1.12 (for testing)
    -> ehcache replacing oscache
  * switch to maven as build tool
  * jspwiki artifacts published at Central repository (org.apache.jspwiki groupId)
  * dropped RCS support

There have also been some public API changes, detailed at:
http://svn.apache.org/repos/asf/jspwiki/trunk/jspwiki-war/src/main/config/doc/2.10-API.txt

Details are available in the ChangeLog file or via our issue tracker.

Please report any issues at https://issues.apache.org/jira/browse/JSPWIKI



Apache JSPWiki 2.9.1-incubating - Release Notes
===============================================

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.  

The license file can be found in LICENSE.


Welcome to the stable version of Apache JSPWiki 2.9.1-incubating!

Apache JSPWiki 2.9.1-incubating is the second JSPWiki which is not only released
completely under the Apache License 2.0, but which is also an official Apache
release from within the Apache Incubator. This version is mainly a manteinance
release.

Details are available in the ChangeLog file or via our issue tracker.

Please report any issues at https://issues.apache.org/jira/browse/JSPWIKI



Apache JSPWiki 2.9.0-incubating - Release Notes
===============================================

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.  

The license file can be found in LICENSE.


Welcome to the stable version of Apache JSPWiki 2.9.0-incubating!

Apache JSPWiki 2.9.0-incubating is the first JSPWiki which is not only released
completely under the Apache License 2.0, but which is also an official Apache
release from within the Apache Incubator.


Please report any issues at https://issues.apache.org/jira/browse/JSPWIKI


UPDATES SINCE 2.8.4
===================

Details are available in the ChangeLog file or via our issue tracker.

Highlights include:

* The java packages have been renamed from com.ecyrd.jspwiki to org.apache.wiki.

* Support external properties in WikiEngine (idea from John McKinney)
          You can now override individual properties in jspwiki.properties using
          standard Java System properties.

* Extended the list of file suffixes indexable for the integrated Lucene search
          engine. We now do ".txt", ".ini", ".xml", ".html", "htm", ".mm",
          ".htm", ".xhtml", ".java", ".c", ".cpp", ".php", ".asm", ".sh",
          ".properties", ".kml", ".gpx", ".loc"


UPDATES SINCE 2.8.3
===================

The full list is available in the ChangeLog file.  Highlights include

* Improvements in JCR Export

* Numerous minor bug fixes


UPDATES SINCE 2.8.2
===================

The full list is available in the ChangeLog file.  Highlights include

* Improved logging

* JDK6 compilation support

* Brazilian Portuguese translation, thanks to Paulo Amaral

* Addition of new PageViewPlugin

* Numerous bugfixes, esp. in sorting.


NEW FEATURES SINCE 2.6.x
========================

* JSPWiki now requires JDK 1.5 to run.

* Simplified Chinese, Dutch, Italian and Russian localizations added!

* There is no more need for JAAS files!  Hooray!  This has
  been replaced with custom jspwiki properties.  Please see
  the UPGRADING document.

* Massive improvements to the default template, like
  section editing.
  
* Sneak preview in the default editor

* WikiWizard is removed (it is LGPL), but FCK integration is available,
  and WikiWizard can still be installed as a separate package.

* German, Finnish, Spanish, Simplified Chinese and Dutch language corepages

* Support for the UniversalEditButton (http://universaleditbutton.org/).

* Password hashes are now salted.  This means you can't share the passwords
  if you have JSPWiki 2.6 instances, as the passwords are upgraded
  transparently.

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

Please also see http://www.jspwiki.org/wiki/NewIn2.8

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

Please see the UPGRADING document in this same directory.


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:

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

* Admin interface.  Check out /admin/Admin.jsp.

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

* WebDAV does not yet support the new authentication/permissions scheme.
  Therefore, if you have very sensitive data in your wiki, you might not want
  to enable it.

* Not all old plugins work.  Specifically any plugins, which construct 
  new WikiPages will fail because of the constructor has been changed.

* The PageFilter API was changed in 2.6

* Our documentation simply sucks at this point.  Please forgive us,
  and point where those fixes are needed.  We will improve upon
  based your input.

* The ShortURLConstructor does not work reliably.  Please use
  ShortViewURLConstructor, or Apache mod_rewrite.

* Running with a security manager isn't yet supported (see JSPWIKI-129).
