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.