Modern Software Experience

2008-12-12

Family Tree Maker

technology

I often include a brief section on technology at the end of a genealogy software review. What I encountered looking at Family Tree Maker 2009 prompted me to make it into a separate article.

I finished this article some six week ago. I delayed publication for a while, hoping that Ancestry.com would release a Service Pack that would enable me to write that most issues discussed herein are fixed by that, but nothing has changed since then. I have little hope left that we will see any Service Pack this year, and if you are using or considering Family Tree Maker, you really need to know what I found.

This is not a product review, merely an article about the technology used in it.
I will post my full FTM 2009 review in a few days.

technology

about box

Family Tree Maker is a Microsoft .NET program, and requires Microsoft .NET 2.0 or later.

The about box acknowledges that FTM uses spell checking from LoreSoft, provides place mapping using Microsoft Virtual Earth and uses Wholly Genes GenBridge for direct import.

components

FTM 2008/2009 has been built using many more ready-made components than are listed in the about box, including building blocks from the Microsoft Enterprise Library, the LeadTools Imaging Toolkit and Mike Kreuger’s SharpZipLib.

DevExpress

FTM ships with many DevExpress controls, including DevExpress Xtra toolkits, including XtraBars, XtraCharts, XtraEditors, XtraPrinting, XtraReports and XtraRichTextEdit.
These are DevExpress components and libraries for .NET WinForms. These can be licensed separately, but are also available in a bundle as the DXperience WinForms subscription. Ancestry.com apparently opted for that bundle.

ribbon bar 

Note the inclusion of XtraBars - it makes it easy to easy create a ribbon bar, and that makes it real hard to understand that FTM uses an awkward bunch of "workspace" tabs (that look like buttons) with modal menus instead.

Spell Check

DXperience Informs includes XtraSpell, but FTM uses LoreSoft NetSpell instead. NetSpell dictionaries use the OpenOffice Affix compression format.

VistaDB

FTM uses Vista Software’s VistaDB database engine. VistaDB is an embedded relational database engine, i.e. a database system that the user does not need to install or configure separately, but is embedded into the application itself. VistaDB is used for the Place Authority database, the PlaceAuthority.vdb3 file.

FTM’s family files do not have the *.vdb3 extension, and they do not contain a VistaDB copyright message, so these appear to be in some proprietary format. It would be somewhat strange to use two different database engines in a single product, and I did not notice another database engine. FTM’s databases could be VistaDB databases with a custom header, but are probably in some custom format, just like FTM Classic.

software updates

FTM uses PocketSoft RTPatch for software updates.

…without a source, FTM’s "Place Authority" lacks the very authority it alludes to.

place names

I did not find a reference to the source of the database with 3 million place names. The about box does not acknowledge the source, and there are several possible sources. It may for example be a dated copy of the Geographic Names Data Base of the National Geospatial-Intelligence Agency (NGA), as used by the NGA GEOnet Names Server (GNS).

I don’t understand why Ancestry.com does not document the source of the database conspicuously. Ancestry.com isn’t a place authority, and without a source, FTM’s "Place Authority" lacks the very authority it alludes to.

Family Tree Maker 2008 SP4

I was rather surprised to notice that some the components used in FTM 2009 seem to be the same versions as those in FTM 2008. In fact, after quickly comparing the FTM 2008 SP3 and FTM 2009 directories, it seemed like all the components were still exactly the same versions as before.

I took a closer look, Checking the version resources and file headers proved to be unexpectedly revealing. I soon found myself tabulating the version numbers. I even temporarily reinstalled the first FTM 2008 Beta and the FTM 2800 release to get a more complete picture of the product’s update history.

FTM third-party component version numbers

productFTM 2008 BetaFTM 2008FTM 2008 SP3 FTM 2009
version17.0.0.37117.0.0.39717.0.0.965 18.0.0.95
date2007-07-102007-08-142008-05-012008-08-28
     
Visual Studio7.1 (VS 2003)7.1 (VS 2003)7.1 (VS 2003)7.1 (VS 2003)
NetSpell2.1.7 2.1.72.1.72.1.7
     
GenBridge2007-06-272007-07-152007-09-282007-09-28
RTPatch10.5010.5010.5010.50
VistaDB2.1.7.12.1.7.12.1.7.12.1.8.2
DevExpress7.1.1.07.1.1.07.3.6.07.3.6.0
Enterprise Library2.0.0.02.0.0.02.0.0.0 2.0.0.0
LeadTools14.5.05514.5.05514.5.05514.5.055
SharpZipLib0.85.0.00.85.0.00.85.0.0 0.85.0.0

version checking

Generally, checking file versions is pretty easy. Most executable files (*.EXE and *.DLL files) include a version resource. You just need to select the file, bring up the context menu and select Properties to see it.
Software that does not include a version resource is rare. But such software still has timestamps in the header and export table. There are many tools that will show these timestamps. One easy to use EXE viewer is RemoteSoft Explorer.

GenBridge

The GenBridge DLL (gbfunc.dll) lacks a version resource, so I looked at the timestamp instead. For FTM 2008 SP3 the gbfunc.dll timestamp is 2007 Sep 28, 21h41m11s. For FTM 2009 that timestamp is 2007 Sep 28, 21h41m11s. It is the same file.

The date for the FTM 2008 Beta is is 2007 Jun 27 and the one for FTM 2008 is 2008 Jul 15. This suggests that these are different, earlier versions. After all, as far as we know, Wholly Genes distributes the DLL, not its source. Unless they gave the source to Ancestry.com, the different DLL are different versions build by Wholly Genes.

So, the dates show that the version of GenBridge that Ancestry includes with FTM was just a few months old for FTM 2008 Beta and FTM 2008, but that the version included with FTM 2008 SP3 is already more than half a year old. When Ancestry.com distributed that same version with FTM 2009, it was already more than a year old.

When Wholly Genes updates their GenBridge product to fix some defect, that fix should be included in FTM by bundling the updated version. By including a one year old version, Ancestry.com is either effectively claiming that Wholly Genes did not update its GenBridge product for a year or is publicly demonstrating how lousy its own configuration management is.

RTPatch

FTM 2008 uses PocketSoft RTPatch version 10.50. FTM 2009 uses version 10.50 too, and that is still the latest version. RTPatch is simply a mature product that does not see frequent updates.

LeadTools

FTM 2008 uses LeadTools version 14.5.055. LeadTools is currently in version 16, but FTM 2009 still uses version 14.5.0.55. The LeadTools web site lists many new features for version 15 and version 16. I don’t know how FTM uses LeadTools exactly, I only know it uses it, but it is hard to believe that none of these improvements of version 15 or 16 would benefit FTM.

SharpZipLib

All versions of FTM 2008/2009 use SharpZipLib version 0.85. That is surely the most remarkable version number of all the components used by FTM. That version number - a number below 1.0 - suggests that the creators of SharpZipLib did not consider this library finished yet, but Ancestry.com still used it in commercial production code anyway.

The 0.x version number does not imply the component is bad, but it sure implies that the FTM developers should pay close attention to updates and fixes. The latest version of SharpZipLib is 0.85.5.452, yet FTM 2009 still uses the same 0.85.0.0 version that FTM 2008 Beta uses. The list of changes between 0.85.0.0 and 0.85.5.452 shows many defect fixes. Dozens of defects have been fixed in SharpZipLib, but none of these fixes is included in FTM 2009. FTM 2009 includes the old version with known defects instead.

NetSpell

FTM 2008 uses LoreSoft NetSpell version 2.1.7.17986. FTM 2009 uses the same version, but that is not so strange. The open source NetSpell project was last updated in 2004.

The dates on the dictionaries in the FTM 2009 directory are 2008 Aug 20, but these are the same dictionaries as included with FTM 2008, which have a 2007 Jul 31 file date. The only thing they changed between the two versions is the file date, the dictionaries have not been updated.

The dictionaries are even older than the FTM 2008 file date suggests. FTM 2008 does not include its own dictionaries, but the free NetSpell dictionaries. When you check the SourceForge project, you’ll see that the English dictionary is dated 2004-03-30, all the others, including the Amglish one used by their American home market customers, are dated 2003 Aug 13.

These free dictionaries are five years old. They are five years behind the times. Recent words are simply not in there. That is perhaps not as big an issue for a genealogy application as it is for a word processor, but including unmaintained dated dictionaries in a commercial product isn’t a professional approach. By the time Ancestry.com releases FTM 2010, these dictionaries will be six years behind the times.

It isn’t strange that FTM 2009 uses the same NetSpell as FTM 2008, it is strange that FTM uses NetSpell at all. When Ancestry.com introduced FTM 2008, NetSpell had gone without maintenance for four years already.

DevExpress

FTM 2008 SP3 uses DevExpress DXperience version 7.3.6. DevExpress has since released a major new version, and is currently up to version 8.2.x already, yet FTM 2009 still uses version 7.3.6.
Version 8 includes new controls and updates existing ones. None of these improvement are experienced by the FTM 2009 user, as FTM 2009 continues to use the same old versions as FTM 2008 SP3 does.

Enterprise Library

FTM 2008 uses Microsoft Enterprise Library 2.0. This is currently up to version 4.0, yet FTM 2009 still uses version 2.0. Microsoft’s Enterprise Library (EntLib) isn’t a static library. New releases are significantly different from previous ones. Parts of the Enterprise Library have been merged into the .NET Framework itself, and newer versions of EntLib are not always fully compatible with earlier releases.

VistaDB

FTM 2008 uses VistaDB database engine version 2.1.7.1. FTM 2009 uses Vista DB database engine version 2.1.8.1. VistaDB 2.1 was released on 2005 Oct 24, version 2.1.7 (used in FTM 2008) on 2006 Aug 13 and version 2.1.8 (used in FTM 2009) on 2006 Nov 28.

This seems to be the only component that was updated, but it was only updated to 2.1.8.1, while version 3.3 is out and 3.4 is in beta. With Ancestry.com obviously being less than eager to upgrade, I can only guess that this rather minimal upgrade was performed because 2.1.8 fixed some 2.1.7 defect.

Visual Studio 2003

FTM 2008 ships with a Microsoft C runtime, mscvr71.dll. The file name already gives away that this is version 7.1, the version resource shows that it is version 7.10.3052.4. That is the C run-time DLL for Visual Studio .NET 2003, also known as Visual Studio 7.1. Visual Studio 2005 is version 8.0 and the C run-time is in msvcr80.dll. Visual Studio 2008 is version 9.0 and the C runtime is in msvcr90.dll.

FTM 2009 still ships with msvcr71.dll, the same Visual Studio 2003 DLL that FTM 2008 ships with.
This implies that FTM 2009 was created using Visual Studio .NET 2003, while Microsoft released Visual Studio 2005 in 2005 (still years before FTM 2008 was introduced), released Studio 2008 about a year ago, and is already talking about Visual Studio 2010.

place name database

The Place Authority database has neither a version resource nor a version number. Well, perhaps it has a version number, but I would not know where. It does have a file size. The FTM 2008 SP3 PlaceAuthority.vdb3 file size is 311.576.576 bytes, and FTM 2009’s PlaceAuthority.vdb3 is exactly the same size. A comparison of the two files shows that they are identical.
Place name changes that occurred since the release of FTM 2008 are not reflected in FTM 2009’s database. FTM 2009 does not include a 2008 edition of the place name database, it includes the same old 2007 edition that FTM 2008 shipped with.

This is FTM 2008 Service Pack 4 with an FTM 2009 label slapped on it. 

FTM 2009?

Ancestry.com may have fixed some defects and introduced a few features, but this is not a 2009 version of the program. This is, in every important and many embarrassing respects, exactly the same program as before. This is not a true FTM 2009. This is FTM 2008 Service Pack 4 with an FTM 2009 label slapped on it. 

Heck, the lack of updates is embarrassing even for a Service Pack.

Components

digital forensics

It is possible to date a program by the technologies it uses. don’t bother trying to patent that idea, I just published it already. Here’s an overview of components used in FTM 2009 and their release date.

productversionrelease date
VS 20037.12003-04-??
NetSpell2.1.72004-03-30
GenBridge-2007-09-28
RTPatch10.502007-01-17
VistaDB2.1.82006-11-28
DevExpress7.3.62007-11-16
Enterprise Library2.02006-01-21
LeadTools14.52005-11-15
SharpZipLib0.85.002006-12-??
place names-2007-??-??

These component dates show FTM 2007 to be a more reasonable name than FTM 2009 is.

Judging by the release dates of most components, development started in 2006, and some components were updated for a while, but Ancestry.com stopped updating them. That would explain everything except the use of VS 2003, which was never upgraded to VS 2005 or 2008. So, perhaps development started late in 2005, just before the release of VS 2005 in 2005 October. Either that, or Ancestry.com still had a VS 2003 license lying around and considered that to be good enough. The apparent facts are that development of FTM 2008 started with Visual Studio 2003 and that Ancestry.com did not bother to ever update Visual Studio, its main development tool, but is still using a version released more than five years ago.

component selection

It is fairly easy to come up with reasons why the use of GenBridge is puzzling, but that is just one specific component. The totality of the component selections does not make much sense to me. Why use a pre-version 1.0 ZIP library when there are so many mature ZIP libraries on the market? Why use a spell checkers with five year old dictionaries when you can buy up-to-date ones? Why include XtraBars when you do not present a proper ribbon bar? Why opt for LoreSoft’s spell checker, and thus add yet another component provider, when the DevExpress bundle includes a spell checker too? Why use RTPatch when Microsoft’s Enterprise Library has an Updater Application Block? Why use RTPatch when Microsoft .NET 2.0 has ClickOnce technology? Whatever you think of any particular choice, the collection of choices sure does not make a very logical and consistent impression.

