Developing for Color Blindness?
Satan's Librarian asks: "I develop software in the music industry. Most of the software is very graphical, with lots of knobs, buttons, and various other custom controls. Recently I realized one of my interfaces would be difficult for someone who was colorblind - fortunately before it shipped. How do other developers avoid this? Is there software available on XFree86, Mac OS X, or Windows that can let you run in a modified-color mode to emulate the various kinds of colorblindness? I've found one site with some cool demos of how colors are perceived with the various types of color blindness, and a lot of self-help sites and software to help people who are colorblind, but no software to help developers and graphics artists avoid causing people difficulties in the first place yet - although from the demos and articles, I expect the algorithms would be trivial. Seems to me that if the statistics I keep seeing for colorblindness are correct (~8% of males, ~2% of females), this could be an often ignored problem that excludes a lot of people from some software. If you're colorblind, how do you deal with websites and software that was poorly designed for you? Is it a problem often?"
My color blindness is fairly severe -- red/green, red/black, brown/green, and trouble distinguishing shades. Some people who try to accomodate the color blind only think about red/green -- that doesn't help me.
The cardinal rule for accomodating color blindness is this: don't make color the sole distinguishing aspect. Use text, symbols, whatever -- just make sure that you're using something other than color for identification. Best suggestion -- remove all color from your application and see if you can still use it. If you can, I'll be able to too. (Assuming, of course, that I can distinguish the identification from the color. Black text on a red widget doesn't help me. Think high contrast.)
Here's one thing that I find frustrating: web design pundits love to talk about color palettes, and how using the correct one can supposedly maximize monitor compatibity and sight-impaired accessibility. But that's an obsolete concept, based on video adapter limitations that no longer apply. What I would find useful is sets of color pairs that could be used in combination to maximize contrast, and still design a web site that looks cool in full-color mode.
Colorblindess emulation modes that require cross-mixing color channels would require more than a simple gamma ramp modification AFAIK but if you're just interested if some colors are distinguishable, monocrome emulation should do just fine.
_________________________
Spelling and grammar mistakes left as an exercise for the reader.
The toolkit theming is a great idea. For a lot of the music-oriented applications, simple preferences just won't cut it because the applications are too graphical. Check out Reason, GuitarPort, or Project 5 for some good examples of the types of interfaces I'm talking about.
What I'd really like to do is make sure that every interface we work on works for colorblind people before it ships, so they won't have to find an artist to reskin it. Many of the apps I work on have an insane number of graphics, which is why we haven't put the effort into making a user-oriented skinning facility before. It'd be nice and I'll keep suggesting it, but it'd take a long time to build a full editor (or a single skin for that matter) and we've always had other features way more in demand by our users.
I write code.
I have a friend who is colorblind and so I have put some thought into this. I think the best thing to do is support color schemes (which can be read from a file or something) and have four color schemes in addition to full color:
I think this is really all you can do. A color monitor has only three spectral lines, anyway -- red, green, and blue -- so if a user has trouble distinguishing two of them, connect those two (so no distinction is necessary), and if a user has trouble distinguishing any of them, connect all three.
Sunlit World Scheme. Weird and different.
I wrote a path-finder program using Dijkstra's algorithm (and then A*, etc.). At any rate, it dynamically displayed its results showing a red path over a green graph (you can see where this is going...).
It was working very nicely and the animation was very fun to watch. I was proudly demonstrating it to a co-worker - "See how it just sniffs this dead-end and back-tracks left here?". He looked bewildered: "I don't see anything". Exasperated, I pointed to the bright red line of the path: "Here, *this*! - what are you, color blind?".
Him: "Yes".
Oops.
I spent the next 5 minutes apologizing and then another half hour adding user control over the animation colors so he could see the results. And never took this for granted again.