I use a mix of photo gallery software, I use Flickr for some things, notable stuff that’s public for other people to use, I also use Fuzzy Monkey‘s My Photo Gallery, which is simple, but has some neat features (like auto thumbnail generation, keeps photos and thumbnails seperate, allowing me to use Unison/rsync to keep my online photos in sync with an offline copy, simple passwording etc).

But I’m beginning to dig tagging, so I hoked about for some web gallery software that does this, and there seems to be a real shortage, I found Original and a modification of it that supports tagging, but it mix of php & python, and I couldn’t get my head round all of the Python.

So this got me thinking about what is the best way to generically tag my photos so that the will work in my online gallery and with my offline tools. Microsoft have added a couple of tags in the EXIF standard, eg XPKeywords. There is some stuff on XMP, Extensible Metadata Platform from Adobe. IPTC gets mentioned quite a bit, and is also supported by Google’s latest incarnation of Picasa, but is supposedly being phased out in favour of XMP.

Notably all of this is support by Phil Harvey’s ExifTool, which is a Perl library and CLI tool.

All of this comes under metadata, i.e. it’s data about the images. So, where to start? Well, I think I need to do the following:

  • Decide which format to support! (EXIF XPKeywords, XMP, IPTC etc)

    (actually, the gallery should probably support multiple methods, but let’s try and focus on one to start with)

  • Extend My Photo Gallery so that it can scan it’s directory of photo data & build a tag database

  • Extend My Photo Gallery so that is can generate a tag cloud.

  • Extend My Photo Gallery so that it can manage tags in the management UI.

Easy eh?

Where to start? Minimal overhead to start with, probably use SQLite for the tag/photo database, make it scan photos for tags, then work on building a tag cloud. jbrout looks like the thing to start tagging with. Then add tag management to the web UI.

Here’s some of my background reading: