Older blog entries for raph (starting at number 110)

Ghostscript

Thanks, gtaylor, for pointing me to the LinuxToday posting of my open letter and the followup discussion.

It saddens me that there are rude, thoughtless individuals in Linux land. It saddens me even more that they seem to dominate discussions frequently, especially when it comes to serious issues such as how we're going to manage diversity of choices in desktops and GUI toolkits. I am pretty sure that these flamewars are a manifestation of the "squeaky wheel" syndrome, but the Linux world is changing so fast, it's hard to be sure.

That said, whether to link in a GUI toolkit, or whether to hold GUI interfaces at arms length, is a tough decision. I realize now that I should have put discussion of the XFree86 Render extension into my open letter, as that changes the technical landscape dramatically. When hardware accelerated implementations start shipping, it's going to be amazing.

My heart is telling me that, while I could upgrade the X driver for Ghostscript to do shared memory, Render, and so on, I'd rather share that work with a more generally useful framework than do something completely Ghostscript specific. The framework that has what we need now and is a good base for future work is Gnome.

If somebody has a better idea, I'd really like to hear it. I'm sure we're going to be debating this on the public, archived mailing lists once they're properly set up.

Max

seems to have the chicken pox. It looks like it's a pretty mild case, though. His fever is 100.5, and he's only a little cranky - mostly he's his usual smiling self.

Backlog

I'm backlogged in answering my email again. I really do try to get to it all, but I haven't been very good at it. Sending me a reminder is a good way to get a response. Sorry.

Downtime

www.gimp.org, the current host for Advogato, got hacked recently, and was down last night for a reinstall. Thanks yosh!

Ghostscript

I've been doing mostly admin work, setting up mailing lists (which will be publicly announced as soon as Concentric fixes some DNS problems) and getting ready for the upcoming 6.30 beta release.

Emin there exists m

I've been listening to a fair amount of music downloaded from the Internet recently. Of course, I've got check out the popular stuff of the day, so over the last few days I've listened to some Eminem. The guy spits some twisted, misanthropic lyrics, but he also has a lot of talent.

I don't really understand the controversy around the supposed homophobia of Eminem's lyrics. Yeah, he says "faggot" and other things, but I'll take that over the homophobia of Jesse Helms any day.

If you're ever in a bad mood, I'm sure some of the lyrics will resonate for you. Hey, dudes from the program committees who rejected my papers about the Advogato trust metric, he's singing about you!

On a lighter note, I put up a new album of favorites at MP3.com.

linux.conf.au

Sent my submission to linux.conf.au. I'm really looking forward to visiting Australia, so let's hope the program committee makes the right call :)

lkcl: you have my blessing! I'm happy that there is an "experimental" branch of mod_virgule, but don't want to be the maintainer of it myself. Advogato almost entirely runs itself, and I only need to spend a little time to do a fix here and there. I like it that way. So, please, go forth and do interesting things.

The work on PDF 1.4 transparency goes well - I have almost all of the low level pixel crunching done, including all of the blend modes (in RGB, anyway), and some of the nested two alpha channel modes. lpd and I are a bit stuck on some of the integration with Ghostscript, but we're meeting this evening and so hopefully will be able to resolve some of this then.

My open letter has gotten almost entirely positive responses, but a few flames from people who think I'm favoring Gnome too much. One such email came from somebody I now think of as the archetype of clueless free software people - in response to my email asking him how he'd reconcile wanting to have a really high quality GUI with trying to be desktop agnostic, he begged off volunteering, saying he's helping a friend with an instant messaging app. Woohoo! I bear him no ill will, though. With luck, he will get a passing score network application programming 101 and may someday become a productive member of our society.

The open letter got picked up by lwn and Gnome News. Interesting discussion on that latter link.

I am sincerely flattered. Sourceforge has just implemented a popularity contest which they say is inspired by Advogato and its trust metric. I'm very pleased to see more experiments in this area. A number of people have been asking for finer grained ratings than the three levels here; now we get a chance to try that out. I'm not able to tell from what I've seen whether they've done a true trust metric (with protections against spammy certification) or just a fancy voting system. If anyone does know the answer, please let me know.

