Version 5.1 by Thomas Mortagne on 2011/10/11

Show last authors
1 {{velocity}}
2 $xwiki.ssx.use("ReleaseNotesXWikiEnterprise30M3")
3 {{/velocity}}
4
5 {{box cssClass="floatinginfobox" title="**Contents**"}}{{toc/}}{{/box}}
6
7 Following the [[goals established for the 3.x cycle>>enterprise:Main.Roadmap#HXWikiEnterprise3.xCycle]], XWiki Enterprise 3.2 pushes forward in the directions of the Application Within Minutes and Extension Manager features. The highlights of this release are:
8
9 * many **extension manager improvements**
10 * new implementation of the **sheet system** making it easier to bind sheets to objects without an explicit inclusion of the sheet in the document content
11 * **user dashboards** giving each user the possibility to configure their own home page
12 * introduction of **wiki workspaces**, as a more collaborative way of managing an XWiki virtual farm
13 * improvements of **search results** scoring
14 * **storage improvements**, bringing in numerous performance and compatibility improvements
15 * conversion of the **panels application** to the XWiki 2.0+ syntax
16 * easier activation and configuration of **Google Analytics**
17
18 And on the developers' front:
19
20 * **CSRF prevention** enabled by default
21 * support for **DocBook syntax**
22 * ##xwiki-commons## and ##xwiki-rendering## are now [[**published on the central Maven2 repository**>>http://search.maven.org/#search%7Cga%7C1%7Corg.xwiki]]
23 * some major **code cleanup** due to the retirement of some very old plugins and the move of legacy/deprecated code into separate modules
24
25 We've setup a [[Jira dashboard>>http://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=10581]] to present the work done for the whole 3.2 release. In summary, 341 issues have been closed by 12 committers (and other contributors providing patches), out of which 150 are fixed bugs.
26
27 = New and Noteworthy (since XWiki Enterprise 3.1) =
28
29 == Extension Manager improvements ==
30
31 Progressing towards the completion of the extension manager, 3.2 adds support for:
32 * [[virtual extensions>>extensions:Extension.Extension Module Virtual Extensions]], or aliases for extensions that have changed their identifier
33 * automated 3-way merging of wiki documents, which brings update capabilities for XAR extensions
34 * better error reporting during installation, upgrade or removal of extensions
35 * [[XWiki repository>>extensions:Extension.Extension Module Repository]] REST protocol has been rewritten
36 * local extensions repository moved from ##~~/.xwiki## to container persisted directory
37 * display all the extensions metadatas when resolving it
38
39 == New implementation of the sheet system ==
40
41 In preparation for the //Application Within Minutes// major feature, this release introduces a new way of associating objects with the sheets used for displaying them. Whereas until now the content of the document had to explicitly contain an ##{~{include}~}## statement in order to display an attached object, an object can pull its sheet automatically. This frees up the document content for a more useful purpose.
42
43 The new sheet detection mechanism allows for more flexibility. Whereas with the old ##{~{include}~}## mechanism sheets could only be bound to a specific document, the new implementation brings a plethora of additional options: sheets can be associated globally to a class, they can be differentiated on a specific action (allowing to use different sheets for //view//, //edit// or //export//), they can be specified for different users or groups, or even forced explicitly via request parameters.
44
45 With the new sheet mechanism, form editing can now be performed using the ##/edit/## action, either automatically for documents containing sheet-bound objects, or explicitly forced using the ##editor=inline## request parameter. In consequence, **the ##/inline/## action has been deprecated**.
46
47 Most of the classes/sheets bundled with XWiki Enterprise have been updated already to use the new mechanism. Upgraded wiki instances containing documents which still rely on the old sheet inclusion mechanism will continue to work, but it's recommended to update them.
48
49 You can read more about this feature on the [[Sheet Module>>extensions:Extension.Sheet Module]] documentation page.
50
51 == User Dashboards ==
52
53 After wiki- and space-wide dashboards, this release brings support for personal dashboards. Each user can define their own dashboard in their profile document, and they can use it either in their profile document, or display it instead of the homepage default dashboard.
54
55 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32M2@userdashboard.png||class="screenshot"]]
56
57 == Wiki Workspaces ==
58
59 We have adopted the [[extensions:Extension.Workspace Application]] as an XWiki platform project. In a few words, the //Workspace Application// allows regular users to create workspaces where they can collaborate on a specific topic. A workspaces is, in essence, a regular subwiki that is to be used by a group of global users. It allows global users to join or be invited and to easily navigate through the available workspaces and back to the main wiki.
60
61 The //Workspace Application// is best suited for intranets or any other use case that involves having only global users and going back and forward through projects or departments that are separated in subwikis. It is not intended for environments such as wiki farms, where each subwiki is a bubble, having its own users, oblivious about other subwikis or the main wiki. This later use case is better served by [[XWiki Enterprise Manager>>manager:Main.WebHome]].
62
63 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@create-workspace-entry.png||alt="Create workspace button" class="screenshot"]]
64 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@main-wiki-section-in-a-workspace.png||alt="Main wiki section displayed in top menu while in a workspace" class="screenshot"]]
65 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@workspace-administration-workspaceusers-section.png||alt="Workspace Users section in the workspace's administration section replacing 'Registration' and 'Users'" class="screenshot"]]
66 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@workspaceDirectory.png||alt="Workspace Directory listing available workspaces and available actions" class="screenshot"]]
67
68 The //Workspace Application// is not bundled by default with any XWiki product, but it can be installed as an extension.
69
70 == Improved search results scoring ==
71
72 The search results retrieved by the Lucene plugin have been for a long time the target of many complaints, since documents that were actually relevant for a query usually appeared too low in the results list. This issue has now been improved, by scoring results differently depending on the field where the search query matches. A hit on the document title will ensure that the document will be among the first results, while a hit on the owner document's name of an attached image will place the image towards the end.
73
74 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32M3@search.png||class="screenshot"]]
75
76 == Storage improvements ==
77
78 The version of [[Hibernate>>http://hibernate.org]] used by XWiki has been upgraded to 3.6.7, bringing in numerous performance and compatibility improvements. Additionally, the mapping and configuration files have been reviewed, upgraded and simplified. InnoDB, which used to be only recommended, is now enforced by default when creating a new database or table in MySQL. Further performance enhancements for default installations come from the fact that the proper indexes needed for efficient database access are now auto-created at startup, eliminating the need for manual configuration.
79
80 == Converted the Panels application to the new XWiki syntax ==
81
82 Although only a rewrite, with no new features, this makes it easier to edit panels. Several panels have also been cleaned up and optimized, minimizing the use of inline HTML, which was replaced with wiki markup.
83
84 == Easier activation and configuration of Google Analytics ==
85
86 In older versions, XWiki provided a velocity template that could be edited to enable Google Analytics. Still, this required either access to the server or overriding a template in the skin document, which was not that easy to discover. Starting with this version, there is a custom section in the wiki Administration which makes it extremely easy to enable Google Analytics tracking.
87
88 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32M3@analytics.png||style="border: 1px solid black"]]
89
90 The new implementation also allows to define different tracking accounts for each wiki, and to use more than one tracking account per wiki.
91
92 = For Developers =
93
94 == CSRF prevention is enabled by default ==
95
96 [[Cross-site request forgery>>https://secure.wikimedia.org/wikipedia/en/wiki/CSRF]] is an exploit done via JavaScript, which allows a malicious/broken site to include javascript that performs actions on another site on behalf of the currently logged in user. Starting with 3.2, XWiki comes with a prevention mechanism enabled by default. Although it was introduced earlier, in [[2.5>>ReleaseNotes.ReleaseNotesXWikiEnterprise25#HTestingCSRFprotection]], it wasn't enabled by default since several actions were broken by this change. While we now expect almost everything to work fine, please [[report>>http://jira.xwiki.org/secure/Dashboard.jspa]] any actions that are still broken.
97
98 {{warning}}This feature can break custom applications that don't use the standard form edition mode and instead implement their own forms or form handling mechanism.{{/warning}}
99
100 If your application has been broken by this change, usually all it takes to make it compatible with the CSRF prevention mechanism is to add a hidden field inside the submitted forms, or to add a request parameter to the data-altering URLs:
101
102 {{code language="none"}}
103 Inside forms:
104 <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
105
106 Inside URLs:
107 $doc.getURL('action', "parameters=values&form_token=$!{services.csrf.getToken()}")
108 $xwiki.getURL('Some.Document', 'action', "parameters=values&form_token=$!{services.csrf.getToken()}")
109 {{/code}}
110
111 == New rendering features: DocBook syntax and {~{comment}~} macro ==
112
113 The XWiki rendering engine includes support for parsing from and rendering into the [[DocBook>>http://en.wikipedia.org/wiki/DocBook]] syntax, thanks to the corresponding Doxia modules. Among other usecases, this means that:
114 * XWiki pages can be transformed into DocBook documents to be further transformed into other formats, like ##man## pages or epub documents, making XWiki a better tool for documentation writing
115 * existing DocBook documents can be imported directly into an XWiki instance, thereby benefiting from the lifecycle of any wiki document, such as easy on-line editing and instant HTML preview
116 * the xwiki-rendering project can be integrated in a tool to convert wiki markup into DocBook content
117
118 A new ##{~{comment}~}## macro is provided for including textual comments inside documents, other than HTML ##<!~--comments ~-->## inside a ##{~{html}~}## macro or Velocity ##~#* comments *~### inside a ##{~{velocity}~}## macro.
119
120 {{code language="none"}}
121 Visible text. {{comment}}This text won't be visible in the resulting HTML page{{/comment}} And this is visible again.
122 {{/code}}
123
124 == Improvements to the Suggestion and Spotlight Search widgets ==
125
126 Extensive polishing and bugfixing work has been done for the Spotlight-like search, making it more stable and easier to use and customize. Some improvements include the option to display only one "//loading//" status for all the suggestion sources, the option to display hints next to each search result, better highlighting of matches between the input text and the displayed items, plus various bugfixes.
127
128 [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32M2@suggest.png||class="screenshot"]]
129
130 == New JavaScript testing framework ==
131
132 Unit tests for JavaScript code can now be written using the [[Jasmine framework>>http://pivotal.github.com/jasmine/]] for behavioral-driven development.
133
134 Example [[tests>>https://github.com/xwiki/xwiki-platform/blob/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-web/src/test/javascript/spec/suggest.js]] for the [[input suggestions widget>>https://github.com/xwiki/xwiki-platform/blob/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-web/src/main/webapp/resources/uicomponents/suggest/suggest.js]]:
135
136 {{code language="javascript"}}
137 describe("Suggest", function() {
138 describe("Emphasis Matcher", function() {
139 it("emphasizes a single match", function() {
140 var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("Typed", "Value with Typed word");
141 expect("Value with <em>Typed</em> word").toEqual(result);
142 });
143
144 it("emphasizes several matches", function() {
145 var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("Words Typed", "A Selection Of Words Been Typed");
146 expect("A Selection Of <em>Words</em> Been <em>Typed</em>").toEqual(result);
147 });
148
149 it("emphasizes repeated matches", function() {
150 var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("To Be", "To Be, Or Not To Be");
151 expect("<em>To</em> <em>Be</em>, Or Not <em>To</em> <em>Be</em>").toEqual(result);
152 });
153
154 it("preserves original case", function() {
155 var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("wOrDs TypEd By An eMo kID", "Words Typed By John Doe");
156 expect("<em>Words</em> <em>Typed</em> <em>By</em> John Doe").toEqual(result);
157 });
158
159 it("is neutral when there are no match", function() {
160 var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("Rock'n'roll", "Bring me A bowl of coffee before I turn into a goat");
161 expect("Bring me A bowl of coffee before I turn into a goat").toEqual(result);
162 });
163 });
164 });
165 {{/code}}
166
167 == Named parameters for the event stream ==
168
169 The new [[event stream module>>extensions:Extension.Event Stream Module]] offers support for arbitrarily named parameters to be associated with stored events. This is a better way of dealing with extra parameters than the old up to 5 numbered parameters supported by the ActivityStream plugin. The limitation is that both the name and the value must be strings of at most 255 characters. Read more about the event stream module and how to use these named parameters in [[the module's documentation>>extensions:Extension.Event Stream Module]].
170
171 == GPG signed artifacts ==
172
173 Starting with this release, all build artifacts will be signed by one of the XWiki developers using a PGP signature. Such signatures are available in [[our maven repository>>http://maven.xwiki.org/releases/org/]] as ##.asc## files next to each artifact. We advise you to check the signatures of the files you download to make sure there are no problems with them.
174
175 To check the signatures, you should:
176
177 # Install GPG, if it's not already installed on your system
178 # Download both the artifact and its ##.asc## counterpart
179 # Run ##gpg -~-verify -~-keyserver-options auto-key-retrieve=true //artifact-file.jar.asc//##
180
181 == Official HTTPS support ==
182
183 While our sysadmins have been able for a very long time to use the right configuration for Tomcat, Apache HTTPD and the AJP connector between them, starting with 3.2 the XWiki community pledges to officially maintain proper HTTPS support for XWiki.
184
185 == ##xwiki-commons## and ##xwiki-rendering## published on the central maven repository ==
186
187 Starting with this version, [[##xwiki-commons##>>http://repo1.maven.org/maven2/org/xwiki/commons/]] and [[##xwiki-rendering##>>http://repo1.maven.org/maven2/org/xwiki/rendering/]] are deployed on the central maven repository, which makes it easier to reuse modules from these projects inside a third party application, unrelated to XWiki.
188
189 == Moved legacy code into separate modules ==
190
191 By default, the platform is now free of legacy code. Deprecated features have been officially removed, but are still included via aspects for backwards compatibility in the final distribution packages. For each module that had legacy code, there is a corresponding module in ##xwiki-commons-legacy## or ##xwiki-platform-legacy## that generates an extended ##jar## containing the deprecated classes or methods on top of the clean code.
192
193 == New location for storing persistent data ==
194
195 Because of a [[bug>>http://jira.xwiki.org/browse/XWIKI-6959]] in the old core, it was very hard to configure a directory where data could be safely stored. This bug has been fixed for the 3.2 release. Additionally, a new [[API>>http://jira.xwiki.org/browse/XWIKI-6957]] for accessing this directory has been introduced, a few components have been updated to use this location, and in the default standalone distribution a new ##data/## directory is configured to store permanent data.
196
197 == Deprecated and Retired projects ==
198
199 The swizzle-based plugin for interacting with Jira has been replaced by a new [[jira module>>extensions:Extension.JIRA Module]] which uses the new REST APIs offered by Jira instead of the deprecated XML-RPC services.
200
201 Some deprecated classes/methods have been moved into legacy modules:
202
203 * the old [[XWikiCache API>>https://github.com/xwiki/xwiki-platform/tree/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-oldcore/src/main/java/com/xpn/xwiki/cache]], replaced by the [[cache module>>extensions:Extension.Cache Module]]
204 * the old [[notification system>>https://github.com/xwiki/xwiki-platform/tree/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-oldcore/src/main/java/com/xpn/xwiki/notify]], replaced by the [[observation module>>extensions:Extension.Observation Module]]
205 * the support for the old [[@Requirement>>https://github.com/xwiki/xwiki-commons/tree/xwiki-commons-3.2-rc-1/xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-component]] way of declaring injected dependencies; ##@Inject## combined with ##@Named## should be used instead
206
207 Several very old and unmaintained projects have been retired:
208
209 * [[adwords plugin>>https://github.com/xwiki-contrib/plugin-adwords]]
210 * [[Albatross skin>>https://github.com/xwiki-contrib/skin-albatross]]
211 * [[alexa plugin>>https://github.com/xwiki-contrib/plugin-alexa]]
212 * [[calendar plugin and application>>https://github.com/xwiki-contrib/plugin-calendar]]
213 * [[exoplatform plugin>>https://github.com/xwiki-contrib/plugin-exoplatform]]
214 * [[photo album application>>https://github.com/xwiki-contrib/application-photoalbum]]
215 * [[S5 presentation application>>https://github.com/xwiki-contrib/application-s5]]
216 * [[workstream application>>https://github.com/xwiki-contrib/application-workstream]]
217
218 == Various ==
219
220 * [[XCOMMONS-14>>http://jira.xwiki.org/jira/browse/XCOMMONS-14]]: Added new XML manipulation methods to the ##XMLUtils## helper class.
221 * [[XCOMMONS-17>>http://jira.xwiki.org/jira/browse/XCOMMONS-17]]: Added a bridge that converts LogBack log events into observable events.
222 * [[XCOMMONS-19>>http://jira.xwiki.org/jira/browse/XCOMMONS-19]]: Added new methods to ##$escapetool## for encoding test into the [[Quoted-Printable>>http://tools.ietf.org/html/rfc2045#section-6.7]] and the [[B and Q>>http://tools.ietf.org/html/rfc2047]] MIME encodings. These methods are usually needed when generating emails.
223 * [[XWIKI-6832>>http://jira.xwiki.org/browse/XWIKI-6832]]: Added support for OpenOffice 3.3.
224
225 == Upgrades ==
226
227 The following dependencies have been upgraded:
228
229 * Aether 1.13
230 * batik-rasterizer 1.7
231 * commons-configuration 1.7
232 * commons-lang 3.0.1
233 * Doxia 1.2
234 * Groovy 1.8.2
235 * Hibernate 3.6.7 Final (and related dependencies)
236 * hibernate-validator 4.2.0.Final
237 * HTML Cleaner 2.2
238 * Jetty 7.4.5
239 * jruby 1.6.3
240 * Logback 0.9.30
241 * Lucene 3.4
242 * Reflections 0.9.5
243 * Selenium 2.7.0
244 * slf4j 1.6.2
245
246 == Miscellaneous ==
247
248 Besides the major features described above, this release brings lots of bug fixes as well as improvements in various domains of XWiki, including color theme usage and refreshing, observation events, annotations, multilingual mode, PDF export, special characters handling, section editing, deleted document and attachments trash, flickering integration tests, and many build reusability and enforcements. See the [[full list of closed issues>>http://jira.xwiki.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=category+in+%28%22Top+Level+Projects%22%29+and+fixVersion+in+%28%223.2+M1%22%2C+%223.2+M2%22%2C+%223.2+M3%22%2C+%223.2+RC1%22%2C+%223.2%22%29+and+resolution+in+%28%22Fixed%22%29]] and the release notes for 3.2 [[Milestone 1>>ReleaseNotesXWikiEnterprise32M1]], [[Milestone 2>>ReleaseNotesXWikiEnterprise32M2]], [[Milestone 3>>ReleaseNotesXWikiEnterprise32M3]] and [[Release Candidate 1>>ReleaseNotesXWikiEnterprise32RC1]] for details.
249
250 == Translations ==
251
252 The following translations have been updated: ##de##, ##fr##, ##it##, ##lv##, ##nl##, ##sv##, ##zh##
253
254 = Known issues =
255
256 * [[Bugs we know about>>http://jira.xwiki.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=category+%3D+%22Top+Level+Projects%22+AND+issuetype+%3D+Bug+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC]]
257
258 = Test Report =
259
260 You can check the [[manual test report>>TestReports.WebHome#HVersions3.2.x]] to learn about what was tested and the results on various browsers.
261
262 = Backward Compatibility and Migration Notes =
263
264 == General Notes ==
265
266 {{warning}}
267 If you're running in a multiwiki setup you'll also need to define the property //xwiki.store.migration.databases=all// to your //xwiki.cfg// file or explicitly name all databases to be migrated as in //xwiki.store.migration.databases=db1,db2,...//.
268 {{/warning}}
269
270 You may also want to [[import the default wiki XAR>>Main.Download]] in order to benefit from all the improvements listed above.
271
272 {{warning}}
273 Always make sure you compare your //xwiki.cfg// file with the newest version since some configuration parameters were 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.
274 {{/warning}}
275
276 == Issues specific to XWiki Enterprise 3.2 ==
277
278 * The behavior of the HTML Macro has changed slightly (as a consequence of the upgrade to HTML Cleaner 2.2): CDATA elements not located inside SCRIPT or STYLE elements are now removed when cleaned (i.e. when the ##clean## parameter is ##true##). If you don't want any cleaning done, use ##clean="false"##.
279 * Since the Lucene engine has been upgraded to a new major version, you should completely rebuild the index. This can be done from the main wiki administration, in the //Search// section.
280 * See the [[retired section>>#HRetired]] above for the list of removed modules. The most important one is the **removal of the Albatross skin** from the distribution. Be careful to review your ##xwiki.cfg## file and update the ##xwiki.defaultskin## and ##xwiki.defaultbaseskin## properties and make sure their values is now ##colibri## (unless you wish to continue using Albatross, in which case you'll need to install the Albatross skin in your installation).
281 * The **ehcache** library is no longer packaged by default. If you've configured a second level hibernate cache using this library, make sure you manually download it in the libs or replace your configuration with another cache engine.
282 * The **oscache** based implementation of the xwiki cache module is no longer packaged by default. If you'd like to use this specific implementation, make sure you explicitly include it in your distributions.
283 * See the backward compatibility and migration notes for the new implementation of the [[sheet system>>extensions:Extension.Sheet Module]].
284 * The permanent data storage directory is now by default ##data##, in the root of the standalone distribution. This is where you'll find, for example, the Lucene index, the custom extensions installed by the extension manager, or the attachments when the filesystem attachment storage is configured. If you're upgrading from an older version, make sure you first move the existing data from the ##jetty/work/## directory. You can configure the location of the permanent data storage in ##xwiki.properties## via the ##container.persistentDirectory## setting, and, for older code using the ##XWiki.getWorkDirectory## method, in ##xwiki.cfg## via the ##xwiki.work.dir## setting.
285
286 == API Breakages ==
287
288 The following xwiki-core APIs were modified since XWiki Enterprise 3.1:
289
290 {{code language="none"}}
291 TODO
292 {{/code}}

Get Connected