Miguel
links to a
blog post by Anne Zelenka (read the comments!) about how
open Flash is and how good an open Flash would be. I think
one point they all don’t see in their “an open spec would be
enough” is the work necessary to produce an open spec.
Now let me get this straight. Adobe has a spec for the SWF
format, and they have lots of documentation on Actionscript,
so producing some spec would be easy. But the problem is
that the existing specs only describe correct behavior, but
not the more important part on how to treat errors. Consider
an example where the spec might say something like “height:
Integer – the height of the current movie”. So what happens
when your code does height = new Object()? It’s written
down nowhere. In the current closed world, the solution is
easy: the accepted behavior is what the Adobe Flash player
does. So if you want to write an open Flash Player like Swfdec, you don’t
need a spec, you need patience and lots of test cases.
Because there’ll surely be a Flash somewhere that does
height = new Object () or height
= height / 0 or height = "Hello World" or…
A good example of how hard it is to handle the unexpected
right is Acid2
for CSS. And in the case of Acid2, there even exists a spec
about how to handle all the errors. (I was going to link to
something I read by I think Håkon Lie about why having a
defined way of handling errors is important as opposed to
just aborting, but I can’t find it in Google.) And error
handling mechanisms are an important part of an
implementation. The
Mozilla team needed 1.5 years to correct their error
handling. So if you figure out something new and exciting
about Flash, it can easily mean you have to redesign a large
part of your player. So it’s important to know beforehand
and should be part of the spec.
And while we’re talking about necessary rewrites: A part
that no spec talks about is implementation complexity. If a
function is O(1) in the official player while it is O(N) in
yours, you have a problem when someone calls it excessively
in a loop. And then there’s probably code relying on
timeouts, data input or the phase of the moon.
Another thing I’ve been wondering about lately is the
complexity of implementing a standard. I have no clue how
Flash relates to SVG in complexity, but SVG has an open spec
and that one is 4 years old. Do we have any SVG compliant
implementations by now? HTML has a free spec, too. It took
the Mozilla team 6 years from open
sourcing to a
release for their browser. So if a complete Free
Flash specification started to exist tomorrow, would it take
5 years to implement?
An open Flash spec would definitely make Flash inch closer
to World Domination, but it’d still take a very long time to
make it really Free. Open sourcing the player would probably
make that happen way faster.