OpenICC is a group of people dedicated to organise how applications, libraries, toolkits and colour devices talk each to the other about colours. The center of this work is the ICC specification, which is surounded be several general and operating system specific conventions to create a open sourced colour management system.

Oyranos is a example implementation of mentioned conventions to cover ICC profile handling and colour conversions. The newBSD licensed code base is plain C with very few dependencies, namely libxml2 and Elektra. Goal is to use existing standard technology like XML, XFORMS and GLSL. Oyranos features a (almost) data independent framework to plug-in data manipulators, for colour conversions, tonemapping, image I/O and other operators into a data processing graph.

About the Group

OpenIcc consist of the partipicants of the OpenICC email list. It was started by Scribus members to better support introduction of colour management into applications and discuss general issues. List contributors are application and CMS developers as well as colour management specialists and users, no matter whether commercial, open source and both. The main focus of this group is to expand the level of support for color management on open source software systems.

Project Suggestions

Simple Toolkit Abstraction

The Oyranos colour management system is in parts only a thin layer between imaging applications and advanced moduls or plug-ins. To deploy these plug-ins flexible and maintain toolkit independency the plug-ins must present their UI in a own language. Goal is to create a simple and highly flexible GUI system, which allows easy creation of dialogs including callback meachanisms. This project lets you explore concepts like W3C XForms/DOM, and how to adapt it to traditional event driven programming. The result should be something simple and powerful enough to use for a wide range of applications not limited to Oyranos. Possibly this will result in a stand alone project.

Sane configuration backend for Oyranos

Scanner devices can be described by ICC profiles. These profiles should be communicated alongside the normal communication pipeline. A module abstracting Sane details for ICC profile communication would make remote ICC profiles available for applications and configuration tools.

Contact

GPhoto configuration backend for Oyranos

Camera devices can be described by ICC profiles. These profiles should be communicated alongside the normal communication pipeline. A module abstracting GPhoto and/or HAL details for ICC profile communication would make ICC profiles easily available for applications and configuration tools.

Expectations

work with GPhoto/Hal and Oyranos API's

inline documentation

Skills

good communication skills (work with different parties)

portable C

Contact

Printer configuration backend for Oyranos

Print devices can be described by ICC profiles. These profiles should be communicated alongside the normal print pipeline. A module abstracting CUPS and other print spooler details for ICC profile communication would open the door of print previews for applications and configuration tools.

GLSL meta backend for Oyranos

In order to build fast filters in Oyranos a meta backend is to be programmed. It should allow for fast manipulation of image data like colour conversions, tonemapping, blending or geometric transformations.

Expectations

study basic concepts of OpenGL shaders, their implementation in Mesa and the Oyranos CMM framework

decide for a implementation concept

work on existing code and integrate your implementation using most of the already available functionality, extent where needed

Skills

Contact

Oyranos Device Settings to ICC profile layer

Devices need to be introduced to a colour management system, in order to control the colour behaviour of a device. For instance different drivers may produce different colour on a otherwise identical device. A CMS needs some mechanism to connect colour influental device settings and driver informations and a particular colour profile reflecting these settings. ICC profiles containing such information would allow for automating many user decissions.

Skills

Contact

ICC Examin Library

ICC Examin is a profile analysing tool and colour visualiser. Many widgets are interesting to other applications. But they are written in FLTK and would be needed in an other toolkit in a modular fashion. This project instroduces in the process of effectively presenting various data.

Optional

Extending the Oyranos Colour Conversion Framework

The colour management system Oyranos provides high level means to render colours in a generic way. The advantage is, application developers can rely on Oyranos services without understanding the often complicated details. This project lets you create and optimise verious underpinnings of sytem level to advanced graphic tools. This project is a collection of many small and very versatile tasks. You can freely create a own plan what to do or will be guided according to your level of expertise.

Contact

LProf - Finalize Qt4 port

LProf is an open source ICC profiler. It has recently been ported to Qt4 from Qt3. Although the port is working it still needs to have Qt3 support library calls removed.

Expectations

