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.
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.)
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.
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:
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.
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.
- 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.
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 - firstname.lastname@example.org.