Tuesday, May 5, 2009

The PSD File Format

Adobe’s John Nack responds to a code-comment rant by Dag Ågren:

Here’s what I think people want to know: Is Photoshop’s PSD format a goofy, antiquated piece of crap, and by extension is Photoshop slow, clumsy, and/or outdated?…No.

On the contrary, I think that’s simply the question that Nack wanted to answer. Ågren’s points seem to be legitimate, if indelicately expressed and not intended for wide distribution. Nack essentially concedes them, then tries to suggest that someone wanting to read existing PSD files should care about Adobe’s FXG file format. The takeaway: Adobe has no sense of humor and would rather attack the messenger than accept criticism gracefully.

Update (2009-05-06): Gus Mueller makes some good points in the comments.

3 Comments RSS · Twitter

This is a conversation that comes up a lot in software development where a piece of software has "evolved" over time and someone feels that it's necessary to defend the end result with a history of how it got there. It's perfectly justifiable to explain WHY the end result sucks, but the end result still sucks.

Thanks for saying exactly what I thought.

The problems Ågren pointed out basically go back to one point: either PSD was never designed with extensibility in mind (and whenever extended, a clean mechanism for further extensions was not a consideration), or all of the existing extension mechanisms were wilfully ignored over and over.

Consider JFIF, GIF and PNG. All of these formats had a structural extensibility mechanism from the start – as a result, contemporary versions of files in those formats can contain information that was not foreseen at the time of their specification, and yet the complexity of decoding those formats has stayed nearly constant since the beginning.

Of course, JFIF, GIF and PNG always had interoperation as a goal; PSD was only ever designed as an opaque house-internal binary blob for Adobe’s purposes and no one else’s. So the directions taken by those formats are really no surprise.

There are 2 problems here.
1) yes the format itself is an accretive mess, with internal inconsistencies, etc
2) the much bigger problem, that Nack is ignoring in the hope that nobody will press the point, is that Adobe doesn't document it. Oh, sure, there's some old documentation that you can get if you beg loud and long enough, since it was long ago withdrawn from the SDK - but the reality is that a) it's just a tiny subset of PSD, b) the documentation itself has many errors and omissions.

Nack's post is a typically defensive, arrogant smokescreen and cannot challenge the basic fact that PSD is impossible for third parties to support properly. Even getting the tiny "documented" subset working involves hundreds of hours of trial, error, and reverse engineering (I know from experience). It is impossible to underestimate the worth of the so-called "spec".

The opinions of people who've never written software to reliably parse it are not very relevant to the debate. And that probably includes Nack, since he has the benefit of Adobe's INTERNAL library and, one confidently presumes, complete, accurate, and very PRIVATE documentation.

Leave a Comment