Release Notes for XWiki 14.0-rc-1

Last modified by Ilie Andriuta on 2022/02/02

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

This is the first release of 14.x cycle which introduces the drop of Java 8: XWiki now requires Java 11 to work. As part of this cycle we're also dropping support of Internet Explorer 11. This release includes new work to allow refactoring of attachments, a few new UI extension points for developpers and better explanatory messages when macro are missing, among other improvments.

The following regressions were introduced in this release (and found after it was released). Please check them out and if they impact you we recommend waiting to upgrade to a version where they are fixed.

New and Noteworthy (since XWiki 13.10.2)

Full list of issues fixed and Dashboard for XWiki 14.0.

For Users

Attachment Move

 
A new button is now available in the attachments pane, allowing to move or rename an attachment. It is possible to change the name or the location of the attachments. Optionally, a redirection action is proposed, allowing to automatically redirect requests to the old location of an attachment to the new one.

For Admins

Suggestions for missing macros

 
When a macro does not exist, you get an error in the page where it's used. If that macro exists in an available extension and you're an Admin user, you will get a link to this extension to install it using the Extension Manager, right in the error message description.

Miscellaneous

  • Less strict code verification in the reset password system: We allow to relax a bit the reset password email link security mechanism to avoid it being revoked at first access, in order to avoid issues with software that checks email links. This mechanism can be used by changing a property in xwiki.properties:

    #-# [Since 13.10.1]
    #-# [Since 14.0RC1]
    #-# Define the lifetime of the token used for resetting passwords in minutes. Note that this value is only used after
    #-# first access.
    #-# Default value is 0 meaning that the token is immediately revoked when first accessed.
    #-# Use a different value if the reset password email link might be accessed several times (e.g. in case of using an
    #-# email link verification system): in such case the user will have the defined lifetime to use again the email link.
    #-#
    #-# The default is:
    # security.authentication.resetPasswordTokenLifetime = 0

For Developers

Rendering error reporting improvements

 
All rendering error (missing macro, etc.) used to be hardcoded. It's now translatable and customization thanks to various extension points. See Rendering Error Reporting for more details about this new system.

UI Extension improvements

 

  • New uiextension and uiextensions macros have been introduced to ease the creation of extension points and display of insertion UI extensions in general in a wiki content.
  • UI extensions now support inline execution. UI extension API used to only allow standalone content, but it's now possible to tell them that they should produce content to insert inline.
  • The default UIExtensionManager component now also check if a specific UIExtensionManager exist for the given extension point identifier.

See UIExtension Module for more about UI extensions.

Extension points for document information

 
New extension points in the document information panel and the information docextra allow to add extra settings or information that is directly related to a document's content and should thus be easily accessible together with the document in view or edit mode.

Miscellaneous

  • HTML cleaner supports HTML5: The HTML cleaner in the XML Module now supports cleaning HTML 5 into XHTML 5 when setting the HTML version parameter.

  • In-place editing supports creating objects: The in-place editor for object properties now also supports creating objects by specifying data-object-policy="updateOrCreate" in the <dt>-tag. The also-introduced velocity macro #createObjectAndPropertyIfMissing allows to (temporarily) add an object and a property to the current document using a reference to the property like "Some.UsefulClass[5].status" which is useful for displaying the default value of the property when the object doesn't exist in the document. This can be used to introduce new properties in a docextra tab, see this example.

  • Add original metadata author to XWikiDocument: A new concept of author has been introduced and the way authors are managed in XWikiDocument have been refactored to rely on a unique interface DocumentAuthors.

    We now distinguish 4 different kind of authors information:

    • the creator: there's no ambiguity it's the user who created the document
    • the content author: it's the author who performed a change in the content of the document, by opposition with changing a metadata of the document such as an xobject, or an attachment. We distinguish it for security reason since the content of the document might contain scripts that are executed when viewing the document
    • the effective metadata author: it's the author which has been used to save any change in the document, content or not. So changing the content of the document will update both this author, and the content author. However, updating an attachment of a document will only update this author, not the content author. 
    • the original metadata author: it's finally the author you see displayed in the interface, it's most of the time the same as the effective metadata author but in some usecases it might be different. For example when a script wants to allow a user to perform a save without changing the effective author for security reasons, but wants to display the author who actually triggers the save.

    Only the original metadata author has been introduced in this release, but all authors have been renamed and now relies on UserReference.

  • Inline template execution: It's now possible to execute a template inline. There was nothing previously in the TemplateManager to indicate that the template was meant to be inserted in an inline content, and it was not really working properly for the template macro. See Template Module for more details on how to use the TemplateManager.

  • It is now possible to provide new redirection strategies: The RedirectionFilter role allows developers to define domain specific redirection logic.

