TiddlyGuv: An Open-Source Governance System

FOSSBazaar is no longer being updated. The information on this site is preserved for your convenience but may be out of date. Please visit Linux Foundation's Open Compliance Program for current information and activities.

This is an overview of TiddlyGuv, an open-source governance application under development at Osmosoft, the open source innovation arm of BT. TiddlyGuv helps enterprises manage their open-source activities, and TiddlyGuv itself is an open-source, BSD-licensed, framework available for anyone to adopt and tailor to their needs. A basic working version of TiddlyGuv is already present right now, with full source available, but there is a lot of extra functionality still being planned.

I am hopeful this article will spark the interest of enterprises who might be keen to use TiddlyGuv, offer some feedback, and maybe even get involved with evolving the product. The product, and its underlying technology stack, are designed to be highly customisable; we realise that every enterprise has its own unique needs, and the best way to ensure the product is widely used is to offer a plugin architecture people can build individualised solutions with.

Background: Why We're Developing TiddlyGuv

TiddlyGuv is developed in conjunction with OSOT, BT's Open Source Operations Team. The team plays a proactive role in BT's open source arctivities. Tasks include: deciding on and disseminating guidelines for open source usage, tracking open source usage, championing open-source, and supporting teams planning to use or produce open source products. These roles are typical of similar departments in other companies. Some more information about OSOT's activities is available in this FOSSBazaar article.

Underlying Technologies

The "Tiddly" in TiddlyGuv represents the underlying technologies, TiddlyWiki and TiddlyWeb. (The "Guv", if you're wondering is English slang for "guv'nor", or boss, a good enough stand-in for governance.)

TiddlyWiki (described here) is a single-page web applicaton that acts as a personal notebook or wiki. That is, it consists of all HTML, Javascript, and CSS all on the same page. It is structured around "tiddlers", small chunks of content which users can edit and save. It also has an unusual ability to save itself to the local filesystem, but for our purposes, we are attaching it to the server-side TiddlyWeb framework, so that facility is not especially relevant. More important is the great flexibility afforded by its general structure and plugin architecture. For example, a novice user - sufficiently permissioned - can change the site title by simply updating the "SiteTitle". A more advanced user can embellish its appearance by updating the "StyleSheet" plugin, and an even more advanced user can change its behaviour by adding a new plugin tiddler with some Javascript inside it.

TiddlyWeb is a Python-based server-side data framework that can be used as a general RESTful data service. It doesn't have to be front-ended by a TiddlyWiki, but the two work well in tandem. TiddlyGuv does indeed use both frameworks together. As with TiddlyWiki, TiddlyWeb has a suitable structure and plugin architecture for customisation. All aspects of the request-response cycle can be customised - for example, you can change the login mechanism by introducing a custom "Challenger"; you can control what goes into the system by adding a custom "Validator"; you can format the output by adding a custom "Serializer"; and so on.

Technically speaking, TiddlyGuv is a collection of extensions to both TiddlyWiki and TiddlyWeb, as well as some content and configuration. Some of these extensions are TiddlyGuv-specific and some are generic and applicable to completely different applications.

Key Features: Community, Tracking, Workflow

By way of introducing the product, I'll walk through the existing features, and I'll then comment on features we would like to add in the future.

Licenses

TiddlyGuv maintains models for software licenses. In the future, this data model might be connected to software components, but for now, the models are there to support a structured conversation around software licenses. Each license has certain fixed sections in which content can be added, similar to a MediaWiki/Wikipedia installation:

In addition, there is a threaded comments section, which is useful for promoting a conversation around the license. Administrators or other stakeholders might then use the comments to improve the page.

You might have noticed the "GPL 3.0" description earlier has no "edit" link in the Usage Policy section. This is because of an access control policy, whereby only administrators can edit that section. Logged in as our administrator user Bob, the edit link appears:

 

Document Wiki

 

TiddlyGuv also acts as a general repository of documents, also with access control:

There is an index of documents, shown below, and also an index of licenses:

 

Planned Feature: Components

A feature we would like to add is data for open-source components, so we can map them to software licenses. We might initially make this manual, and in the future use one of the public repositories available.

Planned Feature: Projects

An important feature to add is software projects under development. Right now, tracking projects takes up considerable effort for the OSOT team, and we suspect equivalent teams in other organisations. In the future, we'd like to shift this to something more closely resembling a self-service model, where project owner register their own project on the system and maintain data. In doing so, we'd link up project data to components (being used by the project) and licenses (indirectly, i.e. the licenses of components being used; as well as license information of the project being developed).

Planned Feature: Workflow

Longer term, we'd like to introduce workflow features to help manage the lifecycle of a registered project. This would be based on state transitions - the project begins with the owner registering it, followed by an admin checking it, followed perhaps by a legal specialist checking it, and so on. As with most other aspects of the tool, we would want this flow to be declared in a flexible manner as we realise every organisation will have its own unique roles and workflows.

Underlying Technologies

Design Goals

There are several design goals for TiddlyGuv:

  • Flexible As noted earlier, TiddlyGuv and the underlying technologies - TiddlyWiki and TiddlyWeb - are designed around a plugin-based architecture, enabling anyone to adopt it freely to meet their own needs. The plugins are also in many cases agnostic to the application; for example,the comments plugin, originally developed for TiddlyGuv, has since been used in other projects such as TiddlyDocs and a generic wiki. In the same way, an enterprise could pull generic TiddlyWeb or TiddlyWiki plugins, already developed for other applications, into a TiddlyGuv installation. For example, an organisation wanting to store data in a relational database, as opposed to the default filesystem store, could pull in the generic TiddlyWeb SQL Store (currently under development).
  • Web based TiddlyGuv is web based, which makes the user experience familiar and convenient, and system administration simpler.
  • RESTful API TiddlyGuv is is a Javascript web app which accesses a set of RESTful web services. Content is available in formats such as JSON, for easy processing within a Javascript web app, and Atom/RSS for notifications and workflow support. Anyone familiar with REST, which increasingly means any developer who works with the web, will be able to develop custom clients against these web services.
  • Privileged Users TiddlyGuv supports the notion of privileged admin users. Certain content is only editable by admins. This facility can be used to publish certain content as official company policy, while allowing the rest of the content to be edited openly, the typical mode of interaction in a wiki.

Getting Involved

I hope you've found this overview useful. The tool is available for download from the TiddlyWiki repository, although not yet provided in an easy package form. I'd like to create a public online demo in the future too. I've written more about TiddlyGuv and TiddlyWeb on my blog. Please get in touch if you have any suggestions or feedback on TiddlyGuv - mahemoff@osmosoft.com.

Typo alert

Technically speaking, TiddlyGuv is a collection of extensions to both TiddlyWiki and TiddlyGuv

From context, I think you mean "TiddlyWeb" there at the end of that.

Other than that, there's something really strange and nasty about how the images are showing up in IE7 (huge amounts of white-space and possible cropping), but I expect that's a browser limitation. I'll try to remember to look at it in Chrome when I reach a keyboard that actually belongs to me. (It'll also be interesting to see if my first paragraph here shows up as indented, which it does in the Rich Text edit-box but not in the preview…*sigh*)