Thanks to everyone for the response to the music selection ideas. The response has been positive enough to justify doing a real writeup. I'm not saying when; I have a lot of stuff to do.

I have this funny feeling that mathieu's basis for believing I'm a staunch advocate of capitalism is a late night BS session in a Paris crepière at Guadec, in which somebody was defending communism as practiced in Eastern Europe (you know who you are :). Anyway, nope. I'm definitely on the liberal end of the political spectrum, particularly for America. I'm tempted to go into more detail here, but it's not really on topic. Just wanted to avoid getting painted by mathieu's brush.

BTW, using browsers for entering diary entries sucks. I'm particularly fond of the fact that Alt-Q is "rewrap paragraph" in Emacs, but "lose all work" in Netscape. Hooray for user interface consistency!

mojotoad: Thanks! In fact, I do read pretty much all advoentries.

I guess I need to sit down and write up my ideas for the new rating engine. They're an extension of the flow network ideas I implemented on Advogato, but different. The good news is that it should be pretty easy to implement - unlike trying to do distributed computations of the Advogato trust metric over very large graphs, as lkcl and I have been discussing.

I'm talking to a bunch of people who might be able to make a real implementation of my ideas. I really hope it happens, as it's both interesting research and also potentially very useful. There are two functions that the record industry does well: getting CD's distributed to the stores, and promoting the records so that people know what to buy. Distributed file sharing networks cover the first half of that job pretty well, but I believe there is a void to be filled for the second part.

Meanwhile, the ghostscript hacking goes pretty well. I have my very own memory device that does transparent pixel compositing. I still haven't hooked up the transparency parameters yet, but lpd has done almost all of the higher-level plumbing I need for that. The next few days portend fun and interesting hacking :)

I sent out my open letter to the Ghostscript development community today. So far, a very good response.

Max drank water out of a glass for the first time today. He's really into eating, food, and just sticking things in his mouth. He also scammed some Godiva chocolate ice cream and really seemed to like that as well.

Alan is the only four year old I know who uses "coprolite" as a swear word. His intense interest in dinosaurs continues, but he also seems to be branching out into other kinds of animals. His bedtime reading tonight was selections from the Simon and Schuster encyclopedia of animals, particularly the Malayan tapir.

Thanks to everyone who's sent congratulations my way. It's making me feel a lot more able to handle what sometimes seems like a very daunting job.

Today was a relaxing family day (as are most Sundays). I spent an hour this afternoon helping Alan put together an ant farm. We don't have the ants yet, which is ironic considering that this place is swarming with ants, but they're of the "too small" persuasion.

Now that I'm focussing my time on Ghostscript, I have to confront the fact that I won't have the time to pursue all my various research projects. It never was the case that I did have the time, but in the past I've been in successful denial about it :)

See, one of my problems (among many) is that I have a lot of ideas. Not all of them are good ideas, but I think I have a somewhat better than average track record. In any case, the rate at which I get ideas far outstrips my ability to actually put them into practice.