configuration management

Using components is a good way to develop software. It makes little sense to reinvent the wheel. When you’re building an application, you don’t want to be bothered with having to build every little thing yourself, and developing your own spelling checker just doesn’t make much sense. It is much faster, easier and cheaper to just buy a component from some specialised vendor. That arrangement makes perfect sense. The component vendors maintain the component, while you focus on how these components come together in your application.

responsibility

When you buy components, you are not responsible for developing them, but you are not without responsibility either. You remain responsible for your application. You are responsible for selecting the right component from a reliable source. You must either pick a vendor that will maintain the component over the lifetime of your application, or take on the maintenance yourself, and you need to take your configuration management seriously. You need to keep track of updates, especially fixes, and update your own application in a timely manner.

shipping defective components

Updated components are often faster or more capable than the older version. Perhaps FTM 2009 doesn’t need the new or improved capabilities, but a component’s features are not the only reason to upgrade. Many of the old component have defects that have since been detected and fixed in new releases, but FTM 2009 includes the old versions with the known defects. Shipping the old defective components instead of the newer ones is neither professional nor responsible.

plug-ins

Family Tree Maker 2008 and 2009 seem to have support for plug-ins. The setup for either one creates a directory called Plugins in the program’s installation directory. That directory is empty.

There is a "plugins" menu item (Ancestry.com consistently forgets the hyphen) on the Tool menu, but without a plug-in, that menu isn’t much use.

There seems to be no public documentation on the plug-in interface, yet there is at least one program that supports it. PassageExpress has an FTM 2008 plug-in. It allows import of FTM data into PassageExpress.

I asked Mike Ward, the public relations director of Ancestry.com for a list of available plug-ins. You might think he would enthusiastically embrace this opportunity for free press and provide a list to show off the extensive third-party support for FTM, and happily provide a web page I could link to, but he did not bother to respond.

I asked where or how developers can get information about developing a plug-in for FTM, and he did not bother to respond to that question either - and that may explain why there is such a remarkable lack of plug-ins. Either that, or developers just don’t want to be associated with the product?

conclusion

Family Tree Maker 2009 uses a lot of third-party components. The selection of these components does not make a logical and consistent impression. Family Tree Maker 2009 was built with Visual Studio 2003, and all the component versions date back to 2007 or earlier. The components have not been updated, although the older versions that FTM 2009 uses contain known defect, even publicly documented defects, that have been fixed in the newer versions.

One component did not need to be updated because the vendor does not release new versions very often. Others may never be updated because Ancestry.com choose to use and old, unsupported and unmaintained component in the first place. Weirdly, one of the libraries that FTM relies on is a pre-1.0 version, despite the ready availability of mature alternatives. and even that pre-1.0- component has not been updated to the latest version. The spelling dictionaries are five years old and the place name database has not been updated either.

This is not a true FTM 2009. This is FTM 2008 Service Pack 4 with an FTM 2009 label slapped on it - and that is putting it nicely. Judging by the components used it really is FTM 2007.

Calling it FTM 2009, and thus suggesting that it is has been fully updated to be a true successor to FTM 2008, when it is little more than FTM 2008 relabelled, is misleading at best.

The lack of updates is embarrassing even for a service pack. Shipping a product with old component versions containing known and published defects is seriously unprofessional.

acknowledgements

I thank DevExpress and PocketSoft for answering questions about release dates.

updates

update 2008-10-06 Mono 2.0

The Mono Project has released Mono 2.0. Mono 2.0 is a multi-platform implementation of .NET. Mono version 2.0 is compatible with Microsoft .NET 2.0; it allows running .NET .2.0 applications on Windows, MacOS X, BSD and Linux.

However, it does not automatically follow that you can run FTM 2008/2009 on these platforms. It will only work if all of FTM’s components and libraries rely on .NET exclusively, and do not bypass .NET to take advantage of Windows features.

You could try it to just to see how far you get, but with the multitude of third-party components and libraries FTM uses, success is far from assured. I recommend waiting until Ancestry.com announces FTM to a be a pure .NET application that does not rely on Windows features, and actually offers FTM for MacOS or Linux.

2011-04-23 VistaDB 2.1.8 issues

Gibraltar broke their VistaDB: issues for version 2.1.8 link. The broken link has been removed.

links

Family Tree Maker 2008

Family Tree Maker 2009

technologies

plug-ins

version numbers and dates