Loud ramblings of a Software Artisan

Tuesday 22 March 2016

Exempi 2.3.0 and Rust...

Last week I released Exempi 2.3.0. It adds a couple more APIs and fix a few bugs.

Also I have now released my first Rust crate, that provide a Rust API to Exempi: exempi-rs. Short of rewriting the whole parsing in Rust for safety — the core of Exempi is Adobe official XMP SDK written in C++ —, this will do.

Monday 1 July 2013

Exempi 2.2.1

Just a quick note to announce that I released Exempi 2.2.1. It was long overdue. It is mostly a couple of bugfixes.

Note: so that there is no misunderstanding, since people see this on Planet Mozilla, this is not a Mozilla project. But it is completely Free Software.

Here is the short Changelog

  • Bug #54011: Use POSIX API for files on MacOS. (Misty De Meo)
  • Bug #58175: Replace OS X FlatCarbon headers. (Misty De Meo)
  • Added a manpage for exempi(1).
  • Added the -n option to the command line for arbitrary namespaces.

Next release will be 2.3.0 and will integrate the latest Adobe SDK used in the Creative Cloud.

Wednesday 24 December 2008

Holiday release

Just a quick note to announce that I released Exempi 2.1. It was long overdue.

It fixes several bugs, add a few APIs and resync the internals to Adobe XMP SDK 4.4.1. My openSUSE packages have an additional patch that is not in the release (but in git master).

Thursday 24 July 2008

Guadec slides

Just a quick note to let people know that I have put my slides online. They are linked from lgo (in OpenDocument).

I'll provide PDF and HTML versions soon.

Wednesday 16 July 2008


A while back I posted and teaser, but that was all until GUADEC where, with 3 lightning talk I could present the stack and and application I'm working on, on my copious spare time(tm). Let me introduce you to Niepce Digital. For what Niepce means, there is Wikipedia. For what are the plans, read on.

Niepce Digital is meant to be an application for digital photography that will allow end to end management of the workflow, starting with the acquisition from the camera to the final printing or publishing. For those who chose the easy way it is in the same idea than Adobe Ligthroom or Apple Aperture. I have had some concept written down on paper for over 3 years, before these applications were unleashed, I just didn't manage to make anything out of it. And of course it is Free Software, that goes without saying (licensed under GPLv3 or later).

Design goal

From a development point of view, the design goal is to:

  • try to provide, leverage or reuse infrastructure. In that case this mean using Exempi, libopenraw and GEGL, and making sure the whole processing pipeline can be reused. There is hope with GEGL being used by Gimp that some of the image processing can really be shared. I started Exempi especially with that application in mind, and I'm still developing libopenraw in parallel.
  • try to make it right: don't cut corner when implementing be rather take the time to do the right thing so that in the future it doesn't have to be redone. Of course this means that the initial shot will take more time but in the end the benefit is that things will be easier.
  • try to do things progressively but surely. Better have a well working limited set of feature than a half working extended set of features.
  • try to be modular so that it is easy to implement new modules.

Feature set

The feature set I wish to see implemented is quite extensive, and the application will be divided in "modules". The first one, the library is meant to manage the collection of pictures, add metadata, etc. The second module, darkroom, is meant to perform the image editing. Image editing is not like a full blown version of GIMP, but rather a limited and most used set: image adjustements, crop, straighten, dust removal, etc, all performed in a non-destructive mode. This will be for the first milestone, with maybe a few upload modules to export to you favorite image hosting.

Digital camera RAW files will be first class citizen, and actually they should provide the best result, and not be harder to use than JPEG. Metadata will be centered around XMP for maximum interoperability. And of course, color management will be.

This first milestone is quite ambitious, and having a very good output quality will already an achievement.

As a second milestone will come web gallery generation (static HTML) and printing. That last part might actually be a lot of work, including vertically down the stack.

Now what?

I have setup for a while a project on GNA to host the source code and the repository. You can grab the C++ source code and play with it.

But there won't be a release for a while. See the first milestone above.