One way to deal with this is to pick the ideas carefully to spend the time realizing. I had a deep conversation with mjs about this a week or so ago, when we talked about the various styles of projects and which ones are likely to bring happiness. Different people find project happiness in different places, hallelujah! One of the most satisfying areas for me is 2D graphics stuff, for a variety of reasons (I'm tempted to expand on this but will try to stick to my main point).

But not all of the ideas I have are for 2D graphics. My PhD thesis work (which led to Advogato) is one notable counterexample. I've been doing a fair amount of thinking over the months about how to adapt it for different applications. The most intriguing such application (to me, anyway) is a content selection system for file sharing networks, say MP3's.

I'm not going to go into the technical details here, but I will outline how it looks from the outside. The simplest way to implement it is as an Advogato-like website. You go there and register for an account. Then, you identify other people on the site who you think might like the same kinds of songs that you do. You create certificates for them, just like on Advogato.

At this point, the system is able to give you recommendations. You download the recommended songs and listen to them. If you like the recommendations, cool. If not, you put in your own ratings and tell the system what you really think. The rating could be simple, for example a 1-10 scalar. (more elaborate rating systems are certainly imaginable as well)

So far, this doesn't sound too different than a lot of rating systems. There are a few interesting properties that I believe are unique, however.

1. Capacity-constrained flow is what makes Advogato resistant to attack. In the case of Advogato, this means not accepting large numbers of people who are not free software developers. In the case of MP3, selection, it means filtering out spam, buggily encoded tracks, and adulterated tracks put in by people trying to break the system.

2. Most content selection schemes suffer from the "top 40" effect, ie the most popular items are the only ones that tend to show up. Flow, I think, can be used to help find diamonds in the rough, something that existing content selection systems do very poorly imho.

3. A web site is only one way to implement this idea, and perhaps not the most interesting. The flow algorithm I have in mind uses entirely local computation and communication (ie, each node only has to talk to its neighbors in the cert graph). Thus, it should be possible to do a completely distributed implementation.

I believe that by far the most interesting file sharing network to use in conjunction with this idea is Mojo Nation. For one, Mojo Nation files are reasonably persistent and have unique id's. This allows you to associate a ranking with a song and have a reasonable chance of downloading that song when you want. With Napster and Gnutella, the songs available at any given time fluctuate depending on who's actually plugged into the network.

In addition, Mojo Nation gives you a fair amount of the infrastructure you'd need to do a completely distributed implementation. Now that there are serious legal challenges to links, having the content selection system completely distributed could turn out to be very important.

In case it isn't obvious by now, I'd like a collaborator, someone who can take the idea (in the form of a pretty good writeup) and make a real implementation. In return for your work, you'd get a pretty good understanding of trust networks, a good chance at being involved with a high-impact project, and coauthorship on a paper, if that sort of thing moves you. In fact, this would get you an Erdos number of 5 :)

Assuming this flow-based system works well for MP3 selection, I believe it can generalize to spam-resistant messaging (ie email). That is a somewhat harder problem, largely because you want to try really hard not to drop deliverable mail on the floor. For MP3's, simply having most of the good recommendations come through is good enough.

I'm trying this form of collaboration in one other area right now - dithering for inkjet printers. I've given Thomas Tonino of the Gimp Print project some of my code and notes for making dither matrices, and so far the results seem promising. It seems worth trying, in any case.

15 Sep 2000 (updated 15 Sep 2000 at 16:11 UTC) »

Now it can be told: I am the new maintainer of Ghostscript.

I'll be posting a much more detailed open letter to the development community within a few days, but I'll say a little now. I'm very excited to be taking this on, as I feel Ghostscript is very high quality work, and is an important part of the overall Linux / Unix / free software imaging infrastructure. At the same time, there are some significant frustrations, which I hope to overcome. These include the fact that drivers are messy and often not of high quality. I'm looking forward to working with the IBM Omni and Gimp Print projects, and others, to bring inkjet driver quality to topnotch quality. Also, while Ghostscript is capable of viewing PDF files, it doesn't really subsume Adobe Acrobat Reader - the PDF interactivity features just aren't implemented, and the X display driver has both performance and quality problems. I'm eager to work with people to build the needed GUI tools and integrate them with Ghostscript.

I expect Ghostscript will stretch my graphics abilities to the maximum. Projects on my plate include implementing the full PDF 1.4 transparency and blending model, integrating Libart's high performance and high quality antialiasing, and getting color management going. It should be a lot of fun!

Ghostscript is released under a somewhat unusual licensing model. The most current release is under the Aladdin Free Public License. After about a year, the code is re-released under the GPL. The AFPL is not a free software license under the Debian Free Software Guidelines (or the similar Open Source Definition), but it is fairly similar in spirit. The main freedom not provided by the AFPL is ability to charge money for distributing the code. Free redistribution is unrestricted.

I'd like to move Ghostscript to a simpler all-GPL licensing model, but right now it seems that the current version of the GPL is too ambiguous in terms of whether it allows or forbids dynamic linking with proprietary code. This is a serious problem for the Ghostscript licensing business, and a bothersome issue in general. If the GPL v3 adequately clarifies the issue, so that proprietary code can't be linked against the author's intentions, then Ghostscript will be moved to GPL development. I am talking to Richard Stallman to see if there's anything I can do to move this process along.

I'm a bit overwhelmed right now trying to juggle coding with various administrative tasks, but if you want to work with Ghostscript, I want to talk to you. There's a lot of interesting work to be done, it benefits Linux directly, and it will be GPL at the end of the day. The fact that there's also a stable, profitable business associated with Ghostscript doesn't hurt.

As I say, more details forthcoming later. For now, I'm excited to be here.

squiggy: I understand exactly what you're writing about. I've been there myself, and am damn close to it right now, in large part because miguel said some things to me last night on IRC about inkjet printer drivers which strongly suggest that he values corporate support over high quality and involvement from free software hackers. That's not the only thing that's stressing me right now, but you know, just add it to the pile.

What I've done before, and what I've just now scheduled for Sept 15, is to take a walk down the Pacific coast. In past years, I've walked from Pacifica to around Half Moon Bay. It can be done in one long day, or, better yet, over a few days, staying in hostels on the way. There is some beautiful coastline, very fine beaches, excellent mountain trails with wildflowers and breathtaking vistas, and, most importantly, a chance to get the hell away from it all. The last couple of times I've done it, it's restored me to sanity. Ten more days. I can hardly wait.

mathieu wrote:

Now that I spent my day reading my computer graphics, principles and practice, I have a few questions: 1) what is the difference between dithering and halftoning (it seems the 2 terms are used interchangably. Or I missed something most likely) ? 2) for printers, you do not want to use dithering only. You should also support gammut compression. (is this right ?) 3) Does the gammut of printers is printer independant or is it a specificity of a peculiar printer model ? 4) any good biblio on gammut compression ?

