This website grew from an original spark of interest at a young age in my McGregor family history. As with many amateur family historians, I collected information in files and notebooks long before the advent of personal computers. My focus expanded to my Gazlay family and other related families. Decades of research have resulted in boxes of paper files, photographs, notes, documents, and miscellaneous artifacts. My goal was to eventually publish one or more family histories in a widely recognizable genealogy format, and I created several family histories using a popular word processor, where I found I could achieve the exact format I wanted. But a word processor document is not a good way to store information. Clearly some sort of database was needed. The 1990s brought mature commercial family history software products, and although I tried several, no single product could provide the functionality or attention to detail I desired for format and content.
As the internet grew in popularity, I realized that a database-driven website would be superior in many ways to a paper family history for sharing information and reaching out to others. Again I turned to commercially available family history software, but none provided the database architecture or level of database and web site customization control I wanted.
What better way to solve a problem than to surf the web? I looked at several sites that had many of the features I was looking for in a family history web site, but few had any details about the technology behind their sites...until I found solumslekt.org, created by Leif Biberg Kristensen. From the user’s perspective, his site provided exactly the right balance I was looking for in functionality (family pages, ancestors and descendants) and strong emphasis on sources and citations. And from the application designer’s perspective, Leif’s website provided the software Holy Grail...source code! His website is based on an innovative software architecture of his own design, developed after years of work using commercial products much as I had done, although his depth of knowledge in database design and software architecture far exceeds mine. And the icing on the cake: his design is created under the terms of the GNU General Public License as published by the Free Software Foundation!
The technology behind Leif’s website is his Exodus database using a PostgreSQL engine with web pages rendered using PHP. I had previously dabbled in MySQL database technology, so I proceeded to translate his source code into MySQL and PHP. Although this may seem like a step backward in technology, I found that it suited my needs. I had to solve a number of issues due to functions that Leif rendered in PostgreSQL which were not available in MySQL, but eventually I was able to replicate nearly all of his functionality.
I made several modifications to Leif’s basic design and functionality.
First was a redesigned search engine, moving from Leif’s original user text entry for first and last names and birth date to an alphabetical surname selection model.
Next were modifications to the Descendants page. I found that his version would not show spouses of individuals if they did not have any common children, and I felt that those spouses needed to be included in a descendants list. I also anticipated that as the number of individuals in the database grew, eventually the descendants list for a given person might include more people than would fit on a printed page. And because Leif’s Descendants page used a recursive function to read from the database, performance was a key issue. Leif used the PostgreSQL Prepare function to minimize the data transmission time and take advantage of server-side processing to address the performance issue. I elected to rewrite the Descendants page using new database queries that avoided using views and functions in order to achieve acceptable performance. My Descendants page now includes all of the descendants and their spouses while limiting by default the number of people shown on each screen, and providing user-controlled page navigation. I also provided a user-selectable number of Lines per Screen. This permits the user to specify, for example, a large number so as to display all of the descendants in one long list. By doing this, the user can print the entire list of descendants at once, and allow the printer to paginate as necessary.
I also added what is, I believe, a unique way of showing individuals who are adopted. The Family page and the Descendants page indicate both birth parents and adoptive parents where known. Purists may argue that adopted children should not be included as descendants because they are not related by blood. However, I believe including adopted children is more consistent with the composition of actual family units, and especially considering that their progeny are legally and commonly regarded as descendants. Related to adoptions, when a person is legally adopted and the person takes (or is given) a new last name, I show the person with the new last name, followed by “(Born original-last-name).”
Another addition on the Family, Ancestors, and Descendants pages is how a woman’s name appears when she re-marries. For example, suppose Jane’s birth surname is Doe. She first marries John Smith, and Jane takes the name Jane Smith. If she later marries Thomas Brown, the pages on this website will show that Thomas Brown married Jane (née Doe) Smith. The public record of their marriage would more likely show that Thomas Brown married Jane Smith, not Jane Doe. So in general, this website shows the surname that a woman used prior to her second or each subsequent marriage, along with her birth surname (i.e., “née”) if it is a different surname. This should help in interpreting public records for women who have married multiple times.
I added an event called “Partnered” in acknowledgment of unmarried couples who have children together. Separate symbols for “married” and “partnered” are used on the Descendants view.
The original Descendants page shows a person’s descendants in the form of an indented list. While this is a traditional and compact format, it can be difficult to navigate to identify family groups. So I changed the name of the original Descendants page to Descendants List, and created a new Descendants page that displays the same information in the form of a tree, similar to the Ancestors page. Unlike the Ancestors page, that uses a php table to format the information (a very elegent solution, thanks to Leif), the new Descendants page is created using div blocks. I elected to make the main section of this new page a scrolling section in order to display the entire tree of descendants for the selected person. Forcing the user to scroll (especially left and right) can be cumbersome, but in this case I feel it is an appropriate use of scrolling. Viewing tips at the top of the page should help the user to scroll through the tree.
Something I always wanted, and finally added, was the ability to generate a book format of family history that would combine all of the birth, marriage, death, burial, immigration, adoption, and biographical details for descendants and spouses of a selected person. The book format is similar to popular family history styles and includes reference citations at the end of each generation.
On all php pages that receive any input parameters, I added standard coding techniques to filter the incoming data. This deters hacking the site and protects the database.
I added reCAPTCHA™ on the Contact page to protect our email address from spam and bots.
Contact me if you are interested in more detail about the design of my web site and the underlying database.