Older blog entries for rlk (starting at number 3)

Gimp-print 4.0 is finally out there

It feels like it's taken forever to get this one out. Cleaning up the last few things is always a slow process, but it feels good to have it out there. Of course, now there will be a lot more users and a lot more bugs...

I think I need to slow down a bit from the pace of the past year. It was incredibly intense at times, but with a great group of people we got something big accomplished. Not the biggest thing anyone's ever done, but it now means that free software has access to the kind of print quality that didn't exist before, so there are new areas opened up in the graphic arts. That's Good!

I cut gimp-print 4.0b2 tonight. Hard to believe that the next release will probably be the real thing! This was 2 weeks after 4.0b1, which was just about how long I expected the gap to be.

I originally figured it would ship some time around late summer, in the August timeframe. So it looks like it's going to be about 2 months later than original plan. I'm quite satisfied with that; we made most of our goals from our development road map from January, except for 16-bit support. However, since there's no common Linux application with 16-bit color support, that's really quite OK.

It's also arguable to what degree we accomplished goal 8, better separation between the rendering engine and the printer drivers. The interface is better, but plenty of people remind me that it can be a lot better. That's true, and perhaps we'll do that in 4.1/4.2.

However, I can realistically say at this point that we've accomplished far more than I could have possibly dreamed, with very high quality (in terms of both bugs and print quality) within 30% of my estimated time goal. So I feel good about this project!

The one major concern I have is that a few people are reporting poor quality of some kind, and I can't tell (because I haven't received printouts from them yet) if there really are some oddball color problems I don't know about (possibly due to code bugs/compiler interactions, like we had during early alpha) which would be bad, or because we're attracting people who are incredibly picky about their color, which would be good. There are also a few reports of poor density with the Stylus Color 900 at 720 DPI. This does concern me a bit, because the 900 has a slightly oddball way of getting 3 picolitre dots. The other reports all seem to be bad gamma values brought on by a bug.

There's no way I'll be able to work this hard on 4.1. It will be necessary for more people to step up, or 4.1/4.2 will be a much slower process.

I would definitely like to be able to work on free software full time at some point in my life...

Well, one thing's for certain: we have lots of tuning left to do on gimp-print. The good news is that a lot of it might just be parameter tuning rather than a massive overhaul.

Niels Gram Jeppesen forwarded me a photo of a friend's car. Now, said car is a beautiful red Alfa Romeo, and he was justly disappointed with the somewhat orange cast the car was taking on. He didn't notice (or took pity and didn't comment on) the rather strange color of the grass. I tried fiddling around, boosting the saturation and decreasing the yellow, and got slightly better results.

This morning I printed out a photograph of my wedding (the same photograph that's on my home page) to see how far things have come since 3.0 (or maybe an early 3.1, I don't know how long ago I printed it). Well, in terms of smoothness of dithering, we've certainly come a long way. However, it was definitely oversaturated, and had a somewhat yellow cast. Hmm.

Photograph mode has some hacks to improve color fidelity. These hacks hacks reduce the CMY levels in regions of fairly pure CMY (which is needed to prevent CMY from reaching saturation too quickly), and do some other things which appeared to reduce saturation (theoretically, they should have reduced saturation also; increasing the level of the least dominant ink will do so by definition). So I boosted the baseline saturation by 1.6 to compensate. Well, it appears that in practice that's going way too far. In fact, I got a really good print with saturation set to .625 -- the exact inverse of 1.6! So that suggests that no saturation boost at all is the right way to go. That's nice; it will speed things up too.

Anyway, with saturation at .625, yellow at .8, and overall gamma of .9 (that's also scaled from a printer and application specific baseline) I got some very nice prints. A brilliant sunset shot, unfortunately, is proving harder to fix.

What's really amazing me here is that reducing the saturation increases the perceived saturation of the color of the car. If I look at it very closely, though, the car isn't fully saturated at all; it's one of those perceptual quirks that makes it look like a brilliant, earth-shattering red. I don't have enough grounding in color theory to fully understand the details, but I think that what's going on is that cyan is the least dominant color in the output, so increasing the saturation decreases the cyan, which leaves only magenta and yellow. The end result is that the output looks slightly orange. Decreasing the gamma darkens the output, which also increases the perceived saturation.

What gimp-print really needs to do is to do everything in CMY space rather than RGB space, I think. That isn't going to magically solve anything, but it will at least make things consistent and hopefully easier to solve.

Of course, part of the story is that every printer is different. The 6 color Epson Stylus Photo EX is a more difficult printer to get light greens out of than a 4 color model; the result is that grass tends to look a bit brown. This isn't quite as offensive as one might think, because it's actually a fairly natural brown. When the saturation is less extreme, this is also less noticeable.

In any event, I think I'm probably going to rescale the saturation, since that's clearly wrong. The issue of yellow is very printer and lighting specific, and I think I'm going to leave it alone for now. Gamma is also a tough call, since every monitor's gamma is different.

I'm looking forward to khk's color management stuff for 4.1/4.2.

Well, I guess it's finally time to join Advogato...

It's amazing how fast things can happen under the right circumstances. About a year ago, I wanted a printer to let me print proofs to feed my photography hobby. So I bought an Epson Stylus Photo EX from a fellow photography buddy before I realized that there wasn't much of a driver available for it under Linux. The closest thing I could find to something useful for my purposes was the print plug-in that came with the Gimp -- it supported a lot of Epson printers, but not the 6-color ones. Just figuring out what driver would actually work at all was a bit of a challenge.

I did a lot of work, and released version 3.0 of the plugin (I started with Mike Sweet's 2.0 version), which supported the EX reasonably well. Certainly it did a lot more than 2.0, and it used the full print head at 1440x720 DPI.

Fast forward to now. The project, gimp-print, now has 19 registered developers. It's in beta for the 4.0 release. Not only is it the print plugin for the Gimp, it's a full-fledged Ghostscript and CUPS driver. Just for kicks, I went back and printed something out with my old 3.0 driver. Even a few months ago, the development line leading up to 4.0 did far better in 4-color mode than 3.0 did in 6-color mode, and I was quite impressed with the 6-color stuff back then. Over the intervening 2 months, it's only gotten better.

Having those 18 other folks around is the key to it. Professionally, I've focused on ultra high end servers and supercomputers, and low-level UNIX hacking, and performance. I've never done graphics, and I knew nothing at all about dithering. This has been a big learning experience. I've learned about dithering, and while I still don't consider myself an expert in it, I know who to talk to and who can write the code for it. Without Thomas Tonino to design dithering matrices, for example, the quality would still be back in the January days. Right now, 6-color mode on the EX really looks like a photograph, and 4-color mode looks like a grainy photograph. On Epson's top of the line printer, the 870, it's even better.

From a professional standpoint, I've learned that I have project management skills. If I can manage a group of 18 people who have absolutely no obligation to the project, I figure I can manage a complex project in any situation.

There's something really exciting about watching all of this develop.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!