I migrated from Lightroom to Darktable (again)
The irony. I know. I wrote about how I migrated from Aperture to Lightroom 10 years ago.
But a lot of things have changed in the past 10-ish years, made me migrate again:
- Adobe goes all-in in the subscription model, while I only need Lightroom (I only need a tool for asset management and raw development);
- I stopped using macOS since 2020. I also stopped using Windows since, uh, 2004-ish? And that’s the only 2 OSes Lightroom supports;
- The migration actually started before 2020, while I was still using macOS, because the phone cameras are getting better and better and I use my non-phone cameras less and less, so it’s hard to justify the price of Lightroom (or whatever Adobe tries to charge for subscription).
Given the circumstances, Darktable is the nature replacement: It’s free and open source; It supports Linux; It’s a tool for asset management and raw development (with good geotagging support).
Although the decision to migrate from Lightroom to Darktable is easy. The actual migration is not that easy: After you have used Lightroom for years with an established workflow, it’s hard to adapt to a new workflow with Darktable. The 3rd point above and the pandemic doesn’t help either: I only took a handful of raw photos in the past few years so I had very little chance to get familiar with the new workflow.
With a few trips since the end of last year, and also some improvements of Darktable itself, I think I finally get used to the Darktable workflow.
First, some backgrounds:
- I almost use Darktable exclusively from Crostini on ChromeOS devices (a Chromebook that travels with me and a Chromebox at home). I do have a Linux server at home but it’s mostly headless.
- I also pay for Google Drive’s 2TB tier and sync all my photos to Google Drive. That was a decision I made back from 2007-ish after a harddrive failure caused me to lose some of my photos. With redundancy, multi-region, etc. Google Drive does backup much better than what I do. I use rclone for Google Drive access on Linux/Crostini (although Crostini has “native” Google Drive support via ChromeOS, for large syncs like photos rclone is still much faster).
Since I “roam” between computers, I have two shell scripts, sync-photos-to-drive.sh
and sync-photos-from-drive.sh
, that’s just 2 one-line shell scripts:
# sync-photos-to-drive.sh:
rclone copy --progress ~/Photos gdrive:/Photos
# sync-photos-from-drive.sh:
rclone copy --progress gdrive:/Photos ~/Photos
On Google Drive (and local ~/Photos
), I organize my photos by folders in the format of Photos/yyyy/mm/dd.description/
.
In Darktable, I just import the whole ~/Photos
directory into the library, with “recursive” and “exclude jpg files” checked. Darktable puts local changes in the sidecar xmp files alongside the raw photo files, so the changes I made on one machine are also auto applied after I synced the files to another machine.
After importing new photos into Darktable, these are the things I typically do:
- Geotag (I use Geo Tracker on Android to get gpx track files while taking the photos)
- Adjust white balance/colors, if needed
- Denoise, if needed
- Rate/reject the photos
- Export selected photos to jpg/webp format (the ability to export webp files is a nice surprise from Darktable, those tend to be smaller in size than the equivalent jpg files. Google Photos supports them, but Pixelfed, not so well)
- Exit Darktable and sync the changes (mainly the xmp files) back to Google Drive
Here are some of the Google Photo albums from Darktable (the majority of them have mixed raw photos and phone photos):
And a Steller’s Jay on Pfeiffer Falls Trail, in webp format: