← Back to team overview

pyexiv2-developers team mailing list archive

pyexiv2 development plans

 

Hi all,

Thanks for subscribing to the pyexiv2-developers team.
I'd first like to encourage you to subscribe to the team mailing list [1] (if not already done) if you are interested in taking part in the discussions around design and task dispatching.
Starting from now I'll use only this list to ease communication.

Let me give you a brief summary of where we are.

The latest release of pyexiv2 is 0.1.3, that compiles against libexiv2 0.18. It provides read/write access to EXIF and IPTC tags along with limited access to thumbnails. It has a number of known bugs and limitations and a fragile architecture that makes it hard to reliably fix issues with the guarantee that we don't introduce regressions. On the other hand a bunch of projects seem to use it successfully and I would say it is pretty stable for basic operations.

A long time ago I started a 0.2 branch [2] which aim was to rewrite pyexiv2 from scratch with the following objectives in mind:
 - make it more robust
 - make it easier to extend as the underlying libexiv2 evolves
 - provide support for XMP metadata

The design itself is pretty simple but unfortunately I never took the time to actually write it down somewhere. That's something I'll try to do soon. What has made the development of this branch so slow is partly the test-driven way in which I chose to write it: every single line of code should be unit-tested in order to make sure we have a predictable behaviour that follows the [EXIF,IPTC,XMP] specifications and we don't introduce regressions when fixing other issues. At this point the code is incomplete but everything that is there is unit tested.

Another important point was to strictly document every single function/class/method, which becomes even more relevant if we are to work jointly on the project. This isn't quite there yet, but I'll try to improve things on this matter.

The conversion of tags to python types and back is partially implemented in dedicated classes which results in a better logical separation of the code and readability.

What's missing is the handling of thumbnails, completing the conversion of all types of tags (especially for XMP exotic types) and handling tags that take a list of values in a transparent way for the user (I'm using a notifying list mechanism to achieve this, I can elaborate more on this for those who are interested).

I personally want to focus more on getting the 0.2 branch complete and functional, but I reckon it would be a good idea to continue supporting the 0.1.x series until 0.2 is out and projects are ready to use it.

I think this project should be fun for everyone to work on, so I suggest anyone interested just pick a task or propose one using Launchpad's bug reports and/or blueprints. Whenever we feel we have some interesting material merged we can decide to release.

In this regard, I think it is a very good idea to upgrade the 0.1.x series to libexiv2 0.18.2 as Robin suggested [3].

Let me know if all that seems to make sense to you!

Cheers,

Olivier


[1] https://launchpad.net/~pyexiv2-developers
[2] https://code.launchpad.net/~osomon/pyexiv2/pyexiv2-0.2
[3] https://bugs.launchpad.net/pyexiv2/+bug/323708/comments/3