A while back, I wrote about building a graphical toolkit with a "blackboard" architecture. So today I finally found time to trot out BBB, the generic C Basic BlackBoard I wrote back in 1998 for some AI work I was doing. I've placed it in a public GIT repository at git://svcs.cs.pdx.edu/storage/bbb.git, under an MIT license. It is old, complex code that can be compiled correctly by Johnson PCC, but it serves its function as far as it goes…
The interesting thing, in looking over the code, is that BBB maintains the blackboard entirely with callbacks. This gives the illusion of multiple concurrent agents without any threads. On the other hand, the callbacks are a pain to write, as callbacks always are.
Q: Should I stick with the BBB architecture?
A: I think not. Now that pthreads are common, and XCB supports them, I think I want their convenience and latency hiding.
I also note that BBB does not do full composite triggering. That is, an agent can wait on a region of the blackboard, but it can't wait on an arbitrary conjunction or disjunction of regions and items. This seems wrong, but all the interfaces I can think of in the C world make it hard.
Oh well. At least I'm started again. (B)