I have not yet found a tool I like to help me manage my digital photographs. I've looked at a number of them, and they are all aimed at other people than me.

Here's the workflow I want to have, more or less:

  • Shoot some frames.
  • Download images (via card reader) to a suitable location.
  • Make backups of the images, so that there's two copies on two hard disks.
  • Format memory card.
  • Process new images (from one or more shoots): add tags, rate images, set ownership and copyright fields, etc
  • Automatically, in the background: generate preview images from RAW images, and do other heavy tasks, without interfering with interactive use.

After this, things get non-linear. Some of the following things will be done to some but not all images.

  • Quickly, efficiently find images based on various criteria.
  • Set raw conversion parameters, if defaults are not OK. (Note that raw conversion should be done as needed, not necessarily for all images at once, except for preview generation. If raw conversion parameters are changed, previews and thumbnails should be updated.)
  • Edit images using internal editor for basic stuff, external one for more complicated changed. Basic stuff includes rotation, cropping, some color manipulation, sharpening, perhaps a bit more. Multiple versions of an image should be possible, and the original camera-generated file must never be modified at all. Ideally, modifications are stored as "scripts" rather than new bitmaps. Scripts should be applicable to several images, since I might need to edit a series of photos in the same way. Also needs to support editing the photo in the GIMP, when that is needed.
  • Export images, in various formats, perhaps to online galleries or online printing services, or just to e-mail people.
  • Print images on a local printer. Perhaps also via online printing services.

The program that seems to most clearly match my desires is Adobe Lightroom, but it's non-free and therefore not an option.

I thought I would see how hard it would be to make something that I would find acceptable. Turns out, it is pretty hard, or at least it is a lot of work.

But a proof-of-concept prototype only took a couple of weekends and some mornings and evenings. It already does many of the things I care about, but it does them very, very badly, just well enough to give a glimpse of what version 1.0 should be like. The user interface is ugly and has many rough edges; the database schema is probably quite childish, but I wouldn't know (this was my first time using SQL); the Python code is horrific. I expect pretty much everything will have to be re-done. I cut every corner I could think of to get this done quickly.

Dimbola screenshot

The code can be found via https://launchpad.net/dimbola . There is no .deb package yet, but you can run it from the bzr checkout. Do the following (works on Ubuntu karmic, at least):

bzr get lp:dimbola
cd dimbola

You'll need at least the following installed (Ubuntu karmic packages names in parentheses): python 2.6 (python), PyGTK (python-gtk2), pyexiv2 (python-pyexiv2), dcraw (dcraw), netpbm (netpbm). Versions in Ubuntu jaunty should also work.

The program currently only accepts Canon RAW files (*.CR2). I have made a small selection of samples available at http://files.liw.fi/dimbola-test-images.tar.

However, please don't use this version for anything real. It really is just a proof-of-concept, and I don't want to have to support it in the long term.

A good version would probably take 6-8 weeks of full-time work.

I am now wondering whether to make this into a real project so other people might find it useful too. If I do, I would welcome some help. Even a small amount of help would make things go much faster. Especially the following areas would benefit from help:

  • database design, especially for performance when there's hundreds of thousands of images in the database; this would be good to get as right as possible from the beginning, to reduce need to convert databases
  • user interface design; also, implementation of the design in Glade
  • graphic design: icons, gallery themes
  • graphics programming: RAW development, basic image manipulation, color management
  • user support: web site or wiki, documentation, etc
  • project hosting management, perhaps getting a dedicated domain
  • profiling, stress testing, optimization
  • release management; bug management
  • packaging, collaboration with distributions, porting to other Unixes than the one I happen to be using when developing (perhaps even Mac and Windows?)
  • testing by and feedback from real users, particularly serious photographers
  • general development: writing code, reviewing changes

Anyone want to help me with anything? If so, please e-mail me at liw@liw.fi.

I don't actually expect to compete with F-spot, digiKam, and other existing applications, never mind Adobe Lightroom and Apple Aperture, except in small niches. Would you like to expand it to include your niche? If so, help me help you and let's make it a tool for both of us.