XWiki - The Product Vision
The term wiki is often related to the website Wikipedia, which acts as a common knowledge base for virtually every topic. However, in reality, Wiki’s can be used for far more than only this. XWiki offers a generic platform for developing projects and collaborative applications using the wiki paradigm. The XWiki platform is open source and is supported by both the company of XWiki SAS and the open source community. XWiki can be used to create a content management system for all kinds of knowledge bases and goes far beyond helping to set up a classic wiki. This blog post gives an overview of the product vision of XWiki.
Overview
In the first section of this blogpost, the domain of XWiki will be explained: how wikis offer knowledge sharing. With all the knowledge of section one, the next section will cover what XWiki has to offer in this field, its use cases, key attributes, and its context dependencies. In section three, XWiki’s users and other stakeholders will be discussed together with what they expect of the product. Lastly, there is a section on the future goals and ethics of XWiki. Here, a roadmap of the open source project can be found, followed by ethical considerations concerning an open source project such as XWiki.
Knowledge to be shared
XWiki is a platform for developing web-applications for creating, capturing, and organising information. Businesses and organisations can use these applications as knowledge bases to store and protect information online. Therefore, XWiki operates in the domain of knowledge bases.
As a business grows larger and older, the information it gathers and uses grows with it. To run the most efficient business possible, you want your employees to be able to use all available resources and experiences of the whole company. However, when information is scattered throughout the systems of the company, or is lost when an employee leaves the organisation, or is not digitally stored at all, employees can lose much of their time looking for relevant information rather than using it, or they can even be unaware that this information exists. Having information available in a knowledge base is an effective way of solving this issue.
One popular type of a knowledge base comes in the form of a wiki. Wikis are a common sight on the modern web. In essence, a wiki is a piece of web-based software that can be used to create and maintain web pages that can be edited by its viewers from within the browser1. Wikis can be used in a closed environment, such as a company or institution, or they can be directed at a wider and public audience. In the first case, they can be used to improve communication or efficiency, while in the second case they can be used to spread knowledge in a collaborative fashion.
A good wiki system can offer2:
- Easy navigation through all available content, by both encouraging internal link structures and effective search algorithms.
- Consistency in content, supporting the creation of new information pages by offering templates for different kinds of content.
- Trustworthiness and reliability of content, the transparent nature of a wiki system lets everybody examine and revise the history of changes to a page and update it to contain the most accurate information.
While every company might benefit from a content management system, they might not have the skills and people employed to create and maintain such wiki software. Here enter the software and services offered by open source or proprietary wiki engines, created by specialised organisations, like XWiki SAS.
XWiki’s offers
XWiki offers a generic web development platform that is used for creating a diverse range of collaborative applications. Some examples of these are: collaborative intranet, knowledge bases, competitive intelligence, and website creation. XWiki divides these use-cases into two categories: first-generation wikis and second-generation wikis.
First-generation wikis are primarily focused on content creation. Their main purpose is to enable collaboration on content. To realise this, features as page editing, version control, right management, search tools and export tools are provided. These can be used for creating standard applications for creating, capturing, and organising information. Users may use these for general documentation websites (Oxygen Kernel), and other knowledge bases.
Second-generation wikis are primarily focused on structure and application generation. Their main purpose is the creation of collaborative web applications. Some examples of these are blogs, file managers, meetings, forms, and task management. These can be used for the promotion of events (Adetem), as a place to share and debate opinions (Sirius 71), or as a general platform for websites (Artsys).
To distinguish itself from other generic web development platforms, XWiki is designed with certain quality attributes in mind. While they are not explicitly stated on their website, a focus on two different key quality attributes can be distinguished: XWiki’s extensibility and flexibility and its accessibility and effectiveness.
The application is designed with a clear focus on extensibility and flexibility. This is done by dividing the platform into three parts: the general XWiki platform, flavours providing high-level features on top of the XWiki platform, and extensions adding more specialised functionality to its applications. Because of this layered approach, XWiki can be used for a lot of different use-cases. This helps the platform differentiate itself from other knowledge management systems and creates a large and diverse user base.
Besides the extensibility and flexibility of the platform, another key quality attribute is the accessibility and effectiveness of the platform. This can be found in the user-friendly UI, which is used for creating XWiki applications. With a clear focus on user-friendliness, even non-developers can create applications within minutes. By laying emphasis on writing self-explanatory code and keeping documentation up to date, the platform is easy to use and accessible for a lot of different people.
To make this all possible, XWiki is deployed into a Servlet Container with the XWiki pages saved in a relational database. All the content of XWiki is accessible for interaction with other applications via the XWiki RESTful API. The XWiki platform is built from extensions, with each extension having their own dependencies defined. The XWiki company offers a great many extensions and connectors to integrate the systems with external applications.
XWiki’s Community
Because of its widespread usage, XWiki has a large and diverse community, consisting of many different parties, all having different needs and stakes. To fully understand the community, it is important to have an overview of the organisational structure of the XWiki project. The XWiki project namely consists of an open source branch and a commercial branch named XWiki SAS. While from an open source point of view, it is important that XWiki is actively developed and contributed to, from a commercial point of view, it is important that XWiki is interesting for potential paying customers.
This split in branches naturally gives rise to different user groups with different needs. The user groups namely range from individuals and small teams who can download the free open source software to set up their own wiki, to paying companies using the available training, support, and development services to set up an internal collaborative knowledge sharing and documentation platforms.
Within these subgroups, the user base can even be split further into more detailed partitions. These partitions result from the given that XWiki should be usable both for parties with skilled development teams and for small and independent organisations (or even individuals), which do not necessarily have much in-house technological knowledge. While for the former group it is generally important that XWiki should be scalable and easily maintainable, for the latter group it is generally more important that XWiki is properly documented and easy to setup and deploy.
A last point to distinguish different user groups comes from the idea that XWiki can be used for both first-generation wikis and second generation wikis. While for first-generation wiki creators it is generally important that page editing and collaboration are properly functioning and easy to use, second-generation wiki creators require that XWiki is flexible in terms of the types of applications that can be created with it. A blog, for example, has different requirements than a scheduling application, so a great deal of flexibility is required to serve the creators of both optimally.
However, the applications (wikis, blogs, etc.) that are created using XWiki also have users and visitors themselves. For these, it is important that applications created with XWiki are visually appealing and easy to use, and that information retrieval and information editing are easy to perform. Even though meeting such requirements depends heavily on the design choices made by the application creator, XWiki can assist in this process by providing features to the creators that stimulate proper design.
Furthermore, the developers of XWiki also make up a great deal of XWiki’s community. While XWiki has some professional, paid software developers, mostly to manage XWiki SAS, the majority of XWiki developers are open source contributors. These contributors come in two flavours: “regular” contributors and committers. Committers are elected contributors that have responsibilities to ensure that the development of XWiki heads into the right direction and include write access to the XWiki repositories, accepting Pull Requests, voting and more. Especially the voting is an interesting point, as this is the main method used to handle large changes in XWiki.
Next to code contributors, there exist other types of contributors as well. These range from translators to bug reporters and documentation writers. Contribution can also be done by sponsoring an issue, which can be done by XWiki users that are interested in a feature and would like to pay for the implementation of it.
Lastly, so called sponsoring companies exist within the community of XWiki, defined as companies that have at least one active committer in XWiki. Currently, there are two sponsoring companies: XWiki SAS and SOFTEC. There are also several companies that sponsor the project by providing tools. These include Sonatype and Atlassian.
The continuous development of XWiki
On the website of XWiki, the developers keep track of a roadmap. On the page, the details of the upcoming release are displayed along with links to the corresponding issues on JIRA (XWiki’s issue platform). For the releases after that, the dates are planned, but the contents of them are not given. In the issues on JIRA generally a lot of detail can be found, however some sort of milestone planning is missing. The issues are not really linked to an overall goal.
So, no real long-term plans can be found for XWiki. There are, however, some goals listed on the roadmap page for all releases in general:
- More tests
- Better Javadoc
- More documentation on xwiki.org
- Code clean-up/refactoring
While it is good practice to set goals for the properties of a system, it is also good practice to have goals for the development process of a system. In the case of XWiki, they have a very detailed document with rules and best practices for the development. Looking at this document and the rest of the Development Zone of the XWiki website, we formulated two ethical considerations.
Looking at the above-mentioned documents, the first thing that stands out is the sheer amount of information available to the contributors of XWiki. Not only is there for basically every aspect of the development some guide present with a step-by-step plan on how to contribute, but there are also often best practices given for the development to happen in a consistent and orderly manner. For big open source projects like XWiki it is important to have a detailed guide on how to contribute so that the contributors are aware what is expected of them and also know what not to do. XWiki has done very well in this aspect, as they have plenty of information available on this.
Secondly, it is important to note that, since XWiki is an open source project, anyone can contribute. To make sure anyone that would like to contribute to XWiki is able to, information on how to contribute should be made accessible. On the XWiki documentation website there is a Contributing page where they explain many ways in which you can help with the development. For the people interested in becoming a developer for XWiki, a Developer Guide is given. On both these pages, the amount of documentation available is plenty, therefore making the accessibility of the project very good.
Recap
In this blogpost we have looked at the product vision of XWiki. Firstly, we have explained the need for XWiki by explaining the need for knowledge sharing, why and how this needs to be done in a structured organised way, and why we cannot expect every company to have the skills to create one by themselves.
After setting the domain, we explained how the XWiki project offers a product for multiple situations. XWiki can be deployed to create both first and second generation wikis to fit many use cases. XWiki offers extensibility, flexibility, accessibility, and effectiveness of the application. XWiki can be highly configurable and implemented into other services, and can be set up with few extra tools.
Next, we have looked at the people involved with the project of XWiki including its different kinds of users, open source developers and supporting company, and other stakeholders that come to play in such a project.
Lastly, we have discussed more topics that come to play when developing such an open source project. The way XWiki has set up their roadmap is mainly focused on maintaining and tidying up code. We finish our story looking at the project from an ethical point of view, showing how XWiki makes sure it reaches their open source goals by making sure of the accessibility of both development guides and clear issues.