Deprecated; I now use Lightroom which addresses all of these concerns and more. (Vendor lock-in is not an issue as it writes all metadata to the file's sidecar). Not open source, but it's still really good.
I am not a fan of monolithic photo management programs, such as iPhoto. They tend to use a database for storing metadata, which leads to problems of corruption, vendor lock-in, etc. I have created a small set of scripts (python and bash) which let me:
- wf-ufraw: View RAW files, and save development settings to sidecar files (uses UFRaw)
- wf-ufraw-batch: Batch convert RAW files to .jpg after sidecar files created
- wf-exif: Tag files with common EXIF tags; currently copyright information, location, headline (uses exiftool)
- wf-library-insert: Insert files into library based on user criteria (currently defined as $LIBRARY/year/month/location), with subfolders for work in progress (.xcf), raw (.orf), etc..
I can then browse these images using the system's file manager, or search using the system's metadata search facility. Since all metadata is stored as EXIF / IPTC tags on the images themselves, I don't have to worry about a single database being corrupted; if I want to import into another image management program, all my changes will be kept.
Recommended workflow when using these scripts is as follows:
- Download images to ~/Pictures/Incoming
- Optional, if using RAW images without .jpg proofs:
- Set UFRaw to save conversion settings to .ufraw sidecar file, instead of converting to .jpg immediately
- Call 'wf-ufraw' to list all files in current directory which don't have .ufraw sidecar files associated with them. Delete obvious non-keepers
- Batch convert to .jpg using alias 'wf-ufraw-batch-ls' (ufraw-batch --overwrite *.ufraw)
- Delete any files which you are not planning to keep. If you like a picture as a snapshot, but will not be doing much / any post processing work on it, you can delete the RAW and keep the .jpg
- Optional: use Gimp to do whatever post processing work you want, and save the image as <FILENAME>.xcf.
- Once you are content with the images as they currently stand, tag them with location / headline using 'wf-exif'. (If you have downloaded images from multiple locations, make sub folders and move all images from the same shoot into each folder)
- Move files into library using wf-library-insert, using <LIBRARY>/YYYY/MM/Location directory layout, with subdirectory 'raw' for raw files and .ufraw sidecar, 'work' for .xcf Work in Progress files.
You can download a .tgz of these scripts here. They contain no configuration settings - change the script to change its behaviour. These must currently be extracted to /usr/local/bin; if you place in a different location, please modify wf-ufraw to reflect the new location
These scripts are released under the GPL. If you wish to include them in a non-GPL'd project, feel free to contact me about dual licens ing.