Systematically remove ?Qt3Support calls from the LProf code base and replace these with pure Qt4 code. This is a significant undertaking and involves changes to just about every part of the UI code base for LProf.

LProf is an open source ICC profiler. This project will add DDC/CI and HID USB monitor controls support to the current monitor calibration functionality. This will allow the software to automatically make monitor adjustments during calibration so that users do not have to make manual adjustments to their monitors.

Expectations

Implement DDC/CI and/or USB HID Monitor Control support in LProf. This will need to work in a broad range of platforms including *nix/X11, Windows (2000 and later) and OS/X.

Skills

General C/C++ programming skills

Some background in EDID and/or DDC

Ability to work in a cross platform environment. This will need to work for *nix/ Windows and OS/X machines.

Contact

LProf - Add a Regression Analysis Based Monitor Profiling.

LProf is an open source ICC profiler. LProf now has the ability to use various measurement instruments to take measurements for profiling monitors of various types. Currently the profiling algorithms are very simple ones and this needs to be corrected.

Expectations

This project will implement a regression analysis algorithm for monitor profiling.

Skills

General C/C++ programming skills

An understanding of 3D regression anaysis

An understanding of ICC profiles

Contact

LProf - Create a Robust Interative Video Card LUT Creation Algorithm.

LProf is an open source ICC profiler. LProf now has the ability to use various measurement instruments to take measurements for profiling monitors of various types. Currently the video card LUT creation algorithms are very simple ones and this needs to be corrected.

Expectations

This project will implement a robust interative video card LUT calibration algorithm and will be integrated into the LProf UI.

Skills

General C/C++ programming skills

An understanding of 3D regression anaysis

An understanding of ICC profiles

Contact

Alternative Ideas

Feel free to propose and discuss your ideas.

Requirements

License

BSD, LGPL extended by allowing for static linking are preferred licenses for libraries. GPL and other open source licenses are acceptable for other projects but in most cases the project mentor will specify the license to be used for the project.

Skills

Both good project and coding skills are expected, in order to set up our complex open source projects. We know it is sometimes difficult to talk to people you do not know, especially when they are not visible like over the internet. Nevertheless the mentors of these OpenICC projects want an open dialog with anyone interested in working on these projects. This is an important part of open software development and it is even more important for these Google Summer of Code Projects. Please feel free to contact any of the mentors listed above at any time. The earlier a candidate contacts us the more time remains for getting a feeling of the projects in advance.

Developers Environment

You are free to select whatever build environment you like as long as the project is targeted at that platform. Many of the above projects are targeted at Unix like systems and a few are fully cross platform. Our experience for cross platform projects is that some build environments are more difficult to setup than others. You will also likely find that these projects are significantly more complex than your school projects. For example, the LProf code base is now almost 100,000 lines of C and C++ code.

In order to help candidates be successful in completing their projects it is important that anyone selected is prepared to start actual project work at the project startup date. Please be prepared to have your development environment ready long before the project starts. This means that project mentors will want you to be to able to build and run the base system you are working on well before the project start date. For example, if you are working on one of the LProf projects you should be able to build and run LProf on your development machine at least a month before the project startup date. Windows build environments, in particular, have proven to be particularly difficult to setup and it is common for GSoC mentors to comment about how often the single biggest difficultly for students working on Wndows machines is getting a fully functional build environment setup.

Many open source developers use a unix like environment (IE. Linux, BSD ...) in part because setting up a working build environments is much simpler. This also means that there is a high likely hood that your mentor will not have much experience working in Windows or OS/X and may not be able to provide much assistance to help you get your builds working in those environments. So take this very seriously. On the other hand using a Unix like system like BSD/Linux/osX/Solaris can be a great learning experience for any student who has not worked on one of these in the past. Many big projects run on *nix systems deploying unix concepts and some of the projects listed above are *nix only projects that can not be worked on using a Windows machine. On request we simply expect the programmer to switch to BSD, Linux or osX. The installation should be no issue.

Communication

The OpenIcc list and the mentors for the above projects are all open for having contact with any prospective candidate. We will use a additional public list dedicated to the GSoC projects communication. IRC: freenode#openicc