Genealogy Software


The charts in the trees section of this site are generated on the fly in the user's browser using my own JavaScript software TreeView.

Using TreeView

You need to have JavaScript enabled in your browser's preferences, of course.

I hope you find TreeView's charts fast, intuitive and easy to use. Most things that you see will do something sensible if you hover over, or click them. So just hover and click, hover and click, and all should become clear. If you insist on instructions, read on.

The charts will usually open in chart view, anchored on either a person, or a family. To see more information about a person, hover over the person's name. To see more information about a family (including the parents' marriage), hover over the image of the ring that connects the two parents. Clicking on a person will re-draw the chart, anchored on that person. Clicking on a ring will re-draw the chart, anchored on that family.

In the top left of the chart, you'll see three (or four) symbols, a plus sign, a minus sign, a capital "N", and (on some charts only), a capital "C". Click on the plus sign to zoom in, or the minus sign to zoom out. When zoomed in, you'll see fewer generations, but in a bigger font. Click on the capital "N" to bring up an index of surnames; in the surname index, click on a surname to list all the people in the tree with that surname; click on a person to draw that person's chart. The "C", if present, will bring up another browser window showing the web card for the current person or family.

In chart view, you'll see that most people have a "D" (for Descendants) and/or "A" (for Ancestors, or Ahnentafel) next to their names. Clicking on the "D" will bring up a simple list of that person's descendants. Clicking on the "A" will bring up a list of that person's ancestors as an ahnentafel report. If you're not familiar with the layout of ahnentafel reports, all you need to know is the numbering system. The root person is numbered 1; the number of a person's father is obtained by doubling the child's number; add 1 to the father's number to get the mother's number. This scheme makes the ahnentafel report extremely compact. In either report, clicking on a person will bring up that person's chart.

Do not use your browser's back button, unless you really want to leave the chart altogether. You don't need it, as you're never (well, almost never) more than a click away from the last thing you were looking at. Instead, use one of the links in the breadcrumbs trail, beneath the tree's title.

TreeView has been tested on several important browsers, including Firefox (versions 2 and 3), Safari, Chrome, and Internet Explorer (versions 7 and 8). The last has given me the most trouble, and I wish it would go away.

TreeView for Geeks

When I started this project, I was dissatisfied with most of the charting software, both on-line and off-line, that I could find. (I've since learned that doing general charts well is actually rather difficult, and I've lowered my sights a little.) I was also determined not to use proprietary software such as Flash, and I decided to see just how far I could push graphics in JavaScript, despite the obvious limitation that in JavaScript the basic graphics primitive, drawing pixels, is achieved by the rather cumbersome expedient of writing <div> elements into the browser's document object model. Then I found Walter Zorn's JavaScript Vector Graphic's Library (see below), and I was away.

TreeView is written in JavaScript, and also relies heavily on Cascading Style Sheets. It has a small set of dependencies, notably:

The genealogical data used by TreeView is represented in JavaScript Object Notation (JSON), which is loaded in by the containing HTML. I generate these off-line from GEDCOM files using my own suite of Perl scripts that themselves use Paul Johnson's Gedcom perl module, which you can find on CPAN. These JSON files hold only a subset of the GEDCOM data, basically just birth, marriage and death information, and are reasonably compact and surprisingly quick to load. This is why I can get away with slurping the entire tree in once, without having to go back to the server for more data all the time, which explains why TreeView charts seem blindingly fast compared to things like Ancestry's Pedigree and Family views.

No doubt sooner or later I'll encounter a tree which is too big for this approach, but I haven't yet. The largest tree I've dealt with so far has about 2000 people, and this presents no problems at all for modern browsers, even on my wife's eight-year-old PC.

Licensing and Intellectual Property Rights

TreeView is open source. It's not practical to use (client-side) JavaScript in a Web site and prevent a determined sleuth from examining it. So even if I wanted to do this (I don't), there'd be little point in trying. You can find it in the trees directory on this Web site, in a file called treeview.js.

However, just because it's open source, don't assume that it's also free or open license. It's not. For the time being at least, I reserve all copyright and other intellectual property rights; I grant no license for any use except in my own Web site; and no warranty is implied (if your computer screen explodes in your face while browsing my web site, don't sue me). If you copy, steal, re-distribute or use TreeView in any way without my express written consent, make sure you're not worth suing. And whatever you do, don't link to my treeview.js; stealing bandwidth as well as software is no way to make friends (and it mightn't work, anyway).

This is because I still maintain the fantasy that someone might like TreeView enough to offer me some actual money for it. If you have a product or site that would be better for TreeView, and you want a license, please contact me; I'm also willing to consider commisions. Even if your Web site or software product is free and you have no business model or revenue stream, I may still be willing to grant a license for the greater good. But you need to ask.

So how do you contact me? A determined sleuth will find a way. Clue: where would you expect to find copyright and license statements in an open source program?


Widely adopted standard for exchange of genealogical data. IMHO, GEDCOM has long been due for an overhaul. There are ambiguities in the standard, and too many genealogical application developers have extended it in non-standard ways, with the unfortunate consequence that, in my experience at least, whenever you use GEDCOM to transfer genealogical data from one application to another, you are likely to lose some information. Areas where GEDCOM is weak include the ability (or lack thereof) to describe how you know what you know, referencing external media or sources (GEDCOM was written before the machinery of URI's, URL's and URN's became widespread), and extensibility, amongst others.

Stephen Pickles