The Tangled Web Project

Genealogy research doesn’t (or shouldn’t) happen in a vacuum. We all want to share the results of our research with others. These days, that usually is done on the internet. I’ve regularly posted the results on my own web site. Ever since using Gramps, I’ve posted my data using the Gramps Narrated Web Site, but I was never been fully satisfied with it. The information wasn’t always the easiest to navigate, some pages were very large, and it wasn’t very mobile friendly.

Web technology steadily changes. For the past four years, I’ve been using WordPress. The genealogy data was the only section of my web site still using static html pages. I knew programming a new web publishing system would be a big project, but a few months ago I dove in. And so now, I’m able to publish my data using that new system. You can see my genealogy data at Boldts & Molls.

I call this project “Tangled Web”. The most common metaphor used in genealogy is the tree. However, that’s a flawed metaphor, useful only in narrow scopes. Relationships are complex, and form a vast web of interrelationships, often quite complicated.

Clicking on Boldts & Molls, you first see an introductory page. That “home” page includes a list of people born on today’s date in history. It also shows a list of the most common names in the genealogy, in the form of a name cloud, with the bigger names indicating the more common names. There’s also a “search” button, where you can search on last name, given name, location, or a range of years.

For individuals, the new system uses a tabbed layout. The “Family” tab shows parents, grand-parents, siblings, spouses, and children. The “Timeline” shows a history of the person, starting with the marriage of the parents. All events recorded in the Gramps database are listed, and birth, marriage, and death events include witnesses and informants. The “Pedigree” shows the pedigree for the person, with instances of pedigree collapse shown. And the “Sources” tab shows the sources and citations, including scans of the primary source records.

One aspect I wanted to emphasize was relationships between people. And so wherever a person is listed on someone’s page, their relationship is shown.

How was this implemented? First, there’s a Gramps plugin, which creates a set of data files. Like all Gramps plugins, this code is written in Python. Next, there’s a WordPress plugin, written in PHP, which processes that data, and maintains the search index. Finally, there’s a good chunk of code written in JavaScript that formats the data in a browser. The latter uses a technique called Ajax, which is becoming more and more popular. The idea is that the content of the web page is written dynamically, under the control of the JavaScript program. The browser doesn’t have to refresh the whole page whenever you click on a link, but just has to request the changed data from the server. This is how pages like Google Maps work. Altogether, it’s about 5000 lines of Python, PHP, JavaScript, and CSS code.

What’s next? My first priority is to write up some documentation, and upload the code to my GitHub page. The code will be available to anyone under a GPL license. For the next version of the code, my goal is to make it easier to update a Tangled Web instance on the server. That is, I want the Gramps plugin to have the capability to communicate directly with the WordPress plugin to update the data changed since the last update.

Finally, I invite other people to contribute to this project. WordPress isn’t the only content management system out there. Although it’s the most commonly used CMS, there are others like Drupal or Joomla!. If you’d like to have a Tangled Web instance running on your self-hosted web site running on a different CMS, feel free to rewrite the PHP code to suit your CMS.

Cheers! Hans

Leave a Reply