Exempi2 will use the Adobe XMP SDK as a code base, instead of reinventing the wheel. It will also become BSD licensed to make things easier with the original code.
The reasons are as follow:
- Adobe XMP SDK implements the whole spec, including scanning XMP out of the various file formats
- it is somewhat tested (but not on the platform we use)
- it is less work to fix it than rewriting it
- it is BSD licensed so perfectly fine for use in GPL applications
- it needs work to build and work on Linux. I actually have done that.
- it still fails on 64-bits platforms (fix in progress, don't assume sizeof(void*) == 4)
- I'm not sure how much it will deviate from upstream as fixes needs to be. I'll do my best to push the changes upstream.
- It needs a sane API. The APIs are not bad but the are not really designed for dynamic linking as they are based on C++ templates. Templates are not inherently bad, but passing them through dynamic linkage like that is not really a good idea, and worse, it is not language neutral. I'll make some nice C API inspired by what I did in Exempi.
Mental note: explain why XMP is important.