All XWiki sources are stored in Git repositories on GitHub. XWiki is an ObjectWeb's project, but we're using GitHub to store our sources.

You can browse the source repositories and download the sources by using GitHub.

Top Level Projects

XWiki is not a single product, but an ecosystem of top-level projects.

Here's the list of repositories (one repository per top level project) you should see if you browse the Git repositories on :

Git Repository nameDescription
xwiki-commonsTechnical libraries common to several other top level projects. Can be used by projects outside of the XWiki ecosystem; not related to the wiki domain.
xwiki-eclipseDesktop application targeted to developers for productivity/offline editing of XWiki pages.
xwiki-enterpriseA professional wiki with enterprise features.
xwiki-managerManages farms of XWiki Enterprise instances.
xwiki-officeAn add-in to edit XWiki pages from MS Word.
xwiki-platformReusable components/parts used by other top level projects, making up a wiki runtime. Uses xwiki-commons and xwiki-rendering.
xwiki-renderingRendering library to convert some input syntax into another output syntax. Can be used by projects outside of the XWiki ecosystem. Uses xwiki-commons.
xwiki-watchCollaborative RSS Feed Reader.

In order to better understand the relationships between the Platform and other top level projects, check how XWiki is Architected.

We're still migrating from Subversion to Git and the following projects have not been migrated yet and are still available on our subversion instance at :

Directory nameDescription
contribLocation for contributions. Anyone can request to get access to this location to contribute code. You don't need to be a committer to do so.
currikiA collaborative platform to help create and share educational resources.

Project Structure

The content below this point has not been updated yet following the recent migration from Subversion to Git. It's a work in progress

Each top level project decides how it structures its trunk, branches and tags. However the general rule is to have trunk/, branches/ and tags/ directory just below the top level project directory. 

For example:

Note that the trunks/tags/branches structure is different for the Commons and Platform projects since those projects have different release cycles for their various modules (see below for more).

XWiki Commons Structure

Directory nameDescription
commons/xwiki-commons-pomThe top level Maven build descriptor (a.k.a POM). It's referenced by all other build modules.
commons/xwiki-commons-coreCommons libraries (JARs)
commons/xwiki-commons-toolsBuild tools used to build other commons modules.

Here are some useful subversion URLs:

Anonymous users can also use the HTTPS protocol for checking out sources, but they won't be able to commit changes in the repository.

XWiki Rendering Structure

See the Rendering Project.

XWiki Platform Structure

Directory nameDescription
platform/coreXWiki Core. Generates the core XWiki JARs.
platform/skinsXWiki skins.
platform/webTemplates and more generally all reusable web files. Generates the platform WAR.
platform/xwiki-applicationsSet of reusable XWiki documents exported as XML (XARs). They are usually included in the Products Wikis.
platform/xwiki-pluginsXWiki plugins that are currently not included in the core. In the future all plugins will be moved here.
platform/xwiki-toolsBuild tools and various other misc. tools.

Here are some useful subversion URLs:

Anonymous users can also use the HTTPS protocol for checking out sources, but they won't be able to commit changes in the repository.

The trunks directory mentioned above is using svn externals. This means that checking it out will check out other directories too. For information here are the svn:externals definitions used:


It's also possible to check out individual modules. For example:

XWiki Enterprise Structure

Directory nameDescription
enterprise/wikiDefault XWiki Enterprise XAR.
enterprise/databaseLoads the XWiki Enterprise XAR into target databases.
enterprise/distributionGenerates distributions for given Servlet container and given Databases.
enterprise/distribution-testsFunctional tests.
enteprise/installersGenerates generic and Windows installers based on generated distributions.
enterprise/webGenerates the XWiki Enterprise WAR.

Checking out sources

Caution: contains every file in every release, and is about 7 Gigabytes in size (and growing). Unless you are making a historical archive of the XWiki development process, it is recommended that you checkout just the trunks at 

Then build the checked out sources.

Tips & Tricks

Building a specific version of XWiki Enterprise

Note: You don't need to check out all sources to build a given module. You just need to check out that module since the dependencies used by that module will be fetched automatically by Maven (See Building). However if that module is used by another module you'll need to check out the source for that modules and rebuild it to use your modified sources. 

For example imagine you're making a change in platform/core/xwiki-core and you want to have them in XWiki Enterprise, you'll need to build platform/core/xwiki-core, then check out and build platform/web and enterprise/. To make this simpler and not have to manually find out which specific dependencies to check out and build you could decide to rebuild the full platform/core and platform/web.

Let's take an example and try to build XWiki Enterprise 2.0. You'd check out and build:

Note that this won't rebuild plugins or applications used by XWiki Enterprise. If you wanted to bring changes to those you'd need to find out which version of them is used by XWiki Enterprise (by looking in enterprise/pom.xml), check them out and build them after you've built platform/core and before you build platform/web.

Find project dependencies versions

To easily find project versions recursively you can use the following command:

mvn dependency:tree

For example with XE, checkout XE tag version you are interested on and type the command line in XE root folder.

svn co && cd xwiki-enterprise-2.0 && mvn dependency:tree

Get Connected