Help Fund Us

The leaf web site is a free service provided through the BYU Open Source Lab. We are currently in the process of developing additional free family history software, including an iPad and Android tablet application to help teens become involved in genealogy, using some of the technology we have developed with leaf.

If you would like to help this work continue, please consider providing a tax-deductible donation to BYU to support the lab. See our donation page for more details. Thank you!

Bugs and Feature Requests

If you have a bug report or would like to request a new feature in leaf, please visit the leaf Google+ community to let us know. We welcome hearing your feedback.

If you prefer private communication, you can send email to

Database Maintenance

20 June 2014

Today I added some indexes on the database. This should make your experience much faster!

New Release

18 September 2013

Today we are releasing a new version of leaf that includes the following improvements:

  • Hovering over a name in the ancestor and descendant charts will now show the name of that person. You can still click to get more detailed information and a navigation menu.
  • The FamilySearch ID for a person is now shown next to the person's name.
  • Fixed a bug that prevented saving people fetched from FamilySearch.
  • Fixed a bug in the descendant chart. The FamilySearch API does not return all descendants of all spouses, so leaf as updated to fetch these people properly.
  • Improved date parser.
  • Performance improvements.
  • Improved caching.
  • Redesigned home page.

Thanks for all the feedback! Let us know if there are other features you would like!

New Release

12 August 2013

Today we are releasing a new version of leaf that includes the following improvements:

  • Tagging works again. A bug was preventing any tags from being saved.
  • Fixed a bug that prevented reload in the descendants view.
  • Fixed a bug that prevented ordering of children from oldest to youngest in the descendants view.
  • The descendants view has been updated to change the spacing of people. Any extra spaces have been removed because it was confusing. Color coding shows where a second spouse (and the children with that spouse) starts.
  • We now support christening in addition to birth when deciding whether a person has a birth event.

We're grateful for your continued use of the site. Please visit us on Google+ to provide feedback.

New Release

17 July 2013

Today we are releasing a new version of leaf that includes the following improvements:

  • Based on user feedback, we have swapped the father and mother in the ancestor fan chart to match FamilySearch and most other sites.
  • Based on user feedback, we have changed the popups in the ancestor and descendant charts so that clicking anywhere closes the popup. We have also eliminated tooltips to make it easier to click around on different people.
  • We have fixed all outstanding bugs that caused the application to show an error page. These were due to errors in parsing the data and errors received from FamilySearch. These mostly affected the descendant and profile views.

Thanks for your continued use of the site. We appreciate any additional feedback.

New Release

13 May 2013

Today we are making a major new release of the leaf software. Improvements include:

  • The site now works with the FamilyTree site at FamilySearch. Since FamilyTree has been opened to the general public, this means leaf is also open to the general public.
  • We have added a new descendants chart that shows three generations of descendants at once -- a couple, their children (and spouses), and their grandchildren.
  • We made several updates to the user interface to make it easier to navigate. We now have popup-boxes if you click on any person in the ancestor or descendant chart, and from this popup you can use a small menu to view that person's ancestry, profile, descendancy, or search.

We hope you enjoy the improvements!


22 March 2013

leaf grew out of a project at BYU called the Twenty Minute Genealogist. This project was the brainchild of Charles Knutson, also a professor in the CS department at BYU, and the class project for CS 428, a senior course in software engineering. The idea was to create a long-lived software project that students could participate in, learning software engineering lessons and helping to solve a real-world problem, rather than writing throw-away code that is so typical for CS classes. In the class, students were organized into teams resembling a corporate structure, including research, development, testing, marketing, user experience, and so forth.

Charles brought Daniel into the project to act as the CTO and architect, when each new semester of students tended to throw away all the code from previous semesters and start from scratch. Their collaboration with 100s of students in CS 428 (Software Engineering) and CS 598R (Capstone Project) over the course of three years led to some innovation in visualizing genealogy which is described in the following papers:

The success of the Twenty Minute Genealogist led Charles to form a company, Kinpoint, to purchase and commercialize the technology. Daniel continues the free software version of the project, completely rewritten, rebranded, and extended as leaf. Our latest paper is:

A large number of students participated in the design and development of the Twenty Minute Genealogist. We are indebted to all of them, and unfortunately cannot name them all. We are particularly grateful to Jonathon Klein, for being instrumental in early development of the ideas, and Justin Seliger, Justin York, Robert Brown, Steven Nay, Brandon Reid, Bryan Whitney, Scott Erickson, Reed Allred, and Kevin Rampton for their effort bringing the project to fruition during its last semester as a capstone project.


22 March 2013

We use Flask, a Python microframework, to run the leaf application. Flask is powerful and easy to use. We also make use of Werkzeug for WSGI and Jinja 2 for templates.
We use the FamilySearch API to retrieve your ancestors from the FamilySearch database for our visualization and search interfaces. This API is currently only available to registered FamilySearch developers.
We use MongoDB to store genealogy records and user information in a NoSQL database. MongoDB is a good fit because it is built to store JSON-style documents, which is what we receive from FamilySearch via their API. It can also scale to multiple servers, in case this site gets popular enough to have a lot of users.
We use the Bootstrap CSS and Javascript code developed by Twitter to provide a responsive layout and simple Javascript elements such as modal dialogs, buttons, and navigation menus.
We use jQuery to provide simplified, cross-browser Javascript support. jQuery makes Ajax and document manipulation simple.
We use KineticJS to draw HTML5 Canvas elements in Javascript. This is how we draw the ancestor and descendant charts.


leaf is written and maintained by Daniel Zappala, a professor of Computer Science at Brigham Young University. He is the director of the BYU Open Source Lab, where he mentors students who build open source software for genealogy and community services. He also manages the Internet Research Lab, where he leads a team of students conducting research on wireless networks, cloud computing, and social networking. He is an avid genealogist, and in his spare time writes free software.