.SH NAME
lab 23 - annotating a file system
.SH DESCRIPTION
.I
This lab was cut and pasted from my homepage. It is not new.
.R
i have tried out some experiments with annotating the filesystem;
really, several iterations of the same idea.
my latest attempt is
.IR tickfs ,
which i think comes close to doug mcilroy's
.A http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=200112081958.OAA264525225%40nslocum.cs.bell-labs.com idea
of a metadata file system.
each file served by tickfs is a binary relation, the key is
usually an absolute pathname, and the attribute is defined
by the name of the relation. each relation is also
bi-temporal. it's a historical record of changes to each
key, value pair and it determines whether a key, value pair
is true at a given time.
adding metadata is simple
.EX
% echo ${quote i . /doc/sh.ms 'the inferno shell' } > /n/tickfs/desc
% echo ${quote i . /doc/sh.ms 'rogger peppe' } > /n/tickfs/author
.EE
the dot indicates the current time, but any time represented
as seconds since the epoch can be given.
queries are pipelines
.EX
% 9ls sh.ms |taq /n/tickfs/author |taq -j /n/tickfs/desc
.EE
the query uses the timestamp of the files to return the currently
effective values for the attributes 'author' and 'desc'.
it relies on a disciplined user to maintain a single logical
namespace and to keep it consistent with the namespace of
keys within tickfs. plan9 and inferno make it easy to alter
the namespace; but the discipline of arranging a clear, consistent
namespace is harder.
an example that includes fossil is to bind a directory from dump
over the logical namespace. the currently effective values
will likely vary over time, and so obtain different results from tickfs.
.EX
% 9ls /doc |taq /n/tickfs/desc
% bind /n/dump/2004/0101/doc /doc
% 9ls /doc |taq /n/tickfs/desc
.EE
also, i have tried indexing file contents within tickfs, so
combinations of keyword search and named descriptors can be
used
.EX
% search bug |taq /n/tickfs/author |grep caerwyn |taq /n/tickfs/desc
.EE
.I tickfs
runs on inferno, but
.IR lookfs ,
which is an earlier
iteration using libstyx, is very similar and should run on
plan9.
.SH FILES
The source for this lab is in the archive on my
.A http://caerwyn.com/ homepage.