1. The terms are used interchangeably. To confuse things even further, in graphic arts the word "screening" is also used.

2. Gamut compression is part of color management. It's a more or less orthogonal problem to dithering. For example, for a continuous tone printer such as an Iris, you may want to do gamut compression but not dithering. Conversely, if you're printing an image already gamut-optimized for the printer at hand, you may want to do dithering but not gamut compression.

But yes, for highest quality reproduction on typical devices, you want to do both dithering and gamut compression.

3. The gamut is highly dependent on the printer, the ink, and (perhaps most especially) the paper. Shiny papers can print much darker, richer colors than non-shiny. This is a fundamental physical property of paper and derives from the mismatch in index of refraction - any time you have a discontinuity in this, you'll have some reflection. What shiny papers do is concentrate this reflection into an area of glare, which when reading you are trained to avoid. In non-shiny papers, the reflection is diffuse, which simply limits the amount of light that can be absorbed. As a consequence, matte finish papers require more gamut compression than do shiny ones.

The other major tradeoff of color gamuts is durability vs color saturation. Extremely brightly colored dyes tend to degrade pretty quickly when exposed to light (especially the UV present in sunlight). Thus, inkjet dyes and pigments designed for "archival" tend to have a more limited color gamut.

4. The best book on color management in general is: Edward J. Giorgianni and Thomas E. Madden. Digital Color Management: Encoding Solutions. Addison-Wesley, 1998. ISBN 0201634260. You might also want to read Ján Morovic's PhD thesis on Gamut Mapping.

I talk about some of these topics in my color management page. There are a bunch more links, as well.

The diary format, while it works, is really not ideal for this kind question and answer format. It's not obvious to me what I can do on Advogato that would be better. Perhaps some kind of Wiki?

101 older entries...

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!