I’m not a photographer and this post is targeted to non-photographers.
I think sharing photos with family and friends is an unsolved problem.
Hear me out.
Let’s say you’re at a family gathering.
You and others take a few pictures.
How will you share them with each other?
Well, maybe you’ll use Google Drive or Dropbox or other service.
You’ll create a new folder for the new album and put your photos there.
If you’re in luck, others will send you their photos, and you can pull them into
your folder.
You’ll then share this folder with them.
You’ll add their accounts if they have one, or create a special link and send it
to them.
Alternatively, you already have a folder that you’ve shared with others.
In this case, you’d create a new folder for the album in this shared folder and
put the photos there.
I’ve witnessed variations of this story many times.
And there are a couple of problems with it.
Who owns and takes care of the storage account?
Will they keep doing it for years?
What happens when the free space runs out?
Who pays for more?
What if multiple people share photos from the same event from different
accounts?
How do you aggregate them?
How do elderly people access digital family photos?
Do they need an app?
Do they know how to use it?
What if Google, Dropbox, etc. decides to lock you out of your account?
I think that to solve these problems we need to reach into the past when we
didn’t all have pocket cameras and bottomless albums.
My solution is to take responsibility for the photos.
I feel that we’ve become intoxicated by the fact that we can take thousands of
pictures without any consequences.
And I think we need a rehab.
We need a habit of organizing our photos and not taking so many of them that
organizing them is a dreaded task.
Remember your grandma that had all your family photos nicely sorted in albums?
I think we could learn a thing or two from her.
After almost three years of intermittent experimenting and tweaking I think I
have a solid system of storing, organizing and sharing photos.
Let’s start with sorting.
I keep my photos segregated in directories by year, month and album name.
Album names are determined by directory names.
E.g. photos from vacation in Japan are in 2023/2023-08 Japan
and random photos
from August 2024 are in 2024/2024-08
.
The limit of two levels of nesting makes it easy to browse and search, while
keeping the number of child directories relatively small and easy to scan.
Having a directory per album is also convenient for sharing.
You can share the whole directory with somebody to share the album without
selecting individual photos.
There’s one more rule.
Inside some album directories there’s a child directory named other
.
This directory is ignored most of the time and is never shared.
It’s basically a trash directory.
Photos that I rejected because they were not good or interesting enough.
I delete them after some time to reclaim disk space.
Now hardware.
I have a NAS based on Odroid H3+ with two 4 TiB IronWolf hard drives.
They make up a mirrored ZFS pool, with a special dataset that’s only for photos.
It’s periodically backed up to a similar NAS at my parents house.
This photo filesystem is accessible after authentication via SMB from local
network or from the internet through a WireGuard VPN.
For photo ingest I use Rapid Photo Downloader.
However, SMB is mostly good for album management and ingest.
It’s not good for browsing because of small but annoying delays when loading
large photos even through a 1 Gbps link.
It’s also not well-suited for sharing albums.
For that I created photobrowser.
It’s a lightweight web app that lets me browse all albums from my PC or phone.
It uses the filesystem as an album database.
Furthermore, it generates preview images, thumbnails and proxy video clips so
that I can view the albums even with a slow internet connection.
But the main selling point of it is the album sharing system.
I can create sharable secret links and attach any number of albums to them.
So I have one for my parents, one for my father’s side of the family, one for my
mother’s side and more for my friend groups.
Photobrowser is also designed to run as multiple instances on the same machine.
On my NAS there are two: one for me and one for my fiancé.
Cumulatively, we have three photo libraries: one is mine (for my personal photos),
one is hers (for her personal photos) and the third one is common (for our and
some family photos).
You might wonder how there are three libraries but only two photobrowser
instances.
There is a symlink to the common directory in each of our personal datasets and
photobrowser follows it.
It’s quite convenient because the name of the symlink is common
, so
common albums’ paths start with common/
(e.g. common/2023/2023-12 Christmas
).
The most challenging part of writing photobrowser was generating the photo and
video previews.
Photobrowser stores the proxies next to the photos in special directories:
.sh_thumbnails
for proxy images and .sh_proxies
for proxy clips (inspired by
XDG Thumbnail Managing Standard).
I wanted to generate them on the fly as photos are added to the library, so I
used inotify.
The hard part was handling the various events properly.
Photos can be copied or moved into or out of the library or moved around inside
the library.
They can be deleted or renamed.
The same goes for directories where the photos reside.
All of these events must be handled perfectly, or the previews become out of sync
with the photos.
Fortunately, it seems to be working quite well with a few bugs already fixed and
probably a few still waiting to be discovered and fixed.
I’m aware that this system doesn’t solve all the problems that I named above.
But it’s proven to be convenient and useful.
I already got some compliments from family members about how fast photobrowser
is compared to the solutions they’re used to.
I also got some bug reports from friends, which is not as supporting but
admittedly more useful.
My fiancé and I use it often to show or share our photos to family and friends.
All in all, people were thrilled that someone finally made the effort to organize
photos from events and were glad to have access to my photo library.
See you next time!