Release Notes for XWiki Enterprise 4.1 Milestone 1
This is the first milestone of the XWiki Enterprise 4.1 version (Roadmap). This release brings new 3D graphs made with pure XWiki syntax, safer Groovy scripting, and better hiding of internal application related documents.
New and Noteworthy (since XWiki Enterprise 4.0 version)
3D Charting
We've added 2 new types of charts, bar3D and line3D, which draw 3D charts.
For example the following code:
|=Date|=Value
|2012-02-21|1.97
|2012-02-26|2.96
|2012-03-04|3.93
|2012-03-11|4.84
|2012-03-18|5.83
|2012-03-25|4.5
|2012-04-01|3.85
|2012-04-08|4.87
{{/chart}}
Will be rendered as this:
Hide Technical Documents
This effort was started in XWiki 4.0. However in 4.0 we had only implemented the technical solution to mark documents as hidden but we didn't get the time to use it. Now in 4.1 we've marked a lot of documents as Technical and we've modified a lot of UI screens to only display technical documents for users who ask for it.
Specifically there's a User Profile preference that you can set if you wish to see technical documents:
More precisely, the following was implemented:
- Mark a lot of documents as technical documents in the default XWiki Enterprise XAR
- Filter hidden documents from Lucene search results
- Filter hidden documents from database search results
- Filter hidden documents from default panels
- Filter hidden documents in REST APIs
- Filter hidden documents in LiveTable results
As a consequence, by default, a user will only about 24 documents out of 300+ that exist in the default XWiki Enterprise XAR, making it a lot nicer and simpler to apprehend.
Improvements to the Extension Manager
The following improvements were made:
- Performance improved by several order of magnitude
- Install/Uninstall extensions asynchronously
- Improve the display of extension install/uninstall plan
TODO: Add sceenshots
Taming of Groovy scripts
Since traditionally, Groovy scripts can enter into unstoppable infinite loops, use reflection to violate security assumptions, access server resources, or even crash the virtual machine, they have been off limits to non-administrators.
In a bid to open up new scripting options to less permitted users (especially in wiki farms where getting Programming Rights is a problem since it means having those rights on the whole farm), steps have been taken to make Groovy safer.
Groovy scripts are now technically allowed to users having simple Edit rights but the Groovy Sandbox is currently very restrictive (said differently, you cannot do anything useful with it at the moment! ). Now that we have the mechanism in place our plan is to slowly open up allowed operations.
To enable and test this feature read the configuration guide.
Compilation customizers
Customizers can be registered to alter the Groovy script as it is compiled such as filtering System.exit() calls and adding timeout checks to loops to prevent infinite looping. Learn more: http://www.jroller.com/melix/entry/upcoming_groovy_goodness_automatic_thread
Stop run-away Groovy scripts after a configurable timeout
You can now configure your wiki to stop Groovy scripts after a configurable amount of run time. For example if you wish to have a timeout of 10 seconds for your XWiki runtime, you'd configure xwiki's xwiki.properties with:
groovy.customizer.timedInterrupt.timeout=10
New support for "short form" XWQL queries
When you send a query such as where doc.creationDate > '2008-01-01' It is now assumed that you meant:
For developers
- New rendering compatibility test suite to make testing easier and simplify implementation of new syntax renderers. The compatibility report can be found here: http://rendering.xwiki.org/xwiki/bin/view/Main/SyntaxReport
- New API for upgrading installed XWiki Extensions.
Bug fixes and improvements
- Fixed wrong calculation of IDs for stats values making it impossible to upgrade a wiki to version 4.0 if statistics collection is enabled.
- Faster first startup time by not running a database migration when it is not needed.
- Simplify reverse proxy setup by making all HTTP redirects use relitive URLs.
- Add support for bold, italic and monospace in the TeX Renderer
- Was impossible to delete then recreate a subwiki with the same name, fixed.
- Fixed Javascript error when scrolling over Search Suggest results in Internet Explorer 6.
- Trying to change a document's parent from the REST service resulted in an error, fixed.
- It is now possible for non-administrators to execute cross-wiki XWQL queries.
See the full list of JIRA issues fixed in this release.
For Developers
- Move ComponentManager deprecated methods to Legacy modules
- New Groovy module in xwiki-commons
- Add legacy module structure for XWiki Rendering
- Have one Maven module per XWiki Rendering syntax
- Separate Event Syntax from Rendering API by moving it to a Syntax module
- Plain syntax and Event syntax have been moved out of Rendering API nto their own modules.
Upgrades
The following dependencies have been upgraded:
- Tika 1.1
- JGroups 3.0.10
- Pygments 1.5
- Selenium 2.21
- Maven AspectJ Plugin 1.4
- commons-io 2.3
- Maven Shade plugin 1.6
Test Report
You can check the manual test report to learn about what was tested and the results on various browsers.
Tested Browsers
Here's the list of browsers tested with this version (i.e. browsers that we've tested as working - Check the list of supported browsers):
- Firefox
- 12.0.1
Known issues
General Notes
You may also want to import the default wiki XAR in order to benefit from all the improvements listed above.
API Breakages
The following APIs were modified since version 4.0:
org.xwiki.gwt.wysiwyg.client.Images: Method 'public com.google.gwt.resources.client.ImageResource sync()' has been removed
org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String sync()' has been removed
org.xwiki.gwt.wysiwyg.client.diff.AddDelta: Class org.xwiki.gwt.wysiwyg.client.diff.AddDelta removed
org.xwiki.gwt.wysiwyg.client.diff.ChangeDelta: Class org.xwiki.gwt.wysiwyg.client.diff.ChangeDelta removed
org.xwiki.gwt.wysiwyg.client.diff.Chunk: Class org.xwiki.gwt.wysiwyg.client.diff.Chunk removed
org.xwiki.gwt.wysiwyg.client.diff.DeleteDelta: Class org.xwiki.gwt.wysiwyg.client.diff.DeleteDelta removed
org.xwiki.gwt.wysiwyg.client.diff.Delta: Class org.xwiki.gwt.wysiwyg.client.diff.Delta removed
org.xwiki.gwt.wysiwyg.client.diff.Diff: Class org.xwiki.gwt.wysiwyg.client.diff.Diff removed
org.xwiki.gwt.wysiwyg.client.diff.DiffAlgorithm: Class org.xwiki.gwt.wysiwyg.client.diff.DiffAlgorithm removed
org.xwiki.gwt.wysiwyg.client.diff.DiffException: Class org.xwiki.gwt.wysiwyg.client.diff.DiffException removed
org.xwiki.gwt.wysiwyg.client.diff.DifferentiationFailedException: Class org.xwiki.gwt.wysiwyg.client.diff.DifferentiationFailedException removed
org.xwiki.gwt.wysiwyg.client.diff.PatchFailedException: Class org.xwiki.gwt.wysiwyg.client.diff.PatchFailedException removed
org.xwiki.gwt.wysiwyg.client.diff.Revision: Class org.xwiki.gwt.wysiwyg.client.diff.Revision removed
org.xwiki.gwt.wysiwyg.client.diff.RevisionVisitor: Class org.xwiki.gwt.wysiwyg.client.diff.RevisionVisitor removed
org.xwiki.gwt.wysiwyg.client.diff.SimpleDiff: Class org.xwiki.gwt.wysiwyg.client.diff.SimpleDiff removed
org.xwiki.gwt.wysiwyg.client.diff.ToString: Class org.xwiki.gwt.wysiwyg.client.diff.ToString removed
org.xwiki.gwt.wysiwyg.client.diff.myers.DiffNode: Class org.xwiki.gwt.wysiwyg.client.diff.myers.DiffNode removed
org.xwiki.gwt.wysiwyg.client.diff.myers.MyersDiff: Class org.xwiki.gwt.wysiwyg.client.diff.myers.MyersDiff removed
org.xwiki.gwt.wysiwyg.client.diff.myers.PathNode: Class org.xwiki.gwt.wysiwyg.client.diff.myers.PathNode removed
org.xwiki.gwt.wysiwyg.client.diff.myers.Snake: Class org.xwiki.gwt.wysiwyg.client.diff.myers.Snake removed
org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncPlugin: Class org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncPlugin removed
org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncPluginFactory: Class org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncPluginFactory removed
org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncResult: Class org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncResult removed
org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncService: Class org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncService removed
org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncServiceAsync: Class org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncServiceAsync removed
org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncStatus: Class org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncStatus removed
org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncTools: Class org.xwiki.gwt.wysiwyg.client.plugin.sync.SyncTools removed
org.xwiki.wysiwyg.server.plugin.sync.SyncEngine: Class org.xwiki.wysiwyg.server.plugin.sync.SyncEngine removed
org.xwiki.wysiwyg.server.plugin.sync.SyncException: Class org.xwiki.wysiwyg.server.plugin.sync.SyncException removed