CoW, a Controllable Wiki: Overview
CoW is a wiki/CMS system based on Grails and
Subversion
initiated by the GATE team
(acknowledgements).
Most of the documentation lives in the doc directory,
including the User and Developer Manual. This page
presents an overview. You'll find these pages 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 this system is licenced under the GNU General Public
Licence version 3 (GPL 3) except where otherwise stated.
For version 0.1.
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 content persistence and versioning backend using Subversion
- simple display and edit of wiki pages and other static content (with a
minimal hypersonic DB to store pointers to wiki areas and
user/role/permission data)
- a version of the Grails Acegi (Spring security) plugin that includes editing
of the user data and assigns permissions to wiki areas based on their DB id
- user registration using the Captcha plugin
The system has two modes, workstation and server; the former does no user
management, the latter uses Spring Security.