This is the Dribble work flow server library.

All software is (C) Ingvar Mattsson <ingvar@bofh.se> and is licensed
according to the GPL. The license lives in LICENSE and may not be
removed from the distribution.

This software is provided AS-IS, and if yor whole life is runied by it,
it's Just Too Bad.

For a different licensing of any of the software contained herein,
contact Ingvar Mattsson (<ingvar@bofh.se> or current snail mail address).

For some real flamebaits, read docs/grievances.txt, that's where I vent
my current (at time of writing) annoyances with most everything.

Q: What is work flow then?
A: Basically machine-handled shuffling of paper.
   Imagine an office, where every quxx-document must first pass an initial
   check by someone, then handed over to Procurement, who take one copy of
   the document, hands the original to Lisa and the copy to Steve.
   They both do something with it and hand both original *and* copy over to
   Implementation, who do what's been noted down and then it's finished.

   Dribble takes care of the "hand over", "copy" and "finished" operations
   in its own stable storage.

Q: Is Dribble good?
A: Actually, no. It uses the file system as its stable storage.
   It does have possible problems handling collections of documents
   and if it can, it depends on unpublished semantics of hard links to
   symlinks.

   It also requires *all* stable storage (in one playground) being on the
   same, locally mounted, physical file system, due to the fact that
   it uses the file system both as persistent storage as a lock source
   (mkdir() is your friend) and that specific locking mechanism
   doesn't work all that well over NFS.

Q: Why write it at all, then?
A: Primarily because I could...
   Well, not only, it's one of the things that seem missing from the OSS
   world that exists in multiplicity over there, in the commercial world.
   And without a first stab, no one will write a *good* library.

   I recently saw that there's some Italian stab at making a
   full-blown document management system. P'raps check with them and
   see if they've thought about work-flow and life-cycle management
   (almost, but not quite, the same thing).

   Checked their pages out, but at last check (mid-March) it seemed like
   it was mostly talk and architecting. Well, if it fulfills their
   ideas, it'll probably be a killer.

Q: And why name it "Dribble"?
A: It's fairly obvious ain't it?
   "Work flow"/"Not that good" -> "Work dribble" -> "Dribble"

Q: I get spurious core dumps
A: Still? The last seen core dump causes were (1) shoddy code in
   wfshell that over-stepped and generally mangled Items and (2)
   shoddy error checking in read_all_items and (3) shoddy code in
   wfshell that didn't check for the right return values.

   To send a bug report, please do the following:

   1) Make sure *everything* in the binary (at least everything from
      dribble's code base) is debug-compiled
   2) Re-create the dump (preferrably from within gdb)
   3) Send me the output from backtrace and try to describe what you
      (or the code) were/was trying to do.

Q: What is the release schedule of dribble?
A: basically when I've whacked the code enough to have added
   something significant, functionality-wise or stability-wise.

   At the moment, my plan for 0.0.2-alpha is having at least a
   semblance of networking support. But don't hold your breath, that
   might take as long as 0.0.5.

   Beta-stage should arrive roughly when networking is In Place and
   I've had time to write a test suite. The test suite is now finished
   for the "local" part, and seems to work quite well. Ran 65535
   transitions in 9.6 s on the development laptoad.
