One of the first projects undertaken by StormFree's research team was to search for a suitable program to use as an internal knowledge base and collaborative workspace. After researching many platforms, we selected Xwiki to fill this role. Xwiki is an open-source enterprise wiki that features extensive customization options, allowing it to be used for a variety of different purposes. This platform can be employed as a collaborative intranet, internal or external knowledge base, public website, or collaborative documentation program. It includes a what-you-see-is-what-you-get (WYSIWYG) editor, and supports a variety of scripting languages that can be written directly into text pages using built-in macros. These macros, along with the wide variety of extensions that are available, make Xwiki a flexible platform that can be tailored to the needs of many different organizations and users. Here, we will cover some of the more complex and useful features of Xwiki before discussing the various ways in which StormFree has leveraged this platform.
Xwiki applies Object-Oriented Programming (OOP) concepts to its page editing, allowing the utilization of objects to insert structured data in pages. Objects can be used to customize the data contained in a page and can be useful in organizing the contents of the wiki.
The permissions system in Xwiki is a useful feature that allows administrators to organize their wiki in a secure and user-friendly way; but it can be confusing for new users. This is why it is important to understand how the permissions system works before beginning to use this platform. Permissions are set by administrators and determine who can access which areas and features of the Xwiki, keeping sensitive information secure. These permissions can be set at the wiki-wide (global) level, or at the individual page level. In the event that conflicting permissions exist at both these levels, the page-level permissions will always override global permissions.
Figure 1: A permissions page in Xwiki, with no permissions granted or denied
In Xwiki, permissions are considered to be either implicit or explicit, which can impact how they affect users. An implicit permission is one that is implied, as opposed to being specifically granted. For example, if User A is given the "edit" permission on an Xwiki page (signified by a green checkmark), the right to edit that page is implicitly denied to User B, since they were not given that same permission. This functionality is designed to make setting permissions easier, because the administrator does not need to explicitly deny the edit right to User B (signified by a red prohibition sign), but can instead leave it blank and only grant permissions to those who need them. This system also makes it unlikely that a user will accidentally be given access to an area they should not be in.
Figure 2: In the above example, burner and burner1 have been granted permissions, which has implicitly denied those rights to all other users, since their boxes remain blank
In contrast to these implicit permissions, an explicit permission is when the administrator manually marks the boxes next to a user's name, granting them a permission with a green check or denying it with a red prohibition sign. It is important to keep in mind that an explicit permission will always override an implicit permission in Xwiki.
Users in Xwiki can also be put into user groups, allowing administrators to adjust the permissions for an entire group of people instead of just individuals. This can save time when adjusting permissions for large groups of users, and allows admins to categorize users based on their access needs. The same rules of implicit and explicit permissions that apply to users also apply to user groups.
The flexible - if somewhat confusing - permissions system in Xwiki is important in allowing users to maintain firm control over who has access to which areas of the wiki. This is important for the maintenance of a secure knowledge base, as not all users require access to all of your company's data. However, the permissions system can also improve the user experience by ensuring that users are not confronted with pages and pages of documentation that they have no need to access. By ensuring that team members only have access to areas that are relevant to them. StormFree has ensured that content trees remain populated only with useful information, making it easy to navigate to the required pages.
Pages in Xwiki are organized under a content tree which allows users to create "nested pages" - pages that exist inside of other pages. These pages can also be referred to as "parent" and "child" pages, with all nested pages considered to be the children of the page they are located beneath. For example, you might have a page called "Earth", within which there is a page called "Europe", which contains a page called "France". In this example, "Earth" is the parent page, and both "Europe" and "France" are considered child pages of the parent. When navigating between these pages, the top of the page will show a breadcrumb trail of which pages are above the current page being viewed.
Figure 3: An example of Xwiki's breadcrumb feature
The use of nested pages in Xwiki makes categorizing pages and organizing your Xwiki quite easy. On the StormFree wiki, each project and department has been given its own section by creating a parent page, underneath which all pages relevant to that topic are created and stored. As a result, the Xwiki is divided by topic, making it easy even for new users to locate information by using the dropdown menus beside each page which displays all of the children pages existing underneath a given parent page. This organization of pages into parents and children also affects the way the permissions system functions. When setting user permissions on a parent page, the administrator can choose to make all of that page's children "inherit" the parent's permissions. This allows administrators to ensure consistent permissions across entire topics and sections of Xwiki without having to adjust the permissions of individual pages. The inherited permissions function streamlines the process of creating children pages, which can simply inherit the parent's permissions if they have already been satisfactorily set without the need for an administrator to access the permissions settings. The resulting content tree which shows all of our organization's pages is always visible at the side of the interface, allowing users to quickly navigate through Xwiki at any moment. This seamless navigation is another central aspect of Xwiki that, when used properly, can enhance the user experience.
As noted, one of the major benefits of Xwiki is that it's user friendly. With a clear, simple interface and intuitive design, using the basic functionality of Xwiki is simple even for new users. Once in the page editing view, Xwiki offers a simple but powerful text editor with the option of using the default WYSIWYG editor or Wiki editor. Selecting the Wiki editor enables the use of a simple Wiki Syntax, which should be familiar to anybody who has used other wiki programs. In addition to these basic editing functions, users can also be given advanced user privileges, which enable additional editing options when viewing a page. This feature also allows a user to adjust a page's permissions, and so should only be given to users who are trusted with having that level of control over access rights.
Regardless of what editing style is used, Xwiki makes it easy for users to create and format documents with its intuitive toolbar and keyboard shortcuts. Perhaps one of the best editing features is the header function, which will automatically organize your document with headings that also create an integrated table of contents. This simple but helpful tool is used to organize all of StormFree's documents in a consistent manner, allowing users to quickly create and consume documents across the platform.
The extensibility of Xwiki is one of the features that initially drew us towards using this platform, as it allows users to customize their experience and add functionality. The Xwiki Extensions page boasts over 600 available extensions to customize the functionality of your wiki. These extensions can augment existing features or add new ones, allowing users to tailor their wiki experience to their needs. Users can also design their own extensions, further enhancing the customization options available on this platform.
Another flexible aspect of Xwiki that appealed to StormFree is its customizable look and feel. With some simple modifications to the CSS, it was possible to change the colour theme, the size and position of navigation elements, and add a custom logo to various areas of the wiki.These changes can improve the user experience by customizing the UI to fit the needs of users, and can be continually modified as preferences and needs change.
Finally, the ease with which content created in Xwiki can be transferred to other formats and programs adds further value to this platform. Using the "Export" function on an Xwiki page gives the option to export a document in PDF, ODT, or RTF format. This makes it easy to use Xwiki as a content creation platform before transferring a document to an easily-distributable format for transmission to other parties. This also allows organizations to use Xwiki for all of its document creation, regardless of where that document is intended to go in the future.
We found that Xwiki's major strengths are its capacity for modification and its easy-to-use yet powerful functionality. Capable of serving a number of roles for a variety of organizations, Xwiki is a tool that any company seeking a knowledge base or collaborative documentation platform should consider adopting.