In previous blog posts, I've described the fresh new approach to digital albums that GreatAlbum enables, how to import Google Photos into GreatAlbum , and how the Media Cluster Recognition (MCR) engine can automatically recognize clusters of photos by date/time and organize them into new events. Now, let's bring them all together with a more complete guide on how to use GreatAlbum to organize your Google Photos in GreatAlbum and share them with the greatest of ease. 

1. Import Photos - Three Step Process

First, you have to import your photos into GreatAlbum. Let's assume you're like me, and you have about 20% of your organized in Albums and the rest have no album association.  This presents a challenge, because you want the albums you've curated to be represented as events in GreatAlbum, and then analyze all the other photos and auto-create events based on media clusters. So, right now, until this can become an ongoing process, there's a three-step approach to accomplish this. 

1a. Create a Private Working Album

Since your photos are likely to be shared in a range of different GreatAlbum Albums, and there will be some photos that you don't even want to share (or want to delete completely), I recommend you create a private working album, such as "My Private Album" or in my case "Erik's Private Album." You need to do this only once.

1b. Import Photos by Date Range

Import all your photos into your private album by specifying a date range that includes all your photos (e.g., 1-Jan-1990 to 4-July-2021). This could take a long time, so it will run in the back ground and notify you when it's completed.

1c. Import Photos by Album

Now, import all your Google Photo Albums into your private album. Before you click Import, be sure to select two options:

  1. Create a new event for each Google Album

  2. Mark photos as already analyzed by the media cluster recognition (MCR) engine (more on this later)

2. Organize photos based on Google Photo Albums

While this will import the photos in Google Photos albums twice, the second time the process will know NOT to import them again, but instead to update the existing media items in GreatAlbum (based on Google Media Item ID). When it does, it will associate the photos with newly created events in GreatAlbum, and it will mark the media items as already analyzed by the MCR engine, so that the MCR engine will not create new events for them based on media clusters, which would most likely duplicate the events based on the Google Photos Albums.

3. Organize remaining photos into events based on media clusters

Now in your Private Album, click the link to Create Events Based on Media Clusters. The MCR engine will now analyze all the photos that were not part of any of your Google Photos Albums. Where it finds media clusters, it will create new events and link the media in each cluster to their respective event. In the process, it will mark all the media items as analyzed, so that it doesn't accidentally analyze them again in the future (see how).

4. Review/refine events and related content/media

Now you will have a bunch of events in your private album.  Go through each event and make refinements, such as:

  1. Revise date, title and event type of a wanted event

  2. Merge events, if they actually go together

  3. Delete unwanted events

  4. Add Individuals and Places

  5. Add other media that should be associated with the event

  6. Remove media that isn't part of the event (move to another event, remove and leave in album without an event, or delete media as unwanted)

5. Move events to albums where they belong

Up to this point, all your work as been in a private album, so you didn't have to worry about sharing media or events that you wanted to keep private. Now, it's time to share your curated list of events with the groups of people that care most about them. As an example, let's say that there are five groups of people with whom you want to share the bulk of your events/media:

  1. Your Son's soccer team

  2. Your daughter's soccer team

  3. Families at your kids' school

  4. Your core family

  5. Broadly with all your family and friends

So, you would create or be part of an album for each one of those communities. As you are going through the events you've curated in your private album, you would use the option move each event (and related media, individuals, places) to the appropriate album.

Benefits of this approach

The benefits of this approach are:

  1. The people who get to access/enjoy the media and stories associated with these events has to be defined only once, not each time you want to share another event

  2. Album members get notified every time a new event is shared with them

  3. They also have easy ways to view/filter/search all events if they're looking for specific ones; this is especially useful after building up a collection of events over years

  4. If they, in turn, want to share an event with another circle of people, it's easy to share that event with another album (not move it)

 

When you read articles by experts on how to launch your product, they all say you should be able to build and launch your minimum viable product (MVP) within weeks or months, so you can gather user feedback quickly and determine if you have any hope of achieving product-market fit (PMF).  I knew this, and yet our journey for GreatAlbum has still grossly violated this guideline. Some of the factors were by choice, and some very unexpected.  

Built MVP; Launched Private Beta

When I assembled a small team to develop the GreatAlbum MVP, I thought it would take us about six months to get the MVP up and running. I knew it would be longer than experts recommend, because my team would be learning Drupal on the job, with help from an expert consultant. And then of course COVID impacted the team's productivity. So, it took us 8-9 months to launch our MVP in November 2020.

Priorities from User Feedback

At that point, we ramped up our first 15-20 users and we did start to get some good feedback. From that, we knew there were three major features that were missing:

  1. Media Import: While users could manually link individual pictures from Google, we needed to create much more scalable ways to import and organize media from Google Photos 

  2. In-Line Comments: The content streams on the home page and on album pages needed to allow users to comment on content right in those streams, rather than having to click into the content item and comment there

  3. Notifications: Users needed to be able to specify when they wanted to receive notifications about new content, comments, likes, follows, etc. - either in the app or by email

Media Import

We already knew that we would have to build the Media Import functionality, so we developed a custom module that we launched in February. 

Rebuild on OpenSocial

With the other two, we looked at options to use contributed modules or to build our own. In the end, we decided the best course was to take advantage of the great social functionality that the OpenSocial distribution of Drupal has developed over the past five years. Unfortunately that meant taking all the functionality and theming we had developed on native Drupal and porting it over to an installation of OpenSocial distribution. So, in February, we paused our Private Beta and got to work on this.

Beta5 & Beta6 Sprints

Our Beta5 Sprint installed OpenSocial and extended the architecture/functionality with additional content types (Articles, Individuals, Places), relationships between two content types, and views to display them within and across albums. Oh, and we also renamed Groups to Albums (see why).  Then our Beta6 Sprint introduced Media Types (which don't exist in OpenSocial), media views and relationships with other content.

Restarting Private Beta

We're nearing the completion of porting GreatAlbum onto an OpenSocial distribution, and really excited to restart our Private Beta program with much more robust user engagement and feedback. This Private Beta has taken far longer than we expected to evolve, and we've probably made as many mistakes as we've avoided, but it's just part of our journey.