pyexiv2-developers team mailing list archive
-
pyexiv2-developers team
-
Mailing list archive
-
Message #00000
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