Enabling the Distributed Family Tree

This is the official research blog for the Distributed Family Tree, an open network of genealogical data and metadata.  In a nutshell, the big idea is that we can combine all available genealogical information on the Internet into a single distributed network.  The foundation for this network is the substance of the Master's Thesis that I am currently working on.

Data Model as a “Blackboard”

I’ve been reading The Pragmatic Programmer since I checked it out from the BYU library over a year ago. You might think that I’m a really slow reader, and you’d be right, but I’m not that slow!  The truth is that this is a book which didn’t really grip me at first, but that I felt compelled to keep reading as so many people have referenced it in other works. So I nibbled on it a little at a time (i.e. a few pages every few weeks), renewing it every few months until, now more than halfway through the book, it finally got good. I’ve now picked up the pace considerably (i.e. a few pages every few hours while I’m at work; I read it while I’m waiting for the computer to do stuff).

As I read today I came across a section on blackboards (pp. 165-9). A blackboard is a solution to the problem of how to coordinate interactions between several agents. It does so by not coordinating them at all.  The blackboard is a common place that anyone can read information from and write information to. It occurred to me that this is exactly how the data model works within Genesis, but until now I didn’t have the lingo to express it.

Genesis allows any plugin to read from the data model and write additional data to it. Plugins can also subscribe to receive notifications whenever the data model is updated. For example, the user might perform a search for Grandpa Albert. The search plugin will of course attempt to find any and all data on Grandpa Albert and display it to the user. In the background, however, another plugin may be analyzing the user’s data and retrieving records of it’s own. These records are being stored in the common data model, and, because it subscribed to receive notifications, all of these changes will be detected by the search plugin.  The search plugin will immediately be made aware of any data that the background plugin brings in on Grandpa Albert.

What’s great is that these two plugins know absolutely nothing about each other. There is no coupling. Yet they cooperate beautifully.

    Trackbacks/Pingbacks


  1. […] before this Friday’s release was to write a research manager. The research manager is a blackboard for the user’s research intentions: the user puts objectives on it, and agents listen for […]

Leave a Reply