File & Data Storage

The question of where and how photos keeps files and data has stalked us for some time. This page is an effort to approach it in a systematic manner.

Potential Goals

These aren't decided on and may conflict with one another.

Primary goals:

  • Allow storage on remote and removable storage devices
    • Could be all photos or subsets
    • Could involve caching/syncing part of a larger photo collection locally
  • Allow backups and data migration
  • Data recovery when Photos isn't present, including:
    • Original image files
    • Edits
    • Manually created albums?

Related questions:

  • Should Photos manage how files are organized on the filesystem?
  • Should the images that are presented by Photos be visible as files on the filesystem?
  • How to handle the case where someone has invested time in organizing their photos on the filesystem?
  • To what extent should Photos interoperate with other photo editors, managers and operating systems?
  • Should it be possible to store files and data so that they are picked up by 3rd party cloud providers (NextCloud, Dropbox, etc)?

Relevant Art

GNOME Photos

  • Picks up images from ~/Pictures.
  • No way to specify another folder to watch.
  • Edits are saved as sidecar files beside the original images.
  • Photos can be organized as albums, but there's no way to save/migrate/export this data.

Mac Photos

https://cdn2.vox-cdn.com/uploads/chorus_asset/file/3377796/Screen_Shot_2015-02-04_at_11.56.02_AM.0.jpg

http://media.idownloadblog.com/wp-content/uploads/2016/02/OS-X-El-Capitan-Photos-Choose-Library-Mac-screenshot-004.png

  • Photos are stored in library files - each one is a single file that contains a set of images and metadata. The default library is located in the Pictures folder in the home directory.
  • A library is set as the system library. This is where photos from iCloud are synced.
  • It's possible to switch to a different library by:
    • Opening a library file from Finder.
    • Changing the default library from the settings.
    • Holding the option key when launching Photos, which shows a choose library dialog.

Windows Photos

https://www.howtogeek.com/wp-content/uploads/2017/08/img_5987a3cad0652.jpg windows-photos-collection.png

  • Collection is a chronological view of the content from the OneDrive Pictures folder (there's a setting to show photos from all locations instead).

  • It can optionally highlight the most recently imported batch of photos, and auto-generated tags.

https://www.howtogeek.com/wp-content/uploads/2017/08/img_5987a49f11e8b.png windows-photos-folders.png

  • Folders allows browsing photos on the filesystem. It shows directories and OneDrive accounts that have been added as "sources", either through the settings or by importing them; and highlights the most recently imported batch of photos.

windows-photos-import-02.png

  • You can import from a folder or a device:
    • Importing a local folder adds the directory to the list of sources.
    • Importing from a device - the dialog shows the destination directory; it also allows changing the destination location (selecting a destination which isn't a source adds it as one). Import also has an option to delete the originals.
  • When editing there are options to save or save a copy - so it's quite transparent as far as the file system is concerned.

Lightroom

https://helpx.adobe.com/content/dam/help/en/lightroom/help/applying-adjustments-develop-module-basic/_jcr_content/main-pars/image_0/wf_devmodule_1000.png

  • Files are manually imported. Imported files remain in their original locations on the filesystem.
  • Imported files can be organized using collections and exported.
  • Metadata about files is stored in catalogs - these are database files. You can have multiple catalogs and have to specify a location for each one. It's possible to export a subset of the current catalog as a new one.
    • It sounds like catalogs can be a bit fragile, since they are largely composed of links to files across the filesystem.
  • Edits can be stored as sidecar files, although this is off by default.

Darktable

https://www.darktable.org/about/screenshots/screenshot_lighttable.jpg

  • Files are manually imported. Imported files remain in their original locations on the filesystem.
  • Imported files can be organized as collections.
  • Edits are stored as sidecar files by default.

Shotwell

shotwell-empty-results.png shotwell.png

  • Local content under the top-level source directory can be optionally auto-detected, or only manually added. The top-level source directory defaults to ~/Pictures. Opting for auto-detection with 56G worth of JPEG and RAW images on an Intel i7 with SSD froze Shotwell 0.26.4 for close to an hour.

  • Folders that were added as sources can be browsed through the sidebar.
  • You can import from a directory, a device or another application:
    • Importing a local directory adds the directory to the list of sources in the sidebar.
    • Importing from a device copies the content to a sub-directory under the top-level source directory. The format of the sub-directory defaults to hierarchical year/month/day structure.
    • Used to support importing the image library from F-Spot. F-Spot's demise has led to this code being retired recently.
  • Uses timestamps to group photos into events. Events can be merged together.
  • Doesn't support albums per se.

  • Edits are stored inside a SQLite database in ~/.local/share/shotwell/data/photo.db. No support for sidecar files.
  • Can detect renamed or moved files, as long as they stay within the top-level source and their content, hence the checksum, hasn't changed.

Comparison

GNOME

Mac

Windows

Lightroom

Darktable

Shotwell

Remote/removable storage

Files visible from the filesystem

Interoperable with other apps

✗¹

Save subsets of the photos database

Browse directories from the app

Usable with 3rd party cloud

¹ Although you can export an image and then edit it elsewhere

(Presence of a particular feature on this table isn't necessarily a positive result.)

Discussion

Tentative Design

Comments

Design/Apps/Photos/Storage (last edited 2018-05-30 13:52:13 by DebarshiRay)