LifeLines Creator Working on Follow-up – DeadEnds

Those genealogists who were Unix and/or Linux users in the 1990s/early 2000s may remember LifeLines, the first open-source genealogy program for Unix, created by Tom Wetmore back in 1990-1991 for his own use, but thankfully later released to the public as LifeLines 2.0 in September of 1992 (by way of an announcement on the soc.roots/ROOTS-L mailing list). It was a little unwieldy for some, as it used a text-based interface, but it had a great scripting language and imported and exported using GEDCOM, and it was available for Unix/Linux users (and later Windows and Mac OS X) – Tom created it because there were no genealogical systems available for Unix users at the time.

Eventually Tom Wetmore put LifeLines under an open-source license, and “retired” from developing and managing LifeLines after working with it from 1991-1994, with a team of volunteers taking over. The last stable release of LifeLines was LifeLines 3.1.1 on 16 March 2016.

I was recently looking through the LifeLines LISTSERV, and came across this announcement last year from Tom Wetmore about a new genealogical software project, DeadEnds:

Warning: Much of this will probably not be of interest to non-developers – there is not an official release yet, but it is clear that he has been working on the project.

LifeLines Users,

As a retirement hobby I am working on software projects based on LifeLines and others.

For the past 25 years my employment jobs used Java and C++. For home development it was Java, Objective-C and Swift.

During the post-LifeLines years, when I worked on genealogical software, it was under the codename DeadEnds. There are thousands and thousands of Java, Objective C and Swift code now in the DeadEnds category. Too much -- I no longer understand it.

I decided to start over again, and revert to C, the language of my childhood, when I was a grad student and Bell Labs engineer, so now the language of my dotage.

I ported lots of LifeLines stuff. Some goals were to get rid of the database, letting a Gedcom file be the backing store. All done using Xcode, Apple's IDE, but limited to C, a great environment.

I implemented a few phases. The first was reading a Gedcom file into an in-Ram 'database', and the second was getting the programming language features of LifeLines working. Other phases include validation and verification, and solving the problem of reading multiple Gedcom files with overlapping keys. I spent time on the programming language feature because of the sloppy, untyped nature of the original.

....

So I'm porting my xCode version of my C DeadEnds port of LifeLines to Visual Studio Code and putting it under Git.

I also bit the GitHub bullet, and created a public repository at https://github.com/TomWetmore/DeadEnds

Consider this an invitation to the more technically minded of you to take a look at that repository. Currently it contains the 'libraries' and no main code.

That has me really interested – LifeLines was one of the first genealogy programs I ever tried out back in the 1990s. The genealogy bug had not quite grabbed me yet, but I was curious (and arguably it contributed to my future hobby, as it got me thinking about it). LifeLines had been installed on a Linux machine I was using, and the command line was my preferred mode of working with computers at the time. I never really did much with it at the time and I moved on to other platforms (OS/2, Windows), and by the time I really got into genealogy, I was mostly using Macs at home and Windows/Linux at work, so I was using a GUI for most of my personal stuff.

Looking at the GitHub project page/README, a few things stood out to me, with the eventual goal being the first one:

DeadEnds is a collection of static libraries and command line programs that support genealogical operations. It is an eventual goal to provide a genealogical program with a graphical user interface that uses the DeadEnds library.

Tom expanded on the goals further:

  • Replace the LifeLines B-Tree database with an in-RAM system. When a DeadEnds based program starts up it creates a Database “on the fly” by reading a Gedcom file. There is no other persistant form of the genealogical data. There are a number of Gedcom standards, one for syntax, and a variety for semantic variants. DeadEnds enforces only syntax standards.
  • Embrace Unicode.To fully meet this goal I may eventually port DeadEnds to Go or Swift.
  • Implement and possibly extend the LifeLines programming subsystem.
  • Provide a clean API to genealogical operations to provide developers flexibility. I am imagining a SwiftUI interface.

I’m really curious about where this goes (he is actively working on the project), and if anybody else digs into this – LifeLines has had a large influence on a lot of applications.

DeadEnds Links:

LifeLines Information: