Saturday, March 17, 2012

iPhoto 8 to Aperture 3.23: Migration notes

I'm migrating my image and video libraries from iPhoto to Aperture. This is a long and tedious process since the fully automated importer doesn't completely work, there's no Aperture help file documentation and few web discussions or knowledge base articles. Unfortunately iPhoto to Lightroom migration is even harder.

If you have older iPhoto Libraries like mine, you need to understand how Aperture Stacks work. That's because in old iPhoto any edited images are treated by Aperture as 'externally edited' versions of an iPhoto original and they "stack".

I hope this process will improve with Aperture 4. It is one of the most miserable computer tasks I have undertaken since the days of hacking WordPerfect printer drivers with a hex editor.

Why now

  • iPhoto 9.x (11) is a functional regression from iPhoto 8. I believe Apple has ceded the pro market to Adobe, and now markets Aperture to prosumers (that's me). That means iPhoto will continue to go downmarket even as it converges with iCloud and iPhoto for iOS. I don't want to go there.
  • Aperture 3 is a better photo management tool with only one gaping omission -- there's no place to store album descriptions (only events have descriptions).
  • I can work on Projects while traveling and integrate them.
  • I'm tired of working around two different sets of bugs. [1]
  • I need to be aligned with "power users" -- iPhoto users don't have much energy any more

What is lost

  • If you are not very careful, you will lose all of your iPhoto Titles.
  • Aperture is less stable than iPhoto. Aperture users learn to kill it and repair its database.
  • iPhoto 8.x has elegant shortcuts for creating and managing Events that Aperture lacks (splitting, etc.). iPhoto Events display is also much better than Aperture Projects in many ways. In iPhoto it's easy to go from an image to the container Event, in Aperture I can't see how to do that (the columnar browse view does tell you the Event container name and there's probably an AppleScript workaround. It's a funny miss.)
  • iPhoto 8 keyword entry is more efficient and better developed than in Aperture (though Aperture has other keyword features). I used the Command Editor to assign five keywords to numbers, I didn't like the default keyword modifier. (If you have a numeric keypad you don't need to worry about this.)
  • You can quickly edit photo captions in place in iPhoto. In Aperture you need to use the metadata inspector. It's slower.
  • In iPhoto when you select multiple photos you see a summary of the selection with a date range. In Aperture you only see metadata on the first photo selected.
  • iPhoto 8 has smarter batch change options
  • Aperture Libraries are about 25% larger than iPhoto Libraries for the same number of images. This might be partly related to how Aperture creates thumbnails for 'stacked' iPhoto images belonging to multiple Albums.
  • Quick navigation from iPhoto to image file.
  • I'd been processing raw images in Aperture but exporting JPEGs to iPhoto. I liked this as an archival strategy, RAW images won't be readable in ten years. I was, however, falling behind in processing images. Working only in Aperture will be faster even though the RAW images are significantly larger than the JPEGs. I've started shooting JPEG for less important jobs to reduce the storage consumed.
  • "Keepsakes" like Books - though I recently discovered that iPhoto 8 can't render the books I created with earlier versions - the layouts are gone. Whatever new layout one chooses there is some likelihood of losing content. Aperture did import a 'book' as though it were an album.
  • My iPhoto Slideshows (though I only ever did 1-2 of these) - UPDATE: I did get at least one when importing via iPhoto Library
  • It appears Aperture cannot import even modern iPhoto contrast settings (may differ in iPhoto 9?)
  • Aperture's video format support is weaker than iPhotos and it has video thumbnail creation bugs.

What I tried (and discarded)

I thought I could use IPLM to create a "clean" import Library while also allowing me to avoid the 'duplicate' image problem with older Libraries that have JPEGs for both current and revised images. I found, however, that Aperture does a better job importing an iPhoto Library than IPLM does migrating or merging libraries. In particular IPLM cannot recreate Smart Albums, but Aperture can. Also my IPLM migrated Library image ratings didn't import into Aperture, but the native iPhoto Library images do keep ratings.

What I'm doing now