Monday 28 April 2008

exempi 2.0.1

Just released a bug fix version of exempi. Version 2.0.1 address issues with error handling and some building issues on non-Linux systems.

This is likely to be the last 2.0.x release. 2.1.0 is on its way.

Tuesday 1 April 2008

exempi 2.0.0

I finally released exempi 2.0.0 The changes from previous versions are only for endian detection (I let autoconf do it) and some missing includes.

Now I'll branch, keep the 2.0 branch for eventual fixes, and master will stick for 2.1.

Saturday 12 January 2008

Triple bill

Last night I did a triple release.

The openSUSE packages are being built as we speak.

Edit 01/13/08: I released Exempi 1.99.7 to correct the soversion problem mentioned below.

Wednesday 19 December 2007


I'm on vacation until new year. That does not mean I'll be un reachable, but just that I have a lot of copious spare time.

Maybe I'll have time to push some new release for exempi, libopenraw and hack on my pet project.

Thursday 6 December 2007

Exempi mailing list

Thanks to our friends at Freedesktop.org, there is a mailing list for Exempi

Wednesday 7 November 2007

Exempi 1.99.5

Just released Exempi 1.99.5. This will be that last release before 2.0, unless I'm missing something.

Here is the list of changes for 1.99.5:

  • ABI breakage: soversion is now 3
  • Change: API xmp_files_close(), xmp_files_put_xmp(), xmp_files_free(), xmp_free(), xmp_iterator_free(), xmp_iterator_skip() now return bool.
  • Change: API xmp_get_property_and_bits() renamed xmp_get_property().
  • Change: API xmp_set_property2() renamed xmp_set_property().
  • Bug: all API should check about input and return an error if passed NULL.
  • Bug: more exception handling and refactor set_error() use.
  • Bug: add AC_CONFIG_MACRO_DIR to configure.
  • Bug: Lower requirement for libboost to 1.33.0.
  • New: Doxygen API doc generation.

Get the source - GPG signature If you run openSUSE 10.3, get it from my repository

Friday 17 August 2007

Exempi 1.99.4

Yet another release of Exempi 1.99.4. This time mostly with external contributions. Add a few new APIs, and GIF support.

I also now provide SuSE Linux package source using SuSE buildservice. I'll see about providing the other packages when my RPM skills gets better. I have heard that there might be packages officially for both Debian and Fedora as Tracker now has XMP support.

All the details on Exempi wiki page

On a side note, I'm looking for a place to host Exempi more permanently. My request at Freedesktop.org is still unanswered... and the only place I have found for hosting Free Software with git is Savannah. Suggestion welcome.

Tuesday 10 July 2007

Exempi 1.99.3

I just released exempi 1.99.3.

Get it .tar.gz - GPG sig


  • New API wrapped: xmp_serialize{,_and_format}() and the corresponding option bits so that we can serialize XMP packet to a file (like a sidecar)
  • New API wrapped: xmp_get_array_item()

Thursday 28 June 2007

Hack week 2007 day 3

Hack week, day 3:

  • polished the Nautilus patch
  • modified the EOG patch to be reconcile data in the same place (not finished yet)
  • tried to learn RPM packaging to provide packages for libopenraw, exempi and raw-thumbnailer
  • raw-thumbnailer code is on gitweb.fdo, at least temporarily.

Tuesday 26 June 2007

Hack week 2007 day 2

Day 2 of hack week: XMP support in nautilus. Today I did:

  • filed 2 bugs in Nautilus to were blocking me. With patch attached. Bug 451242 just prevented the build as Nautilus has to be build with -Werror. Bug 451344 was IMHO a problem loading the metadata that occur when there is a bit too much data in the APP1 markers, which is triggered by JPEG with XMP embedded.
  • filed the third bug, bug 451380 as a feature request with patch attached, and this is the core of the work. Nautilus will show the XMP metadata if they are available. This only works for local files (Exempi cannot read off gnome-vfs) and only JPEG (the later is Nautilus limitation, related to libexif). Screenshot: