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. 

When I started to entertain my dream of creating the GreatAlbum application, I always knew there were two missions that were important: 

1. Community Content Development
2. Community Application Development

In the process of building GreatAlbum, we had to think about how we would support the users of the app. We looked at a lot of traditional customer service applications, like Jira Service Desk, Zendesk, Zoho, etc. The problem was that with all of them, the model was to have a small number of customer service people providing all the support to end users. That didn’t feel right. As a result, we created a third mission for GreatAlbum:

3. Community Customer Support


Below are deeper explanations of each mission...

Community customer service1. Community Content Development 

Great would be a different kind of platform from any other I have ever seen, incorporating what I felt were the most important parts of family tree content management and multimedia management, with a focus on creating rich stories about loved ones. It would leverage the power of community to collaboratively create content and celebrate to celebrate the lives of people that content highlights. This means:

  • Albums have members, like traditional photo albums
  • But Albums would contain more than just media( photos/videos). They could also contain Events, Stories, Individuals, Places and Discussions.
  • Those content types would be interlinked, so an Event could have lots of media linked to it as well as stories written by different people, a Place where it happened, Individuals tagged who were there, and related Discussion threads.
  • Each Event would essentially act like a sub-album, only much better, and you would have to share it for others to see it, because it's already part of the larger Album.
  • Similarly Stories can be linked to Events, Individuals, Places, Media, Discussions
  • And Media can be linked to Events, Stories, Individuals, Places, Media, Discussions

In this way, you get a much better feel for the true nature of the relationships that exist between these content types, allowing you to tell more robust stories and explore the content more thoroughly. To learn more about this, see What is GreatAlbum? How is it Different?


Community App Dev2. Community Application Development 

GreatAlbum would also leverage the power of community in how the app is built. This means:

  • Building it on an open source platform, so that 80% of the functionality comes from others who have already done that heavy lifting. The GreatAlbum team would create the 20% the no one else has ever done before, which makes GreatAlbum unique and special. 

  • Making GreatAlbum app available as an open source download, so that technical people using it can also tinker with it and offer technical suggestions on how to improve it (even technical patches to the code).

  • Where the GreatAlbum team makes improvements to existing modules, offer those as patches back to those module maintainers, so they can consider accepting the improvements.

  • Where the GreatAlbum team is able to create new modules that serve our purposes and can also be generalize to be useful to others on their websites, then we will offer those as new modules to the development community and become the maintainers of them.

To accomplish #2, we chose the Drupal content management system. For more on this, see Why we built GreatAlbum on Drupal?


Community customer service3. Community Customer Support

GreatAlbum would provide a community support model, just like you get with open source communities like Drupal. The GreatAlbum team would provide the foundation of support, and more importantly, our users to be able to help each other. That approach would be much more scalable and it would reinforce the sense of community, not only in sharing content with members of your Albums, but also in helping other users with how they do the same with their own albums, even when you aren’t a member of their albums and can’t see their content. As a result, GreatSupport was born, which is a community support site for GreatAlbum and could become a model for other companies. 

To learn more about this, see How GreatSupport provides community support for GreatAlbum.