GATEWiki, a Controllable Wiki: Overview
GATEWiki (or CoW, for Controllable Wiki) is a wiki/CMS system based on Grails and Subversion initiated by the GATE team (acknowledgements).
Quick start: most of the documentation lives in the doc directory, including the User and Developer Manual. This page presents an overview.
Confused about where these pages live? You'll find them in several places; their ultimate home is a version control repository, and they get checked out into your local filesystem if you want to modify or develop CoW, they get installed with CoW to form its help documentation, and they also live on the Sourceforge project website.
Note that GATEWiki is licenced under the GNU Affero General Public Licence version 3 (AGPL 3) except where otherwise stated.
For version 1.0.
1. Philosophy
Files and directories, documents and folders, disks and memory sticks, laptops and games machines, TV time-shifters and corporate IT systems. Data data everywhere, and never a drop to drink, as the Ancient Mariner could not have dreamt of saying. Wouldn't it be nice to be able to view your filesystem as a website, to be able to edit from multiple machines with and without network connections, to be able to have your own local copy and also share it with friends and colleagues, and to not have to worry about merging it all back together?
CoW is a "Controllable Wiki" and CMS that supports collaborative document creation with asynchonous off-line editing. CoW is desiged to make it easy to add interaction to static websites, and to support concurrent editing and off-line working with straightforward synchronisation (using Subversion). The system also serves as a test-bed for experiments in controlled languages for round-trip ontology engineering (from the GATE project: http://gate.ac.uk/).
2. Why another wiki?
Scratching three itches:
- adding interaction to a largish static site (15k HTML files, 40k other files)
- wiki style collaborative document creation with asynchonous off-line editing
- a test-bed for experiments in controlled languages for round-trip ontology engineering
3. Main features
- designed from the ground up to support concurrent editing and off-line working with straightforward synchronisation using SVN
- uses the YAM language, which
- outputs LaTeX as well as HTML
- allows paths as links (i.e. does not limit the namespace to a single directory like e.g. JSPWiki does) and consequently allows a tree-structured page store (and later graph-structured navigation via an ontology)
- allows mixing of all types of files in its page store (which is just an SVN sandbox, in fact)
- supports versioning and differencing via SVN, and allows other tools that manipulate SVN repositories to be used with the wiki data (e.g. SVN itself, Eclipse, ViewCVS, etc.)
- optionally supports embedded CLOnE (Controlled Language for Onotology Editing), and therefore experiments with applications that store their data in semantic repositories whose schema is user-defined and maintained
4. Using SVN as a Wiki backend
No available Wiki in Java that we could find has good SVN support. Using SVN as a backend gives us:
- off-line edit - simply checkout the pages and edit to your heart's content while off-line
- edit with other tools, not just the web forms interface
- management of authorship-related metadata such as how many lines added, difference between versions and so on
- a stable and reliable versionning system that's been proved in production use by 000,000s of developers
- concurrent editing
Why not JCR layered on top of SVN? Just a question of team resources and experience, the strength of the SVNKit library and so on.
5. Controlled languages and semantics
Annotating documents with semantics is not a panacea for all the problems of document retrieval, but can in certain circumstances be beneficial, especially for high value and medium or low volume content.
CoW is partly intended to be an experimental framework for a new type of website in which
- the database is complemented by a knowledgebase storing semantic annotation (using OWLIM)
- the knowledgebase is defined and populated using (CLOnE)
- concurrent changes are managed as in CVS or SVN (check out, edit, update, merge, etc.)
This work is funded by research projects with
- British Telecom (SeKT)
- the BBC (PrestoSpace)
- ATOS Origin (TAO)
- others; see also the GATE site
6. Current status
CoW uses Grails and currently includes:
- a wiki language with a JavaCC parser
- a CMS persistence and versioning backend using Subversion
- simple display and edit of wiki pages and other static content using Grails
- a version of the Grails JSecurity plugin that includes editing of the user data and assigns permissions to wiki areas and directories
- user registration using the JCaptcha plugin
- webtests using Selenium
- a minimal Hypersonic DB to store pointers to wiki areas and user/role/permission data)
The system has two modes, workstation and server; the former does no user management, the latter uses JSecurity.