why do all the photo import programs suck?

Twice now I've tried to set up what was apparently a best of breed linux graphical photo program for less than technical family members who got a digital camera. Both times it ended up sucking.

The first time, Anna's camera needed to use gphoto2 to pull pictures out of its proprietary usb interface. Anna has been using linux for something like 8 years now and I tried her on gtkam and we found it was hard to use and crashy. I asked her to describe what would happen in her ideal world when she plugged the camera in, and she wanted it to save the photos to a directory with the current date in it, and delete them from the camera. A quick shell script later and it did just that. Problem solved.

This time, at my Dad's, the camera was some "Vivitar" bought at a discount store without consulting me. Luckily it did work with my Dad's linux box, in fact this camera, which the gphoto2 library is not familiar with, is a standard usb storage device with a "dcim/" directory that holds jpeg files of the pictures. So getting at the pictures is trivial, if you dont mind using the command line.

Now how to make this approachable for a novice user who's using gnome? The new gnome volume mamanger stuff in gnome works well, bringing up a message when the camera is plugged in, that asks if the user wants to import their photos. Then it runs a program; this defaulted to gtkam; since gtkam does not seem to support cameras that can be mounted as filesystems, this is a strange choice. I searched for other gnome photo programs and all I could find is gthumb.

I rather laboriously taught my father how to drag and drop photos from there to folders in the gnome desktop; nautilus has some annoying glitches that make this less than easy for anyone with less than perfect eyesight and eye-hand coordination to drag about big image icons. Anyway, this seemed to work, but it turns out that ghpoto does icon caching and this screwed up after pictures were deleted from the camera.

At this point I happened to set up photo importing for the same camera in windows, and to give the linux programs credit where it's due, this sucked even more, especially since we somehow seemed to have three programs all launching when the camera was plugged in and competing to manage the pictures on it. To the extent that it worked at all (I counted 30+ clicks to move 4 photos off the camera using the better of the three windows tools), I noticed a certian resemblance to the ideas behind how the gnome/gtkam/gthumb stuff worked. Hmm..

Back to the gthumb problem, I couldn't find a way to turn off this caching, so I threw up my hands and wrote the following shell script and made gnome-volume-manager run it:

!/bin/sh

Move photos from digital camera to Desktop/Photos, keeping names unique.

sec=$(cat $HOME/.movephoto-sec) sec=$(expr $sec + 1) for file in $(find /media/usbdisk/dcim -type f); do mv -f $file $HOME/Desktop/Photos/$sec.$(basename $file) sec=$(expr $sec + 1) echo $sec > $HOME/.movephoto-sec done nautilus ~/Desktop/Photos

Now my Dad just has to plug in his camera and a minute later his Photos folder opens up with all the new pictures moved to it and ready to be attached to emails or printed, and his camera is empty for the next set of pictures. This turns out to be just what he wanted all along.

I only have a sample size of three or four, but so far all the users whom I've been able to observe want it to work this way. As John Corbet wrote,

the best approach is to get a modern camera which implements the USB mass storage protocol. Then you can simply mount the camera as a disk, move the image files across, and be done with it. It's fast, easy, and for those who prefer not to use the mv command, setting up hotplug scripts to launch a file manager is relatively straightforward.

Perhaps all the labourious selection of photos, copying off the camera, and deleting made sense back when digital cameras were unreliable, and image transfer was slow, and disk space maybe scarce, but it seems to me that it doesn't make sense anymore. Now time and simplicity rule; get the pics off the camera and onto disk and if necessary get a file manager up so the user can deal with them in the same way they'd deal with any other files.

Now I'm tempted to generalize the two programs that I've so far written to suck images off of these two cameras to a package that can just make it all work.