About Site Navigation

Don't forget to bring your browsers back-button! You will need it.

If you find parts of the site content/navigation strange, here is why:

As consequence, readers will easily find themself exploring database content on background information.


The application is based on the idea of the semantic web, where each fact is a simple statement of the form subject, verb, object (whereby predicate is often used as synonym to verb ). Navigating the site is essentially refining your search against the database.

There are only a few page templates, which might be used to display an entry. (Object-oriented dispatch on the statement in a way.) For many simple statements the reader is presented generic listing. We'll try to improve the navigation over time.

Note to purists: The application not (yet) fully RDF compliant. It just helps editing (and doesn't differentiate between URI's an literals). Further the row number of statements is often included making a surprising additional column.

Search Results

It might be counter intuitive that search results may return the same entry multiple times. But no longer once the reader got the idea that each search result consists of these statements. The difference to returning single hits is similar to "answer in full sentence" as children are taught in school.

A search for a phrase (URL's with ?q='term') will return full matches and sqlite's full text match in any column. The columns are to be understood as in 'RDF' or simple statements in natural English: 1.) Subject 2.) to be (Predicate) 3.) Object. (Sometimes a leading serial number to the statement is shown too.)


There are only four characters in the source code, which are not subject to localisation so far:

  • ">" for statement number;

    Will navigate to a best effort listing

  • "?" for "search phrase as subject"

  • "!" for "search phrase as verb" (a.k.a predicate, a.k.a. relationship)

    Explore the structure of the database. Follow here if you want to know more about the relationship as such.

  • "." for "search phrase as object"

    This is a "reverse" search, listing all references pointing.

Most often the type of the phrase is given just by it's relative position. Either left-to-right or top-to-bottom in the sequence as in plain English: S-P-O.

Users: Usage And How Tos

  • Setup TBD, see
  • Configuration – Steps leading from almost nothing enabled (initially) to just enough to present a minimal site.
  • Additional Navigation – Howto use optional features.


A snapshot taken after the initial setup of this docs can be found here . This snapshot is set to r/o and public ( see taking snapshots): it will display all those forms normally only visible to authorized staff and reject any and all updates.


Developers: Internals And Background

Everything is kept in two data structures: a WebDAV-capable directory tree storing large objects and a sqlite3 database.

Workflow / Data Model


Projects are long living objectives. There are per-project to switches to allow a) anonymous reports b) anonymous browsing


Milestones pertain to at least one project. Milestones mark conditions which are used to measure the progress of the project.

Milestones may have a deadline and a weight and dimension of their gains (currencies etc.).


Issues are items of work reported wrt. projects. They have several states (submitted, accepted, verified, shelling, doomed, solved + seen, recall, reject and spam; whereby the latter increasingly delayed) Issues may be assigned block to milestones until solved.

Issue may have a weight and dimension (e.g., days, man-days, currencies) of their cost.


Comments amend issues. They are intented to be short and displayed as abstracts. Longer comments go into attachments.


Attachments are objects or links augmenting comments.

Those attachments may be anything from binary data, WebDAV directories, Wikis, test cases or any other application.

Source Code

The current source code lives here.

  • generic.xml contains (a bit too much – it's 60kB ;-) :

    1. a simple web-interface to sqlite (generating input forms for tables, page wise display of results)
    2. localization (l10n)
    3. menu generator
    4. basic request dispatch and access control
    5. conversion from user-syntax to XML
  • cal.xml: display a calendar

  • rss.xml: generate feeds from SQL queries; as ATOM, RSS, HTML

  • spo.xml generates the "tetris without handbook" interface for developers to manage RDF triples.

    1. dispatch on position and type
    2. create every possible navigation
  • spoform.xml generates those higher level forms, which are supposed to be end-user ready.

  • sin.xml initial SQL code required by code in the generic section (so far this list).

  • hoist.xml a ticket tracker

    • Note: the implementation was originally meant to be a stress test for the underlying layers. You'll find the usual tables like milestones, issues etc. all mapped into RDF triples.
    • Works surprising well.
    • Opens interesting applications, since issue tracking is often hard with relational software. E.g.: issues and milestones may appear in multiple projects and tracked at once.

Release Management

Hoist lives currently in a subdirectory of snapshot of a directory filled with more or less experimental code mounted on the developers machine. This means: a new version is forced if any of those need to be rolled out.

TBD: isolate a proper distribution.

State Of Development

The project was started mid January 2011.

It does about what is was supposed to initially, but still lacks many bells and whistles.