Genealogy

Why we built GreatAlbum on Drupal

Submitted by Erik on Sat, 07/18/2020 - 22:10

When I joined the Reunion Organizing Committee for my high school class, for our 20th reunion in 2006, I thought it would be cool to organize it on a website. WordPress v Joomla v DrupalKeep in mind, this was only two years after Facebook had launched, and a few months before it was available to the general public (not requiring a .edu email address), so that wasn't an option. I spent a week researching open source content management systems, narrowed it down to the top three - WordPress, Drupal and Joomla!, and ultimately decided upon Drupal - I think version 4.6 at the time. While I recognized that it wasn't quite as widespread as WordPress, and more complicated to learn, I liked that it seemed to have the most robust capabilities of the three. Thus began my journey with Drupal that has now spanned nearly 15 years and almost as many websites - typically as charitable hobbies for nonprofit organizations. 

ColdFusionSeparately, the journey to build GreatAlbum started in 2001, when I tried my first attempt at building a prototype. I had gone to a Macromedia ColdFusion workshop and won a give-away copy of ColdFusion. I was so excited and took it as an omen I should give it a try. I built that first prototype with my brother, using ColdFusion Markup Language and the Fusebox Application Framework. We learned some good insights, but ultimately didn't get too far. 

PhpGedView exampleAbout ten years later, I wanted to take my Webb family tree information that I had gathered with the help of a few relatives and create a collaborative genealogy environment, with all the types of content I envisioned, though in more of a genealogy format. Around 2010 I implemented my own version of PhpGedView with family trees for Webb, Britt, McCain & Iredale families. This was really cool and did get some traction, but was still too centered on Genealogy. 

So, I continued to think about other options. Then in 2019, I spent a few months exploring how I might integrate WebTrees (successor to PhGedView) and Drupal together, to have the genealogy aspects together with robust content management. The more I explored, the more complicated it seemed.

So I ditched that idea and decided to go just with Drupal. As I turned to that focus, I came across the post for a Functional Drupal 7 Family History Website, which led me to https://ancestry.sandes.uk, developed by Mike Sandes. Some great coaching by Mike led to a new prototype of GreatAlbum, based on Drupal 7, using Organic Groups to represent Albums. We spent several months building out a pretty comprehensive website with the full complement of genealogy entities - Individuals, Names, Families, Events, Stories, Places, Notes, Citations, Sources,  & Repositories. That was fun, and we learned a lot, but it was way too complicated. It was also not viable to build on Drupal 7, which was scheduled to go end of life in November 2021, nor to use Organic Groups, which doesn't have a stable release for Drupal 8. 

After this long, circuitous journey, we finally landed on building GreatAlbum using Drupal 8 based on PHP. There are a lot of other open source technologies and frameworks we could have chosen. A lot of people told me I was better off going with NodeJS, based on JavaScript (#1 most popular language) or Django based on Python (2nd most popular language as of 2019). While both of these are great options, I am convinced that the strength and maturity of the development community is just as important as the framework itself. Ever since I first chose to use Drupal in 2006, I've watched the Drupal Community grow to over 1 million developers, with over 44,000 modules, powering over 1 million websites, including many famous ones (see 67 Amazing Drupal Statistics & Facts)!

While it may be more challenging to build the GreatAlbum site on Drupal, I am convinced that the community will become invaluable when we open source the code and invite users/developers to contribute patches & improvements that will enable us to harness the power of many developers beyond our core team. Furthermore, as we develop unique and powerful features on GreatAlbum, we look forward to contributing those back to the Drupal community, so other developers can use them on their websites & applications.

React JSIn the future, we plan to explore "decoupling Drupal," which means we would continue to use Drupal on the backend and possibly use ReactJS on the front end - for both the browser-based app and native mobile app. More on that to come.