Wiki vs Nested Pages

Last modified by Vincent Massol on 2024/07/23

XWiki 7.2 has introduced the concept of Nested Spaces. With this new concept it's legitimate to ask oneself what are the differences between using a (sub)wiki or using Nested Pages.

Summary

There are 2 main use cases when you'd use a Wiki instead of Nested Pages:

  • You want to provide custom Applications/Extensions to a group of users of your wiki
  • You want to implement an XWiki Farm where each wiki is seen as an island (own users, etc)

Features

FeatureSupported by Wiki?Supported by Nested Pages?Notes/Ideas
Set a custom Skin/Color Theme/Icon Themeacceptaccept
Set custom Panelsacceptaccept
Delegate Administration/Right Managementacceptaccept*An Admin can decide that such user or group has Admin rights on a Page and its children. [*] It's much harder to implement the rights for a Farm Mode when using Nested Pages than when using a Wiki, but it's possible.
Dedicated Users and GroupsacceptcancelProvides isolation, both in term of visibility and security.
Notion of OwneracceptcancelThe Owner has all permissions in a wiki
Ability to install JAR ExtensionsacceptcancelRight now when installing with the EM UI, you cannot decide to install an Extension only for a Nested Page even though this is supported in the Core
Ability to install Applications/FlavorsacceptcancelRight now when Importing or using the EM UI to install an Application (XAR), it's not possible to root it under a certain Nested Page (i.e have it install itself relatively to a Nested Page). It's also not possible to install a Flavor in a Nested Page.
Ability to have a dedicated domain name/Clean URL scheme and Breadcrumbaccepterror*[*] Possible but with some configuration: Apache-level config or URLRewriteFilter config
Ability to maintain the database easilyacceptcancelSubwiki use different schemas and this makes it very easy to maintain per wiki (for Farm use cases for ex). Database backups and restores can be done on a per-wiki basis. A wiki can be moved independently to another server (some links may be broken, depends on usage), providing solution to scalability issues. Extensions can create special tables in the schema of a given wiki (still needs some manual configuration). Schemas can also be optimized for specific purposes such as custom mapping.
Ability to easily query data across instancescancel*accept[*] Because wikis are stored in independent schemas, you cannot perform a single DB query across multiple schema. However you can query content using the Solr syntax of the Query Manager which works across schemas. Nested Pages, on the other side, are within the same wiki, so within the same schema; it is possible to cover data stored in multiple Nested Pages with a single database query. For example displaying data coming different wikis inside a LiveTable is not easy and requires writing some custom JSON.
Ability to search in multiple instancesacceptacceptSolr indexes data independently from the database storage, so searching works across both wikis and Nested Pages.
Ability to create based on a Template with several PagesacceptcancelPage Templates are currently only a single Page.
Creation/Deletion of Wiki or Nested Pageaccept*accept[*] Deleting a Nested Page will warn about broken links which is not the case when deleting a wiki. Also, you cannot rollback a deleted wiki, so unless you have a backup you've lost your data. You can't restore a deleted Page with a single click from the UI either, but at least you can restore each children Page under a Nested Page from the UI, or use a script. In other words, there's no Recycle bin for wikis.
Renaming of Wiki or PagecancelacceptPage Rename updates backlinks automatically but it's not the case across wikis.
Invite UsersacceptcancelYou cannot invite users only for a Page
Implement a "playground"acceptcancelNested Page share the XClasses. If you modify one XClass (e.g. XWiki.JavaScriptExtension) you affect all the Pages that use it. Wikis have to duplicate the XClasses, but this means the modifications are isolated. As a consequence, it's much harder (if
not impossible) to implement a "playground" using a Nested Page than using a wiki.
Easiness of upgradescancelacceptHarder to upgrade XWiki: each wiki needs to be upgraded individually, even if it's only 1 click in the UI. Also it's slower to upgrade multiple wikis (e.g. when running database migrations since each wiki is a database).
Easiness of creationcancelacceptWhile it's fast to create a space in XWiki, creating a wiki takes a lot more time. In addition, creating a wiki requires Create Wiki rights, while creating a page requires Edit rights.
ScalabilitycancelacceptWhile the number of wikis is not limited, having an XWiki instace with thousands of wikis is not recommended (each "empty" wiki will contain thousands of internal pages) and thus doesn't scale in practice (long time to create, hard to upgrade). Also note the limitation that installing a XAR application on the farm means installing it on each subwiki which is resource consuming (time, memory).

Get Connected