Upgrades

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

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:

 BrowserTested on:
Chrome30.pngGoogle Chrome 97Not Tested
Firefox30.pngMozilla Firefox 96 
Edge30.pngMicrosoft Edge 97Jira Tickets Marked as Fixed in the Release Notes
Safari30.pngSafari 15Not Tested

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

 DatabaseTested on:
hypersql.pngHyperSQL 2.5.2Not Tested
mariadb.pngMariaDB 10.6Not Tested
postgresql.pngPostgreSQL 14Not Tested
mysql.pngMySQL 8Jira Tickets Marked as Fixed in the Release Notes
oracle.pngOracle 19cNot Tested

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

 Servlet ContainerTested on:
tomcat-icon.pngTomcat 9.0.58Jira Tickets Marked as Fixed in the Release Notes
jetty-icon.pngJetty 10.0.7 (XWiki Standalone packaging)Not Tested
jetty-icon.pngJetty 10.0.7Not Tested

Known issues

Backward Compatibility and Migration Notes

General Notes

  • When upgrading make sure you compare and merge the following XWiki configuration files since some parameters may have been modified, removed or added:
    • xwiki.cfg
    • xwiki.properties
    • web.xml
    • hibernate.cfg.xml
  • Add xwiki.store.migration=1 in xwiki.cfg so that XWiki will attempt to automatically migrate your current database to any new schema. Make sure you backup your Database before doing anything.

Issues specific to XWiki 14.0-rc-1

Drop support of Java 8

XWiki now requires Java 11 to run.

Drop support of Internet Explorer 11

Internet Explorer 11 support has been dropped: we removed most of the hacks that were required by IE11 which makes this new version of XWiki unusable with this old web browser. Check the Browser Support Strategy documentation to see the list of supported web browsers.

Mentions

A local database is stored in the permanent directories and stores the updated document that needs to be analyzed for new mentions. This database is based on H2 MVStore. When upgrading to 14.0RC1+ the file format of H2 MVStore changes and the old one becomes unsupported. The old database file is moved to a backup file, and a new one is created.

In this case, any updated document queued for upgrade when the server is stopped will be discarded, and some users will not be notified of their mentions.
Please make sure that the queue size is at zero before upgrading (see JMX).

API Breakages

The following APIs were modified since XWiki 13.10:

Unknown Criticality

These violationq are missing a criticality and need to be fixed.

  • Migration not needed anymore.
    • Violation type:
      java.class.removed
    • Code:
      ## Old:
      class com.xpn.xwiki.store.migration.hibernate.R130200001XWIKI18429DataMigration
  • Migration not needed anymore.
    • Violation type:
      java.class.noLongerInheritsFromClass
    • Code:
      ## Old:
      class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration

      ## New:
      class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration
  • Migration not needed anymore.
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration

      ## New:
      class com.xpn.xwiki.store.migration.hibernate.R130407000XWIKI19207DataMigration
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.field.removed
    • Code:
      ## Old:
      field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.JsxAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.JsxAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.field.removed
    • Code:
      ## Old:
      field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.SsxAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.SsxAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.field.removed
    • Code:
      ## Old:
      field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.sx.AbstractSxAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.sx.AbstractSxAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.field.removed
    • Code:
      ## Old:
      field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.plugin.charts.actions.ChartingAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.plugin.charts.actions.ChartingAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.field.removed
    • Code:
      ## Old:
      field com.xpn.xwiki.web.XWikiAction.handleRedirectObject @ com.xpn.xwiki.web.DotAction
  • Not a breaking change, but moved to legacy.
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean com.xpn.xwiki.web.XWikiAction::handleRedirectObject(com.xpn.xwiki.XWikiContext) throws com.xpn.xwiki.XWikiException @ com.xpn.xwiki.web.DotAction

Credits

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

Alex Cotiugă
Anca Luca
Andreea Chirica
Clemens Klein-Robbenhaar
Clemens Robbenhaar
Ecaterina Moraru (Valica)
Eduard Moraru
Guillaume Delhumeau
Jascha Kirchhoff
Jerome Prinet
Manuel Leduc
Marius Dumitru Florea
Michael Hamann
Simon Urli
Simpel
Thomas Mortagne
Vincent Massol
Vyom Yadav
xrichard

Get Connected