I'm converting each iPhoto Library into a separate Aperture Library. This makes comparisons easier. Then, when i'm satisfied not much is lost, and I've moved over any missing Descriptions, I can start to combine the Aperture Libraries into one. Given the size of these Libraries and the backups needed it's wise to budget for some big disks and something like OWC's Newer Technology Disk Dock.

  • Prior to migrating an iPhoto Library I first reorganize it to be closer to the Aperture Model
    • Consolidate Events into Larger sets. For > 100 events/month I set up an event for each month and use that for most photos. Special 'events' stand alone.
    • Set a Key Photo for each Event and move Event Descriptions into the Key Photo Description. (I'm not certain, however, that Aperture preserves Event Key Photo when it turns Events into Projects.
    • Eliminate Albums that can be represented as Events, and move Album Description to Event Description. If an album is retained, set a Key Photo and move Album Description to Key Photo Description. If necessary create an Album Specific Key photo (you can assign these to a special "Album Event". For example
      • Take a screenshot of the description, save as PNG. Then copy the Description textDrop PNG into Event/Album and set date time so it's earliest by a minute.
      • Paste Description text from Event/Album into Image Description field.
  • Backup the iPhoto Library
  • repair iPhoto Library if using iPhoto 9.x or later. I run recover orphaned photos (backup first) in iPhoto and I compress the database.
  • Create a new Aperture Library for the import with these settings
    • Turn off Facebook synchronization
    • Turn off sharing photos with iLife (no preview generation)
    • Disable Faces
    • Disable Places
  • Choose Import iPhoto Library
    • You must set Version Name to Master File name. If you do this then your iPhoto Titles will become Aperture Version names and iPhoto Descriptions will become Aperture Captions. (The Aperture Title field is not used.) If you do not do this your iPhoto Titles will be lost. (It's ok throw your head back and scream now. I think this is a bug [2].)
  • From empty Aperture Library import iPhoto Library. Let it run. On my 27" iMac a large Library took about 8 hours to import (but I'd forgotten to turn off preview and Faces, that about doubled the time). Be sure this completes before doing anything else. Activity view should be empty.
  • Validate the the import succeeded
    • Filter on iPhoto Original, number should match number of items in Original iPhoto
    • Spot check for errors - confirm image counts match (keyword 'iPhoto Original', confirm event counts match.
    • Make sure Moview counts agree. Run a sample of Movies.
    • I spend a week or two on validation before I go to the next step.
  • When the import Library has been validated it's time to import it into the Master Aperture Library. I back up my Aperture Library prior to this step.
  • Prior to import process run repair Aperture Database on the Master Library to remove Aperture errors.
  • Import the Aperture Library you just created into the Master Aperture Library.
  • To show iPhoto metadata appropriately, change all metadata settings (at least six places!) to display Version Name, Caption, Keyword and Ratings in that order.
  • Keep old iPhoto Library onto an old hard drive for safe keeping for a year or two before deletion.

Working around Aperture's video import bugs

Importing videos from iPhoto was grueling. I've addressed this in a separate post. This goes beyond mere bugginess into realms of "never tested". I was able to move all my videos, including version names, captions, descriptions and so on -- but it took a lot of work. I had to combine iPhoto Library import with a separate import process using the iPhoto media browser, then use a range of Aperture views, queries, metadata inspection and so on to get a complete set with no extras.

Managing the botched video import made me an Aperture expert.

Keyword cleanup

It seems that Aperture is turning Project/Event names into keywords - at least under some conditions. No photos are assigned those keywords. They make quite a mess of the Keyword view. I'm deferring major keyword cleanup until I complete iPhoto Library import. I consider this one to be a bug.

Be very careful about rearranging the keyword hierarchy. Aperture assigned the keyword 'iPhoto Original' to over 18k images. When I moved that within the hierarchy the rearrangement pegged all my CPUs and seems likely to run overnight (or crash).

Reviewing Mistakes

Once you think you've managed your migration it's time to look for problems. You need two monitors, one for iPhoto, one for Aperture. Initially my photo counts matched but I had one extra Project/Event in Aperture.  On inspection a Facebook thumbnail had leaked into Aperture, perhaps related to Aperture's quirky Facebook support -- and it created an extra Project. I deleted that, but now my image counts were off (I'd collapsed the stacks, otherwise there are many more images in Aperture than iPhoto). I lined up my images so I could compare end-of-row images, then did a simple split-set search until I discovered a bizarre little iPhoto image that OS X couldn't recognize -- but it somehow rendered as a thumbnail. Aperture had been unable to import it (an error message would have been "nice").

Next is using Aperture's list view to look for abnormally small images (accidental thumbnail import), inspect by camera type, etc. There's no way to inspect tens of thousands of images for errors, so if my counts are correct I proceed with sampling by image type, camera type, etc. See above for the nighmarish task of resolving video import bugs.

Understanding Stacks and Splitting

If you've been using iPhoto for years then some of your imports will include two images -- original and 'externally edited'. (Externally edited is how Aperture classifies images edited in old versions of iPhoto).

During import these pairs are "stacked" and the "externally edited" is marked as the "key photo" in the stack.. Some things you need to know:

  • These images are stacked by Aperture, not auto-stacked. If you split the stack Aperture can't automatically unite it again. In my experiments a 2-5 sec auto-stack rule did stack most such images after I split them, but not all. So don't unstack recklessly!
  • Option - ; and Option-' will collapse and expand all stacks.
  • You may want to delete one member of the stack, perhaps the edited one, and redo the edit in Aperture. Unfortunately, the 'externally edited' one may belong to an Album. There's no way in Aperture to determine what Albums an Image belongs to.(I found an AppleScript that claimed to produce a list, but it didn't seem to work when I tried it.) In my testing it appears that if one member of a Stack is in an album then both are, even if the stack is later split. So it seems to be safe to delete either the original or edited version as desired.

The best guide to using Stacks is to browse the keyboard shortcut pamphlet or PDF.

Combining Aperture Libraries

  • I chose to convert each of my iPhoto Libraries into a single Aperture Library, then I combined those into a single Aperture Library. I discovered that merging Aperture Libraries is a risky business - in particular merging two smaller Libraries crashed Aperture. Expect frequent crashes.
  • I recommend backup the target Library prior to the Combination step (in addition to the usual backups).
  • Be sure no iPhones or other mountable devices are connected
  • Reboot your machine prior to attempting a merge
  • Consider repair Database prior to merge.
  • You can choose either "add" or "merge", the default is merge. I think the Import Aperture Library with Merge resolves duplicate photos (which is only safe if the developers are competent). More importantly, I think it tries to combine keywords rather than create separate keyword taxonomies (trees). That's a big plus.

See also

- fn -

[1] It's easy to find Aperture bugs btw, though usually restarting the app clears them. I thought I'd found a very nasty bug with iPhoto events, but it turns out it's simply very easy to accidentally select and merge multiple events when only one is wanted.

[2] Aperture handling of iPhoto Title data depends, mysteriously, on the iPhoto Version Name import setting that Apple documents as: "... choose Master Filename from the Version Name pop-up menu to have your files stored using the current master filenames from your camera or card". (Since we're importing from iPhoto, and not a camera or card, this documentation is misleading.)

In reality, during iPhoto import, setting Version Name = Master Filename does nothing of the sort. Instead, this is what happens:

  • The filename is equal to the filename used in iPhoto
  • Aperture.Version name is set equal to the iPhoto Title.

I don't know what Aperture would do if we set Version Name = a Custom name where one of the custom name components was "Master Filename". Would it still treat iPhoto.Title as "Master Filename"?

I think there are two bugs here. I think Aperture "Version Name=Master Filename" was supposed to set Aperture.Version to the file name, and that there was supposed to be ANOTHER drop down (and a custom name tag) that of the form "Version Name=iPhoto Title".

I've submitted this bug to Apple's developer bug reporting system as 11163418.


Darren said...

This is a fantastic post and very helpful!

Unknown said...

Great post Gord. Sadly, and you hint at this, the converted Caption is only on the original image, not the "Externally Edited" image. So to keep your edits and caption you need to copy/paste. A big hassle for thousands of imaged imported.