Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
I'd like to take a moment to speak to you about the Adobe PSD format (2009) (github.com/gco)
78 points by tosh 11 months ago | hide | past | favorite | 23 comments



This really doesn't make sense without those (you'll be haplessly looking for the comment, failing to understand the title).


That's what happened to me the first time around, the comment was not visible on mobile without horizontal scrolling, so I missed it. Dang, can we please change the link to the above?


Also add (2009)


Ty, I think I accidentally dropped the # anchor from the URL


This is on purpose, these obscure aspects of their format, it is how proprietary software remains proprietary in modern times - complexity, undocumented aspects, and inconsistency.

This is on purpose, corporate policy-wise. It may not have been done explicitly on purpose originally, but Adobe realized what they had and leaned into their difficult file format on purpose. A friend used to be one of their senior software scientists, and he explained it to me in this manner when I complained.


This is indeed why Richard Stallman states that proprietary software is immoral.

Given I like to make money, I have to tactically disagree.

But we all know it's true.


Reading obj c brought back some good memories of when I coded iPhone apps around 2009. Great language

On topic: parsing others file formats has to be one of the most fun and most terrible things. The bliss when it ends up working is great


I have unintentionally spent a lot of time parsing things in my work and side projects.

When you have a spec, parsing things, even if it's a bit terse (or awful), is not a problem. You look to the code you have to handle that terse bits with pity, but if it works, it works.

On the other hand, when you need to parse something undocumented, and it's bad (PSD, Office formats, bytestream from a dodgy IR multitouch pointer for a smartboard), you suffer to a level where every emo teen yearns and anybody who goes through real pain either feels better for themselves or hug you in empathy.

It's that bad.


I second this, it's a great fun exercise parsing various binary file formats. At various times through my career I started with simple stuff like BMP and worked up to packetized media streams.

On the way learned a lot about bit manipulation and reading ISO type specifications.


One of my first jobs, a paid internship, was to migrate (a lot) of UML documents out of Rational Rose, for a company that used Domain-Driven Design (DDD) for a large product.

The work was supposed to be manual, copy-paste, but I ended up writing a parser for the Petal format. It was super easy to understand since it was plain text and represented a tree with something like S-expressions.

https://crazybeans.sourceforge.net/CrazyBeans/doc/grammar.pd...


I can't remember the last time I enjoyed someones rage this much, I laughed while reading through the whole comment. This is gold.


Xee's PSD rant is quite mild tho, as these things go. An other classic[0] is wm4's locales rant in which the frustration is a lot less constrained: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02...

[0] keeping to focus being technical rather than the ranting, otherwise you have to go for Eric Naggum's XML rant: https://harmful.cat-v.org/software/xml/s-exp_vs_XML



> Earlier, I tried to get a hold of the latest specs for the PSD file format. To do this,

> I had to apply to them for permission to apply to them to have them consider sending

> me this sacred tome. This would have involved faxing them a copy of some document or

> other, probably signed in blood.

“But the plans were on display…”

“On display? I eventually had to go down to the cellar to find them.”

“That’s the display department.”

“With a flashlight.”

“Ah, well, the lights had probably gone.”

“So had the stairs.”

“But look, you found the notice, didn’t you?”

“Yes,” said Arthur, “yes I did. It was on display in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign on the door saying ‘Beware of the Leopard.”

(FWIW, the format is publicly available https://www.adobe.com/devnet-apps/photoshop/fileformatashtml...)


For those who are wondering, this is quote from "Hitchhiker's guide to Galaxy" by Douglas Adams.

https://en.wikiquote.org/wiki/The_Hitchhiker%27s_Guide_to_th...


It feels all that tangent boils down to "not enough research" and their fault alone?

The effort of typing "adobe psd format specification" on any search engine is very low and it returns the page above.

Maybe OP just nerdsniped themselves and never thought of taking a moment and checking better online? Not sure.


> It feels all that tangent boils down to "not enough research" and their fault alone?

My comment wasnt very focused. I didnt mean to say author missed a google result. Rather, TODAY psd spec is readily available. I don't think it was as easy to be found when author wrote that comment in 2008 or whatever.


Oh, ok. I missed the 2008 part.


The spec document here is published in 2019, and the OP was writing in 2009. There may not have been such a document, at the time. And the document may not have been the "latest" spec that they were requiring.


how do you think they managed to write the parser without access to the spec then? clearly OP knew about the public document. instead it seems like they're referring to some weird private superset of the format that wasn't publicly available


Reverse engineering is an option, I guess.

NTFS, HFS, Microsoft Office formats, many cameras' RAW formats, etc. were reverse engineered with blood sweat and tears to allow interoperability and rescuing some information from them in dire situations for years now.

Paragon Software won't be able to give their NTFS source code to Linux Kernel if they got the docs from Microsoft. Microsoft have made Paragon disappear overnight.

Edit: Just found out that Paragon still updates and maintains the mainline driver in the Kernel. Huge props to them.

Addenda: The first snapshot of this particular webpage appears in Jan 15, 2011, titled July 2010 [0]. This particular incarnation of format is born in 1990, if we believe the Copyright lines in the beginning.

There's also a small CSS change comment from "25 Jun, 2009" in the beginning. So the page was present in 2009.

[0]: https://web.archive.org/web/20110115150245/https://www.adobe...


Citing a comment block for mobile users:

At this point, I'd like to take a moment to speak to you about the Adobe PSD format. PSD is not a good format. PSD is not even a bad format. Calling it such would be an insult to other bad formats, such as PCX or JPEG. No, PSD is an abysmal format. Having worked on this code for several weeks now, my hate for PSD has grown to a raging fire that burns with the fierce passion of a million suns. If there are two different ways of doing something, PSD will do both, in different places. It will then make up three more ways no sane human would think of, and do those too. PSD makes inconsistency an art form. Why, for instance, did it suddenly decide that these particular chunks should be aligned to four bytes, and that this alignement should not be included in the size? Other chunks in other places are either unaligned, or aligned with the alignment included in the size. Here, though, it is not included. Either one of these three behaviours would be fine. A sane format would pick one. PSD, of course, uses all three, and more. Trying to get data out of a PSD file is like trying to find something in the attic of your eccentric old uncle who died in a freak freshwater shark attack on his 58th birthday. That last detail may not be important for the purposes of the simile, but at this point I am spending a lot of time imagining amusing fates for the people responsible for this Rube Goldberg of a file format. Earlier, I tried to get a hold of the latest specs for the PSD file format. To do this, I had to apply to them for permission to apply to them to have them consider sending me this sacred tome. This would have involved faxing them a copy of some document or other, probably signed in blood. I can only imagine that they make this process so difficult because they are intensely ashamed of having created this abomination. I was naturally not gullible enough to go through with this procedure, but if I had done so, I would have printed out every single page of the spec, and set them all on fire. Were it within my power, I would gather every single copy of those specs, and launch them on a spaceship directly into the sun. PSD is not my favourite file format.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: