@YAFU
Well, I'll try to keep it short.
There is a problem I have with this statement that you made:
Quote:
I prefer to think it's because the difficulties imposed by the closed code (or not clear specifications published), instead of thinking that these things happen for OpenSource developers incapacity or lack of talent.
This is the typical FOSS mantra that keeps being read on and on. A TL;DR answer to that is: in some/many cases FOSS developers don't even make an effort. Sometimes because they lack time, sometimes — because they are just being lazy or ignorant. In some extreme cases I heard a rather funny claim that it's unfair to support proprietary file formats, if respective proprietary apps don't support open ones.
Here is a more verbose reply, with real-life examples.
1. Visio. For years there had been claims how difficult it was to reverse-engineer its binary file formats and support them in free apps. E.g.:
http://dia-installer.de/doc/faq.html.enQuote:
F: Can Dia open Visio .vsd files?
Q: No, it can't. Visio file format is a completely proprietary and undocumented file format. So it is really difficult to write code to read it.
I'm really unsure who wrote that, but much of VSD was reverse-engineered, with actual parser code written in Python, by someone who isn't even a professional programmer. The guy who did it is a Cisco-certified network engineer, for god's sake.
2. PSD. The specification has been open and actively maintained by Adobe for two or three years now. No free software — neither GIMP nor Krita, despite the fact that both had respective GSoC projects — support it in a more or less complete manner. Krita simply had less code to begin with before their GSoC project started last year, and GIMP is missing a) public text layers API to map text layers parser's output to, and b) non-destructive editing implementation to map layer effects parser's output to.
3. ABR. About 4 years ago someone complained on Flickr that GIMP couldn't read brush dynamics from Photoshop. What I was told by the GIMP team is that there is no open spec for that part of ABR files. So I teamed up with the aforementioned guy who reverse-engineered VSD and single-handedly created the spec in about a week in my spare time. While at that, we also reverse-engineered GRD (gradient) files from Photoshop just for fun — we only spent two lazy evenings on that one. Obligatory disclaimer: I haven't written a single original line of code in my life other than back at school (in LOGO and Pascal) some 15 years prior to that moment. To get this done, I only had to be patient and methodical. That was all that was required.
Here's what happened next, or rather, what didn't happen next. Both specs were never used by the GIMP team — they never found the time for that. A couple of years later someone in the Krita team (AFAIK, Lukacz) stumbled upon the ABR spec and used it to create a new brush engine that mimicked the one from Photoshop. Whether they made an ABR loader or not I have no idea. The GRD file format support was added to SwatchBooker by Olivier Berten who had the time to take care of that.
4. Corel DRAW. Same story as with Visio, really. All that was needed to get this supported in end-user free software was a developer willing to team up with someone who can do reverse-engineering. The net outcome: support for CDR files (v1 through v16) in both LibreOffice and upcoming Inkscape 0.91 (probably in upcoming Scribus 1.5 too).
All the examples above have two single common features:
1. One doesn't have to be an uberprogrammer to reverse-engineer a proprietary file format.
2. Having a spec means pretty much nothing if there is no programmer willing to build upon it in end-user software.
Finally, here's an example of a case where even an open spec and a dedicated developer would have little effect on the state of affairs. Please read the comment from Maeric at the bottom of
http://libregraphicsworld.org/blog/entr ... esign-tool.
Well, that was
my experience. Perhaps yours is completely different.
P.S. Also, just to keep the fun going. OpenRaster, as you probably know, is a completely open file format. MyPaint makes a somewhat special use of it: it dumps another file into the container. This file keeps a record of all brush strokes made, so that at any later time one could reopen the ORA file, click on the canvas where a brush stroke is present, and reload the very brush that was used to make it. If you open such a file in GIMP and re-export it, this file will be erased from the container and lost forever. So much for open specs and open source code.