“PSD is not a good format”(code.google.com) |
“PSD is not a good format”(code.google.com) |
One quote worth picking out: "Wouldn’t it be better if all apps could read/write just one common interchange format? That’s just what Adobe is developing with FXG." Come 2015, and FXG appears to be dead and buried.
Maybe I've had ego about products beaten out of me by tough internal code reviews of every line I've ever written, but I'm not afraid to admit to the parts of our product that suck, or shipped "good enough." The psd format hardly seems like a thing worth defending. And it's basically an admission the rant is right that attempts to soften it with some excuses.
The origin of PSD’s complexity is the low-level organization of Photoshop’s abstractions, which dates from the late 1980s and has become more and more unwieldy as Photoshop has gradually accreted features over its 25-year history.
Complaints about PSD in this style basically amount to complaints that Adobe hasn’t ever tossed out backwards compatibility and done a rewrite from scratch on a cleaner set of abstractions. But there are obvious business reasons for them not to do that.
I’ve had some experience parsing and working with the data inside the PSD format, and honestly, it’s not nearly so bad as this rant makes it sound. (Disclaimer: that’s coming from a baseline of 15 years of heavy experience as a Photoshop user.)
I'm not sure how FXG was every going to replace PSD given than FXG is for vector based graphics. I suppose it could replace PSD for some types of content but stuff like digital painting it doesn't seem appropriate at first glance?
As an aside this is what FBX is trying to be for the CAD world.
https://news.ycombinator.com/item?id=575122
and sundry others: https://hn.algolia.com/?q=psd#!/story/forever/0/psd%20format
But yeah, I definitely remember seeing this in the past. Feels slightly like a case of http://xkcd.com/1053/, though?
And I don't see anything in the guidelines about re-posts. (https://news.ycombinator.com/newsguidelines.html) You've got more HN experience than me, though, so I could very easily be wrong. :)
I'm pretty much that the things guys like this are programming now (assuming they are going mainstream which I HIGHLY doubt) will be seen as cryptic and really naive when a programmer from 2036 looks into them.
When you battle the darkness and smite it to get something working pretty well you have a right to do a little bit of editorializing in a comment. If you choose not to and save the rant for the bar on Friday evening or a blog post, that's ok too.
Of course looks can be deceptive and either or both of us could be wrong about how things "look."
Me? I appreciate a heartfelt "here there be dragons" in source with some reasoning and description, I may be too junior for your tastes. ;-)
The best I can say about that experience is (a) I learned a lot about how legacy file formats grow, especially when they are supposed to be "open" but are really treated as proprietary ground for developers to stomp all over in metal-soled booties, and (b) the company that paid me to do that work is long, long out of business. The misery is long past.
With legacy apps, your miserable past is usually somebody else's nightmarish present...
I had a funny - though unrelated - experience with RTF production a couple decades ago. To make things more interesting, we were using KnowledgeWare ObjectView for the job - a 16-bit RAD tool with a custom simil-VisualBasic syntax, and collecting data from a UNIVAC 1100. I moved to a different company about four years later, and later discovered ObjectView... oops, just ceased to exist. Phewwww!
I wrote a PSD dumper in 2013 so our artists could use Photoshop as a level editor. Interestingly, the Photoshop Javascript automation engine is so slow, that it was faster to parse the file in Python. Like a minutes-long export using Javascript in Photoshop took a second or so when dumping with Python for a file with 100 layers.
Also, the title used here isn't actually a quote from the link. I'd opt for the closing sentence "PSD is not my favourite file format" instead ...
The official PSD specs are now online: http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/.
Specs don't provide information about all PSD features, but they are a good start. As I recall, an initial version of https://github.com/kmike/psd-tools took a weekend; I was following specs, using PIL (Pillow) for pixels handling; also, I was checking other PSD readers when something was unclear - there is a lot of open-source PSD readers. Earlier readers are from 2005 or maybe earlier, they have been available long before the code with this "famous" comment was written.
Since compatibility is quite important in this case, I don't really expect big changes though. Adobe has a working code base and documentation for it, so there likely is no incentive to risk change.
This sounds like a spec that grew organically, with multiple people contributing to it over the years; the alignment might've come from PowerPC/68k-based Macs, as also evidenced by the use of big-endianness throughout.
And previously: https://news.ycombinator.com/item?id=4746787
There is no force more destructive.
You disagree with someone, awesome. That's not a reason to try to ridicule that person imo.
Not if you know what the word "apologist" means (it has nothing to do with ridicule). Try using Google.
Edit: dang has criticised my last sentence there, which is fair enough. It was meant as a dig. However, if you are unsure of the meaning of a word and are using either Firefox or Chrome, you can select the word, right-click, and choose "Search with Google" and Google will actually give you the definition for that word. It's a (relatively) new feature they've added. Also, search with "etymology" to find the origin of a word.
It's a complicated format but that i imagine is from the fact that it's highly backwards compatable. Not always with 100% success but i believe it's possible to open new PSD files in older versions of photoshop. It's rare to see compatability work both ways like that.
There are watches today that are 100x more powerful than Macs of that era. Almost anything that was good in a file format from that era would be bad today. Every novel and innovative application feature from Photoshop 1.0 would be seen today as trivial. Many of today's features would have been inconceivable.
If you think you can do better, then I'd encourage you to try. Just start shipping an app with a file format today, get a lot of users, take it through 15 major versions [2], and come back to us in 25 years. Then you can lecture those of us left alive on the right way to do file formats.
[1] http://en.wikipedia.org/wiki/Macintosh_SE [2] http://en.wikipedia.org/wiki/Adobe_Photoshop_version_history
This comment would be strictly better without that final swipe. Please don't do that on HN.
But overall, I think you’re misunderstanding what I’m saying. In order to fundamentally change what needs to be stored in a PSD file – which is basically a serialization of the Photoshop document that lives in memory while you work with Photoshop – you would need to fundamentally re-think the very low level abstractions that Photoshop is built in, which would mean completely changing the Photoshop user interface and every level of the technical stack, basically rewrite it all from scratch.
Given the features Photoshop supports, and the way they are built, the technical details of the PSD format are actually pretty straightforward and reasonable. If you spent a few months learning how all the Photoshop features interact and getting a loose sense of how they’re implemented, and then you read the spec for the PSD format, I suspect that you would find the file format to mostly make good sense.
The reason that PSD is complex and hard to implement for third parties (especially for someone not intimately familiar with Photoshop’s UI or structure) is that Photoshop is a very complex piece of software with many moving parts, worked on by hundreds of people over 25 years, not that Adobe’s engineers are incompetent or made the format needlessly arcane just to be jerks.
The world isn't an SAT test. Context always always always matters. (And, for extra context-matters, if you are now compelled, at the end of this post, to ask what a "Standard Aptitude Test test" is, I invite you to take a good long look at your life and ask yourself why you want to be That Guy because nobody likes That Guy.)
It's much the same as getting mad when somebody uses "hacker" to mean something other than "train and/or computer nerd". You don't get to lay a prescriptive claim to truth.
I am an apologist for the ideas of democracy, the rule of law and equality before it. As I am for certain aspects of attempts to achieve such. I am not any kind of apologist for facism, totalitarianism and ideologies that lead to such.
From a slightly different angle that may make the example clearer:
The so called "2 party" democracy has it's drawbacks, one of which is often labeled "partisanship" or something like that. I am an apologist for that, while acknowledging its imperfections and problems. The concept of the loyal opposition is the thing that seems to have worked best so far, I would argue it has worked best by such a huge margin that alternatives are scarcely worth considering other than as the enemy of freedom.
None of these does exactly what PSD does of course, so it's impossible to compare them.
A better example is perhaps TeX, which predates it by far, has been extended a lot during the years, and can still render both original documents as well as modern ones.
The challenge needs to add the condition of the app stretching the hardware capabilities so hard that a whole pile of not-so-clean optimization tricks are necessary to get the performance up to the acceptable level.
The file format is also well documented and fairly complex. https://www.sqlite.org/fileformat.html