Family tree collaboration

13 views
Skip to first unread message

Przemek Więch

unread,
Apr 15, 2024, 2:00:17 PMApr 15
to root...@googlegroups.com
Hi,

I was recently thinking about what family tree collaboration should look like and I wrote a post about it: https://pewu.github.io/Collaborating-on-building-family-trees/

I don't know if this group is still alive. Anyway, if you come across this post, let me know what you think.

Cheers,
Przemek

Thomas Wetmore

unread,
Apr 15, 2024, 5:34:00 PMApr 15
to root...@googlegroups.com
PrzemekPrzemek,

I read with interest your thoughts and ideas. I have had similar ones over the years. Let me give you a quick intro to some things I have done and things I am thinking about.

In the late 80s I wrote a Unix/C genealogy program named LifeLines. I gave up development around 1998 when I lost access to Unix, but I left it as open source. It is available at github and still used by genealogists around the world. It uses ncurses for its "old-fashioned" GUI.

It has two features that make it a good starting point for writing custom genealogical scripts and programs. First it is GEDCOM based. It has a custom B-tree database and all the genealogical records in the database are person, family, source, etc., GEDCOM records. LifeLines does not enforce many GEDCOM rules so it can read GEDCOM from almost any source and create records from them.

Second it has a programming or scripting subsystem that lets you write programs to manipulate the records. Many report programs exist. Scripts to validate records are easy to write. Interesting programs that do things like compute relationships and so on exist. The language is similar to a general purpose programming language with the addition of many genealogical operations. One data structure in the language is a set of persons. Operations exist to get the ancestor and descendent sets of a set of persons, the spouse set of a set, children set of a set and so on. (The set operations are powerful.)

The user interface has standard operations to create, edit, and delete records; establish or remove relationships between records; and so on. One oddity is how records are edited because there are no edit screens or forms. Editing is done with your favorite Unix text editor by editing the GEDCOM directly! I use vi.

Of interest may be the fact that LifeLines has a join/merge feature. You identify two INDI or two FAM records you believe are the same thing, and you can merge them. LifeLines creates an initial version of the merged record by keeping the unique parts of each while including one copy of the common info, and it puts that record into a "canonical" form. LifeLines then puts you into your text editor and you edit the record. If you are merging persons you are probably also merging records they refer to, their spouses, parents and children. This is an area that could benefit with more automation than is provided, becuase currently you have to also merge parents, spouses, and children individually. LifeLines makes it straightforward to do this, but you still have to do it.

Currently you have to identify the records to merge, but it is possible to add a feature to find and suggest likely merges.

After being away from LifeLines for 25 years I have recently been morphing it into another program named DeadEnds. I've gotten rid of the B-tree database. When the program starts up it reads GEDCOM files into an in-RAM database which is just a glorified hash table. Moore's Law has made this very possible over the intervening 35 years! I may also it to Go because of Go's simplicity and the fact that it is Unicode native.

I don't yet have a user inteface for DeadEnds, as I don't know if I want to promulgate ncurses into the current era, so it is starting life as a command line tool that reads a GEDCOM file into RAM, then reads a program script, and then runs the script against that database. With this system any special processing of GEDCOM becomes possible. It boils down to figuring out exactly what you want to do do with or to the GEDCOM, and then writing the scripts to do it.

Tom Wetmore
Reply all
Reply to author
Forward
0 new messages