An updated version of this article has been published in the Fall 2007 Bulletin. Please read, refer to, and cite that version instead of this one.

I was excited to find CHDK recently. In a nutshell, it is a free software firmware add-on for certain Canon digital cameras. I couldn't help but notice that the top item on the CHDK feature list is the ability to shoot RAW.

RAW is a sensor specific set of formats for digital cameras that, in many situations (but not all) boils down to a set of minimally processed readings off the sensor in the camera. RAW data is usually uncompressed. While RAW files are not usable without processing — they're like negatives in that regard — I am told that professionals and most serious amateurs swear by them. RAW is one feature that camera companies use to differentiate their high-end and low-end cameras. Sensors, processors, and even lenses might be similar or identical in two cameras priced USD $100 apart. The difference frequently lies largely in the software, or firmware, that runs on the cameras. Expensive cameras have software that will produce RAW files. Low-end cameras will only give you the preprocessed, compressed, JPEGs.

Now, what's so interesting about RAW as a high-end feature is that the data often exists (almost unprocessed) in the camera's memory for every single picture taken. In so far as RAW is raw sensor data, it exists every time the sensor is used. In high-end cameras, users are given the option to process that data and send it through a JPEG compressor. In low-end cameras, there's no option; the data is processed and compressed and the raw data is thrown away.

RAW is an example of an anti-feature. Anti-features are sold to customers as features but are fundamental or unavoidable aspects of systems that can only be removed or withheld through technological effort. Unlike real features, producers of anti-features charge customers for not inhibiting access to their products' full functionality. Technological and legal barriers that keep anti-features away from the users of intentionally less featureful end up costing all users their freedom. It is more difficult for Canon to make cameras that output JPEGs than cameras that output RAW, and it's not significantly more difficult to offer users a choice.

DRM and trusted/treacherous computing systems are, in many ways, an extreme example of anti-features. Users don't want either and they are hugely expensive and extremely difficult for developers to implement. Region-coded DVDs, copy-protection measures, and Apple's new optional DRM music store are also great examples. Many architectures of control qualify as well. It takes a large amount of work to build these systems and users rarely benefit. Like blackmail, users can sometimes pay technology providers to not include the anti-feature in their technology.

But that is only if users are allowed to pay to turn their anti-features off at all! As I described three years ago Mozilla and Firefox were blocking pop-ups for years before Microsoft got around to adding the feature to IE. Despite the fact that Firefox has become fancy about pop-up blocking recently, simply not showing pop-ups (i.e., the way the feature was originally implemented in Mozilla and celebrated by users) is easier than showing them. Microsoft held back not because it was difficult, but because of other parts of Microsoft and their partners used and made money from pop-ups. Ultimately, Microsoft lost droves of users to the free alternative that was willing to put users first.

Unfortunately for the companies and individuals trying to push anti-features, users increasingly often have alternatives in free software. Similar to Mozilla's pop-up blocking feature, RAW was low-hanging fruit for the free software developers working on CHDK. The absence of similar anti-features form some of the the easiest victories for free software. It does not cost free software developers anything to avoid anti-features. In many cases, doing nothing is exactly what users want.

Benjamin Mako Hill (Comments)