Hacker News new | past | comments | ask | show | jobs | submit login

For some perspective, the Flash Player code base is almost 20 years old and must maintain binary compatibility with ancient content (because many websites have binary .swf files without the .fla source files). Flash is likely the world's most installed software when you consider that most Windows and Mac and Android devices have Flash.



Adobe Flash, formerly Macromedia Flash, formerly a vector-based font-authoring tool rejigged into an animation system called FutureSplash.

It's no wonder the thing is so jammed full of fossilized code. Legacy platform support. Legacy plugin support. The whole thing is a museum of bad ideas and shoddy implementations done by people who no longer work for companies that don't even exist.

It was wildly successful, beating out even its brother Director slash ShockWave, which is an admirable achievement, yet did not come without a cost. Like Windows its success has saddled it with an enormous base of users and developers to keep content.


This is not as much of a burden as would first appear. The vast majority of Flash files (except those that rely exclusively on actionscript for rendering) are based on as relatively small set of primitives/instructions: place object, move object, show frame, etc. When new features were added typically a new instruction was introduced. Only very rarely was an existing instruction modified for example PlaceObject2 being extended to include optional event handlers for movie clips.

A big problem with all things Flash-related is that Adobe was rather half-hearted in its commitment to making Flash open so the documentation was never quite as polished as it could be. Another problem which probably the source of the frustration in the original post is that functionality was added rather than existing code upgraded. That probably meant that the existing code along with all the warts was left untouched rather than run the risk of making breaking changes.

The "interesting stuff like jumps past the end of function" were I think attempts at obfuscation since decompiling flash files and actipnscript is not very difficult. Another example was to append actionscript byte-codes at the end of a table used for strings and amend the length of the table to hide the code. The following actionscript byte-codes could then add jump into this hidden code which would hopefully but not successfully confuse the decompilers.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: