Release Notes for XWiki 9.2

Last modified by Thomas Mortagne on 2017/04/05

This is the release notes for XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise. They share the same release notes as they are released together and have the same version.

This release introduces the Notification menu to follow wiki activity more easily. The Administration has been re-organized with a collapsible menu. The Menu Application becomes responsive with burger menus. For the advanced users, the CKEditor integration adds support for dedicated Insert Macro tool bar buttons and the Extension Manager adds support for conflict resolution configuration when installing an extension. As usual, the release also brings many bug fixes and other small improvements.

New and Noteworthy (since XWiki 9.1.2)

Full list of issues fixed and Dashboard for 9.2.

For Users

Notifications

 
We have introduced a list of notifications in the top menu, that list some events that have occurred in the wiki recently: a page has been created, a new blog post has been published, etc...

See the Notifications Application's page to have more infos.

Confirmation before clearing notifications

 
Now a confirmation is asked before clearing all notifications.

Administration Improvements

 
The Administration has been reorganized. Most of the administration sections from the "Applications" group have been moved to existing or new groups. We applied a consistent style across all the administration sections and we added more hints for the configuration options. The administration menu is now implemented using a collapsible accordion. 

CKEditor Integration Improvements

 
The integration with the CKEditor has been improved to support putting dedicated Insert Macro buttons on the tool bar. We enabled the native (in-browser) spellchecker and we fixed a few bugs.

Improvements of the Menu Application on Mobile

 
The space taken by the horizontal menus created with the Menu Application has been reduced by introducing menu burgers on Mobile display. The burgers are placed on the left side of the page, to avoid confusion between the Drawer menu and the horizontal menus.

For Admins

Extension Manager improvements

 
Extension Manager now gives a chance to users requesting it in their profile configure default conflict resolution behavior at the beginning of the install/upgrade/uninstall.

For Developers

Ability to store events in the event stream and display them as notifications

 
It is now possible to say to the Event Stream Module that some events, sent with the Observation Module, should be stored.

In addition, this events can be displayed in the notifications menu of users. See the tutorial: How to send notifications.

Jobs improvements

 

  • The JobStatus now indicates the job type. There is nothing to do for Job extending AbstractJob but other will have to properly support it in the their JobStatus.
  • The Job REST API now automatically injects context information (current user, current caller, current wiki, current document, current secure document, the request URL and parameters) in the job thread.

Filer Stream improvements

 
Instance Filter output stream now support xobjects without class definition so input filters don't have to generate events for it. It automatically fallback on the xclass located in the current wiki.

Miscellaneous

  • Extension Manager improvements: Extension Manager now generate events just before starting to install/uninstall/upgrade an extension.

Moved Modules

No modules have been deprecated, retired or moved.

Upgrades

The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise):

Translations

The following translations have been updated: 

Tested Browsers & Databases

Here is the list of browsers we support and how they have been tested for this release:

BrowserTest Result
Chrome30.pngGoogle ChromeNot Tested
Firefox30.pngMozilla Firefox 52Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features
IE30.pngInternet Explorer 10Not Tested
IE30.pngInternet Explorer 11Not Tested

Here is the list of databases we support and how they have been tested for this release:

DatabaseTest Result
hypersql.pngHyperSQLNot Tested
mysql.pngMySQLNot Tested
oracle.pngOracle 11.2Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features
postgresql.pngPostgreSQLNot Tested

Performances tests compared to 8.4.4

Summary

There hasn't been much work on performance in 9.x so it's very similar to 8.4.4. Solr has been upgraded (from 6.2.1 to 6.4.2) and looks like it affected the speed of the job responsible for finding out what need to be indexed/removed but it does not seems to have any impact on actual indexing or standard document search. 

"similar": difference is lower than 10%
"slightly": difference is lower than 20%

Note that most of the speed related values are an average of very moving results, a lot of things is happening during a HTTP request and it's far from stable duration (that's why 10% may sounds a lot for something called "similar" but the variable can go up and down around 5% sometimes so 10% average is really not that much of a clear win). Dumbbench based tests are executed several times and the lowest result is selected. 

Speed

ActionsDifference
Jetty startupsimilar
First accessnot existing page without UIsimilar
not existing page with UI 
Reloadnot existing page without UIsimilar
not existing page with UIsimilar
empty page without UIsimilar
empty page with UIsimilar
Main.WebHome without UIsimilar
Main.WebHome with UIsimilar
SOLRFull SOLR reindexsimilar
SOLR sync when index is empty+70%
SOLR sync when there is nothing to do+70%
Result of search finding lots of resultssimilar
Result of search finding one resultsimilar
RenderingPage with 1000 macros without UIsimilar
Page with 1000 html macros without UIsimilar

Memory

ActionsDifference
Heap Memory after jetty startup-3MB
Heap Memory after full SOLR indexsimilar

More details on performance comparison on single wiki between 9.2 and 8.4.4.

Known issues

Backward Compatibility and Migration Notes

General Notes

When upgrading make sure you compare your xwiki.cfg, xwiki.properties and web.xml files with the newest version since some configuration parameters may have been modified or added. Note that you should add xwiki.store.migration=1 so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.

API Breakages

The following APIs were modified since XWiki 9.1.2:

  • The ExtensionId.hashCode field was wrongly introduced as non transient and deserializing some data serialized with the previous XWiki version should at worse initialize it to the default value which is -1 and ok. In any case we're using the ignoreUnknownElements() option on the XStream side so we should be ok anyway!
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.ExtensionId.serialVersionUID

      ## New:
      field org.xwiki.extension.ExtensionId.serialVersionUID
  • Does not break anything: new static field with no impact on the serialization/unserialization
    • Violation type:
      java.field.serialVersionUIDUnchanged
    • Code:
      ## Old:
      field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID

      ## New:
      field org.xwiki.extension.job.AbstractExtensionRequest.serialVersionUID
  • This method was wrongly exposed as protected and was exposing the Event class which is a private class and thus the method couldn't be used as protected anyway
    • Violation type:
      java.method.visibilityReduced
    • Code:
      ## Old:
      method void org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter::appendInlineEvent(org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter.Event) throws org.xml.sax.SAXException

      ## New:
      method void org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter::appendInlineEvent(org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter.Event) throws org.xml.sax.SAXException
  • This method was wrongly exposed as protected and was exposing the Event class which is a private class and thus the method couldn't be used as protected anyway
    • Violation type:
      java.method.visibilityReduced
    • Code:
      ## Old:
      method void org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter::sendInlineEvent(org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter.Event) throws org.xml.sax.SAXException

      ## New:
      method void org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter::sendInlineEvent(org.xwiki.rendering.wikimodel.xhtml.filter.XHTMLWhitespaceXMLFilter.Event) throws org.xml.sax.SAXException
  • Not a breakage from REST API point of view
    • Violation type:
      java.annotation.removed
    • Code:
      ## Old:
      field org.xwiki.rest.model.jaxb.JobStatus.id

      ## New:
      field org.xwiki.rest.model.jaxb.JobStatus.id
  • Not a breakage from REST API point of view
    • Violation type:
      java.annotation.removed
    • Code:
      ## Old:
      field org.xwiki.rest.model.jaxb.JobStatus.progress

      ## New:
      field org.xwiki.rest.model.jaxb.JobStatus.progress
  • Not a breakage from REST API point of view
    • Violation type:
      java.annotation.attributeValueChanged
    • Code:
      ## Old:
      class org.xwiki.rest.model.jaxb.JobStatus

      ## New:
      class org.xwiki.rest.model.jaxb.JobStatus
  • Not a breakage from REST API point of view
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method org.xwiki.rest.model.jaxb.JobStatus org.xwiki.rest.resources.job.JobStatusResource::getJobStatus(java.lang.String) throws org.xwiki.rest.XWikiRestException

      ## New:
      method org.xwiki.rest.model.jaxb.JobStatus org.xwiki.rest.resources.job.JobStatusResource::getJobStatus(java.lang.String, boolean, boolean, boolean, java.lang.String) throws org.xwiki.rest.XWikiRestException

Credits

The following people have contributed code to this release (sorted alphabetically):

  • Alexandru Cotiugă
  • Ecaterina Moraru (Valica)
  • Guillaume Delhumeau
  • Manuel Smeria
  • Marius Dumitru Florea
  • Raluca Stavro
  • Thomas Mortagne
  • Vincent Massol
Tags:
   

Get Connected