[argyllcms] Call for Sponsorship of ICCLIB Version 4 development

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Wed, 01 Nov 2006 22:57:11 +1100


Over the past couple of years I have received a number of
queries from companies that have been using icclib, and
are interested in the progress in supporting the latest
ICC version 4 profiles.

One of the obstacles to rapid development is simply
prioritization - I'm spending time on paying work,
rather than non paying work such as further developing
icclib.

One way of addressing this, and expediting the development
of icclib, would be for some of the companies that have
benefited from icclib, and have an interest in moving on to
ICC V4 support, to put their hand in their pockets
and sponsor the development of a new version. By
sharing in the sponsorship, it can cost relatively little
on their part, and yet be of significant value to me.

I'm therefore calling for expressions of interest in this idea.
If you think you might be in a position to offer such sponsorship,
then please drop me an email. Feel free to pass this note on to
anyone not on the Argyll mailing list, who you think might find
it of interest.

Below are some details of my current aims and plan for icclib V4
support, and a rough estimate of development effort.
Feedback on the aims and plans is welcome as well.

This is not something I would expect any individuals to
participate in, since it is likely that it is companies that
have gained the most financial benefited from using icclib,
and it's likely to be the situation in the future too.

If there is sufficient interest to make this a full time
project, then I'll ask for specific commitments from those
who expressed interest, and will in return, commit to a
development and delivery schedule.

sincerely,

Graeme Gill.

(graeme at argyllcms dot com)

------------------------------------------------------------
Aims of icclib Version 4:

Overall the aim is to make icclib the best of breed library for
accessing ICC profile information and transforms. The emphasis
is on portability, robustness and completeness. While I think
that the current icclib is pretty robust against crafted-file
attacks, icclib V4 is aimed at being as robust as possible,
both by design, and through testing.

More detailed aims:

1) To support ICC Version 4.2 profiles, as well as
   all previous version down to V2.0

2) Continue to be written in C, for maximum portability.

3) Be more modularly implemented, so that the basic
   infra structure can be simplified, made more robust
   against buffer and integer overflow attacks, can be much
   more easily extended to support future ICC specification
   changes, can be used more easily for implementing custom tags,
   and can be used for implementing other ICC-like file formats.

4) Handle all tag types, even unknown ones in a default way,
   so that profiles containing such tags can be modified
   by icclib, while leaving unknown tags intact.

5) Implement a single, cleaner color transform mechanism,
   as a superset of the monochrome, matrix, lut and V4 lut
   representations, to support the new V4 representation,
   and better support any future ICC color transform algorithms,
   or even support color transforms stored in non-ICC formats.

6) Make it easier to extend the transform mechanism (inheritance).

7) Fill in missing functionality, such as named color support, etc.

8) Provide some good API usage and example documentation, to make
   the library more accessible.

9) Provide greater control and notification over format checking,
   so that it can be flexible and forgiving if needed, or
   pedantic for use as a verification and diagnostic tool.

Development plan:

        Develop new file layout, inheritance structure, error
          reporting, and low level serialization infrastructure
        Implement basic ICC support using new infrastructure.
        Re-implement current tags using new infrastructure.
        Implement new tag support
        Implement new color transform support.
        Modify support tools to match new versions.
        Implement missing features.
        Testing and cleanup.
        Create tests for handling badly formatted files
        (ie. "Fuzzing" testing).
        Beta test release.
        Write API documentation.
        Incorporate changes resulting from beta test.
        Bug fix, further testing and verification.
        Release of new version.

Schedule:
        Currently I'm estimating 2-3 months work in total, not
        counting any interruptions, and not including the beta test
        feedback/bugfix cycle.

Licence:
        The new version of icclib would be exactly the same as the
        current one, ie. Copyright would remain mine, but it would
        be offered under the same "free use", MIT style licence.
        Sponsors would (at their discretion) be acknowledged in the
        major source files and documentation.
        














Other related posts: