SWF and AMF3 Specifications Updated

As announced by Thibault Imbert updated SWF and AMF specs are available for download at http://www.adobe.com/devnet/swf.html. I’ve included the what’s new text at that page for the new versions below. A link to previous version 10 SWF specs is also kept at the page as archive.

SWF File Format Specification (version 19)

The SWF 19 specification includes bug fixes as well as the EnableTelemetry metadata tag. The SWF file format is available as an open specification to create products and technology that implement the specification. SWF 9 introduced the ActionScript 3 language and virtual machine. The SWF 10 specification expands text capabilities with support for bidirectional text and complex scripts with the new DefineFont4 tag. TheDefineBitsJPEG4 tag allows embedding JPEG images that have an alpha channel for opacity and also a smoothing filter. SWF 10 also adds support for the free and open-source Speex voice codec and for higher frequencies in the existing Nellymoser codec. A new EnableTelemetry tag was introduced in Flash Player 11.4 and that affects all SWF versions.

Action Message Format (AMF) Specification

Action Message Format (AMF) is a compact binary format that is used to serialize ActionScript object graphs. Once serialized an AMF encoded object graph may be used to persist and retrieve the public state of an application across sessions or allow two endpoints to communicate through the exchange of strongly typed data.

On somewhat related news, Adobe has updated the roadmap for Flash. (See update4 at the end of my previous post ‘And Then Premium Features Arrived…‘ for more info about the changes).

With specs updated and no feature classified as premium (currently), kudos to Adobe, it seems Flash is taking steps to become an open format again.

Uncategorized Comments Off

SymbolClass Tag

We have been doing some enhancements about how we show information about SymbolClass tags in ASV (and UAE). Usually, I don’t post about technical matters like this because the info might be used by either competitors or SWF obfuscator vendors. We decided this one is sufficiently harmless, so here we go…

A SWF file can contain more than one SymbolClass tag in one or more frames. For the sake of simplicity, in this post I will discuss a single SymbolClass tag in a single frame SWF. Also please assume sample symbol tags are ones that can be placed on stage (like a DefineSprite tag – a Movie Clip-, not a DefineBinaryData tag) unless stated otherwise.

As the SWF Specs state, for AS3 SWFs, SymbolClass tag creates associations between symbols in the SWF file and ActionScript 3.0 classes.

Specs further state that if the character ID entry in the SymbolClass tag is zero, then the class is associated with the main timeline of the SWF. So that’s how good ol’ document class is defined.

Picture of entire text for SymbolClass tag in current SWF specs

Apart from the ‘export’ purposes mentioned in the specs, the association means:

  1. When you place a symbol, which has an associated class, on stage, in Flash Pro by dragging it from the library (or using a PlaceObject tag in a SWF), its associated class instance is created and run. For example, this is how the class instance that contains frame scripts of a Movie Clip is run.
  2. When you create a new instance of a class, which has an associated symbol, you can place the symbol on stage using addChild() or as in case of BinaryData symbol (DefineBinaryData tag), a class that subclasses ByteArray must be associated with the symbol and the byte array will be automatically populated with the data after the class is instantiated.

The tag  simply contains a list of symbol (character) IDs and associated class names.

Picture of SymbolClass tag structure in current SWF specs

Here is how ASV currently displays the information:

AS3 SymbolClasses as displayed in ASV 2012/05

The Good: Normal Case

Normally, the entries in SymbolClass tag list, both character IDs and class names, are unique, and so the association is true both ways: When a symbol is associated with a class (Symbol -> Class), the class is also associated with the symbol (Class -> Symbol), and vice versa.

If the character ID is 0, then the class is the document class (Class -> Main Timeline) [In this case, also Main Timeline/Document is associated with the class but that association is used automatically when main timeline is run/displayed along with the associated document class, in the first frame of a SWF file].

In a simpler world, if you only consider normal usage, for any random entry in the list, you could simply say: ‘If symbol ID is 0, class is doc class, else symbol is associated with class, and class is associated with symbol’.

The Expected: Consequences

What if, after a symbol is associated with a class, a later entry in the list has the same symbol ID to be associated with another class? First one is valid only. A symbol can only be associated with a single class (Symbol -> Class).

What if, after a class is associated with a symbol, a later entry in the list has the same class name to be associated with another symbol? First one is valid only. A class can only be associated with a single symbol (Class -> Symbol).

So a symbol associated with a class does not necessarily mean the same class is associated with the symbol. On top of this, many symbols can be associated with the same class and many classes can be associated with the same symbol.

This is much easier to see with a sample. Assume a SymbolClass tag which has 4 entries:

Entry 1 = Symbol1 : Class1

Symbol1 will be associated with Class1 (Symbol1 -> Class1).

Class1 will be associated with Symbol1 (Class1- > Symbol1)

Entry 2= Symbol1 : Class2

Symbol1 will NOT be associated with Class2, because it is already associated with another class.

Class2 will be associated with Symbol1 (Class2 -> Symbol1)

Entry 3= Symbol2 : Class1

Symbol2 will be associated with Class1 (Symbol2 -> Class1).

Class1 will NOT be associated with Symbol2, because it is already associated with another symbol.

Entry 4= Symbol2 : Class2

Symbol2 will NOT be associated with Class2, because it is already associated with another class.

Class2 will NOT be associated with Symbol2, because it is already associated with another symbol.

This entry has no effect.

Now we have,

  • Class1 and Class2 -> Symbol1 (Many classes associated with a symbol).
  • Symbol1 and Symbol2 -> Class1 (Many symbols associated with a class).
  • Class1->Symbol1 but Symbol1 -> Class2 (Class associated with a symbol, but symbol isn’t).
  • Symbol2 -> Class1 but Class1 -> Symbol1 (Symbol associated with a class, but class isn’t).
  • An entry that associates Symbol2 with Class2, but has no effect.

Things are not that complicated when you are looking from one side.

From within AS3, some classes have associated symbols. Though rare, the symbol need not be exclusive to the class.

From SWF side, some symbols have associated classes. Though rare, the class need not be exclusive to the symbol.

Actually, it is a lot more simple when you think it like this: To find the associated symbol or class, if you have the symbol ID, search for it and return the first found class. If you have the class name, search for it, return the first found symbol.

Current internal version of ASV places arrow icons to specify the associations:

Symbol Classes Dialog for ASV 2012/06

The Bad: Missing Parts

What if the tag for the symbol ID specified in an entry is missing in the SWF? This is clearly an error. The symbol will not be associated with the specified class, and certainly the class will not be associated with the missing symbol.

What if the class isn’t defined? Same as above.  The class will not be associated with the specified symbol, and certainly the symbol will not be associated with the missing class.

In these cases, a later valid entry for the non-missing symbol ID, or, class name, will create the associations as normal.

We can conclude that if an entry has an error, the entry is ignored.

But we still have the document class entry to consider…

The Unexpected: Symbol X

What if there is no entry for the document class? This is acceptable. The SWF file will run with no doc class.

Normally character IDs start from 1 and there won’t be a symbol with the character ID zero. But what if there is? The class for the symbol ID 0 entry will be associated with the Symbol 0, not the document.

Now this is interesting.

It turns out 0 is not really a magic number, it is just the convenient number for the (normally) non-existing symbol ID.  Tests reveal that, until the document class is assigned in the first frame, a missing symbol ID entry will assign the document class (and should not be considered as in-error).

So even determining the document class of a flash file can be tricky. A class assigned to missing character 28 can be the document class, while the class specified in the entry with character ID 0 is associated with a symbol, and the document class can be associated to Symbol 42 at the same time…

Flash, Flex , , , 3 Comments

ASV. 12.

 

Today, we released the 12th anniversary edition of ASV¹ (ASV 2012/05) and also SWF Revealer 2.08 update.

Thank you all!

 

Update (2012/05/17): To add some value to this dull post:

In the first days, people sent us their own SWFs to get back the decompiled AS, in order to believe that ASV really worked as advertised. We required people  include their name in the SWF so that we know it’s their own work…

Here are the samples we had on our site:

ASV 1.0 with SWF v4

movie2.swf (~6k), by Scott Romack, submitted on May 30, 2000.

movie2.txt (~2k) ASV 1.0 text output.

Notable notes:
This was the first ever sample we had.
Note the line
Duplicate Movie Clip (“motion”, “motion” & x, x + 16384)
The value added in Duplicate Movie Clip action is actually in the SWF and ASV 1.0 showed this. Later versions of ASV hides this value in order to make its output more compatible with Flash.

 

ASV 2.0 with SWF v4

curves9.swf (~7k), by Branden J. Hall, submitted on June 6, 2000.

curvers9-1.txt (~8k) ASV 2.0 text output to Flash 4 syntax

curves9-2.txt (~7k) ASV 2.0 text output to Flash 5 syntax

Notable notes:
Also demonstrated ASV 2.0′s ability to convert v4 AS syntax to v5 AS syntax.

 

ASV 2.0 with SWF v5

analog_clock.swf (~10k), by Marcos Pinto.

aclock.txt (~2k) ASV 2.0 text output.

Notable notes:
Demonstrated decompilation of the (then new) onClipEvent.

 

¹Action Script Viewer – the first SWF/Flash decompiler released on May 16, 2000.

Flash, Flex, MG Comments Off

And Then Premium Features Arrived…

On March 28, 2012, Adobe announced and introduced the anxiously awaited Flash Player Premium Features for Gaming, with Flash Player 11.2 and AIR 3.2. Also Roadmap for Flash Runtimes was updated. (BTW, the problem with the road-map is that it’s just some plans, ‘official gossip’ as I call it, it offers no commitment or legally binding promise from Adobe. And it can get updated anytime…).

What has the cat dragged in?

Good news is that using domain memory and (Alchemy introduced and officially documented) fast memory opcodes by themselves is not considered as premium use. Only using both domain memory and Stage 3D is considered as premium. So it seems Adobe listened to the community and did what it could. (‘a fair compromise‘ – Mike Chambers).

Licensing starts on August 1 -we have a grace period and any prior work will get to use the premium features royalty free-, there will be no charges for the first $50K of revenues (but 9% after that). AIR including for mobile applications for iOS and Android, will be royalty free.  There’s a FAQ about all this.

Another good thing is that Adobe states ‘no intent‘ for making any existing feature premium in the future (but any new feature may come as premium). In any case, it’s up to the community and individuals to trust Adobe about any intentions…

In summary, it looks as if only big gaming studios, who would use Alchemy to convert their million dollar 3D games to Flash for the Web only (as AIR usage is royalty free), are the target (and $50K entry point will protect small studios). ‘These premium features will allow console developers to deliver unprecedented, AAA console quality games to over a billion computers’ says Tom Nguyen, Sr. Product Manager, Gaming at Adobe.

Community response

[in no particular order]

Nicolas Cannasse, creator of MTASC and Haxe, called this the Speed Tax for 3D games: ‘Adobe just made DECENT SPEED a “premium feature”‘.

Nicolas Cannasse

Joa Ebert, another name who needs no introduction to anyone in the Flash community, in his post titled ‘Collateral Damage‘, announced: ‘I am no longer committed to supporting any Flash related open-source projects‘. A sad development indeed.

Joa Ebert, Flash on the Beach 2009

Peter Elst, yet another name who should not be unfamiliar to any Flash platform developer, currently a Googler, tweeted: ‘I’m calling it… Flash Player time of death March 28th 2012, you’ll be missed – died at the hands of incompetent surgeons‘.

 

 

Tweet from Peter Elst

Robert Penner, author of famous easing equations – if you remember them, good old times-, author, former Adobe Flash Team member, tweeted the following: ‘I thought Adobe was supposed to make money by building the best tools and services, not by cutting them & selling the platform. I’m not saying Adobe is wrong to change their Flash platform strategy. But I’d rather they be successful with great tools & free platform.‘.

Robert Penner in Flash CS4 About Box

Phillip Kerman, writer, teacher, programmer, tweeted: ‘man, can’t sleep… had a nightmare Adobe really did kill Flash. Wait, did I even go to sleep yet?‘.

 

Omar Gonzalez, Senior Software Architect @ Almer/Blank, tweeted: ‘I don’t think I’ve ever seen a company destroy so much of their own intellectual property in such a short amount of time. #amazing #Adobe‘.

.Net magazine covered the story

There were also positive reactions, I think mostly because some people thought the $50K is big enough a barrier that will protect them, some are clueless newbies who just heard about Alchemy opcodes and decided they are not affected, some use AIR exclusively and didn’t care about anything else, some sincerely found initial conditions for licensing acceptable, and some, I believe, felt that that to contain the damage, they have to back the decision publicly… And then some, chose to remain silent…

Below are links to some discussions on Google+:

Richard Davey: https://plus.google.com/106676047029022880747/posts/arRMVLEQdiN

Jesse Freeman: https://plus.google.com/113373098067901951782/posts/hJZMKnGh6We

Jesse Warden: https://plus.google.com/109537902154361720350/posts/Nmvh8HY4BG6

Other developments…

On March 31, Daniel Bunte had a blog post titled How we managed to get Alchemy1 working with FlashPlayer 11.2 Incubator and the secrets of SWF Tag 92. So it seems, Adobe will  use a different method for enabling premium features. This is a technical detail, still I find it important to mention here.

Kurt Melander commented on my previous post and said: ‘…speaking from the e-learning development side and as a US DoD defense contractor, the digital signing may be due in large part to the downgrading of flash and Shockwave from the DoD CIO office in terms of risk for mobile code. Shockwave .dcr format is now no longer allowed on military networks and is classified “1x”,  flash was downgraded from a “3″ to a “2″, lower numbers meaning higher risk to the network. One of the main reasons for this downgrade is the lack of Flash and Shockwave to recognize or validate digitally signed code.

Jethro Villegas, former Engineering Manager and Software Architect for Flash Professional, commented: ‘Digitally authenticated SWF files can be so useful in many ways.‘ I can’t agree more.

So, most probably, digital signatures in SWF files will stay for one reason or another.

Was premium features really necessary?

Thibault Imbert

Thibault Imbert, Sr. Product Manager for the Flash Runtime at Adobe, had the following comment at Nicolas’ post:

…because games could generate millions of revenue with maybe 200 copies of Flash Builder and Flash Pro sold. Is it a good business? Not really.

I also think Mike Chambers‘ (currently Director, Developer Advocacy for web platforms at Adobe) following comment there is important:

The model where Adobe invests all of the resources in developing the Flash Player, and then projects such as Haxe and Unity pull developers away from Adobe tooling is one that was not sustainable under the old model. Under the new model, it doesnt matter which tools and technologies you are using to develop Flash content, since revenue is generated based on the runtime and not tooling.

So-called Alchemy opcodes are officially well-documented.

So, it is clear that Adobe needed more money to support Flash Player development. But was the right answer Premium Features? Why wasn’t AIR developers targeted? Why wasn’t right click context menu introduced as a premium feature? Is $50K the optimal amount? Is 9% the optimal percentage? What will the nominal fee for Premium Features Developer Program be (which will be introduced after grace period ends on August 1, 2012)? Will it be be worth all this?

As I stated in my previous post, IMO SWF format is now a closed format. As someone programming for SWF format since April 1998 and co-author of the first Flash decompiler (since May 2000, which we still update daily) and many SWF related tools, I am qualified to make that statement. Closing SWF format will have ‘dire consequences’. (Our reaction as Manitu Group will be increasing pricing for our commercial applications, as we think premium technologies, require premium tools that cost premium prices).

Some last minute improvements to premium feature set has been a good thing nevertheless, but my personal opinion is that it won’t be sufficient to save the SWF format, hence the Flash platform. But we may have gained some time. And who knows, maybe more…

So, has Flash really died this time with the introduction of premium features as I predicted?

No hablo inglés.

 

Update: Robin Debreuil posted following comment while sharing info about this post at Google+:

‘I’ve heard of the death of Flash more times than I can count over the years. I think the difference this time is the claims are coming from the people that use it, and the ‘killer’ is the company that makes it. Time will tell I guess.

The quote that sums it up for me is:

“The model where Adobe invests all of the resources in developing the Flash Player, and then projects such as Haxe and Unity pull developers away from Adobe tooling is one that was not sustainable under the old model”

I’m sure that is true, but really it is saying Adobe can’t compete in spite of all the advantages inherent in making the platform. Look at FlashDevelop – made for free by two people (and no doubt some friendly help) and it blows away Adobe coding tools. Not because it is cheaper, because it is better.

So if you can’t compete, sure, business model two, try to wring money out of your platform standard as you slowly choke it to death. The real question though is why can’t they compete? If my money was tied up in there, I’d be asking that question a lot.’

 

And here is Mike Chambers’ reply: (I won’t be cloning the discussion, this is the last update I’ll have here, read more at its source).

Mike Chambers

‘I dont think it is a question of competing. Adobe could put in the resources to build a 3d authoring tool that competes with Unity, but why would it want to? Unity already is awesome, and can target Flash Player.

Why not create a model where Adobe doesn’t have to build every single tool that targets the Flash Player in order to ensure that there are resources to continue to invest in the Flash Player? Why not create a model that better reflects the core value of Flash, which is the reach and richness that the Flash Player provides?

Update2: Ray Cutro‘s G+ post titled Speed Tax for Speedy death of Flash Platform is a good read as he mentions certain points which I deliberately avoided, and illustrates sincere disappointment of a passionate developer.

Update3: [July 21, 2012] Tom Nguyen posted the following to the Adobe AIR and Adobe Flash Player Team blog: Update: Premium Features for Flash Player :

“We previously communicated that beginning August 1, new content using the Premium Features for Flash Player would require a commercial license from Adobe, and that we would share more details on how to obtain a license. We will be extending this deadline to give publishers more time to prepare and obtain a license. These Premium Features are designed primarily to enable publishers and commercial game developers to target the Flash Player with games developed using C/C++ (via the Project “Alchemy” compiler) and/or 3rd party tools such as Unity.

We expect to make available a website where you can obtain a license by the end of August, which will be available at adobe.com/go/fpl. And we are extending the free use of the Premium Features for new content publicly released prior to the availability of the licensing website. To obtain a license for grandfathered content that is released prior to the availability of the licensing website, please contact us directly at fpl@adobe.com.

To provide publishers with enough time to obtain a license to take advantage of Premium Features, Flash Player will not begin enforcing the license requirements for Premium Features until at least 8 weeks after the availability of the licensing website. Once Flash Player begins enforcing the Premium Features license requirement, unlicensed content requesting use of the Premium Features will continue to run, and will automatically use software rendering (for more information, please review the release notes for the beta release of Flash Player 11.4).”

Update4: [January 30, 2013] Adobe reclassified use of Alchemy fast-mem opcodes with Stage3D as nonpremium!  This means currently there are no premium features (but there can be some in the future).

Here is relevant part of the FAQ from Adobe Premium Features for Flash Player page:

What are the XC APIs?
The XC APIs are the combination of domain memory APIs and Stage3D hardware acceleration APIs. These cross-compilation APIs allow a 3rd party ecosystem of game development tools to target Flash Player, including languages such as C/C++ and tools like Unity, as well as the Adobe Flash C++ Compiler (flascc) cross-compiler.

What is the status of the XC APIs?
As of January 2013, the XC APIs are no longer classified as a Premium Feature and access no longer requires a separate license from Adobe, nor royalties. The use of Stage 3D APIs in conjunction with the fast-memory opcodes via the domainMemory API will be available as a standard feature without requiring that content creators enter into a separate license agreement with Adobe. …

Why is Adobe changing the licensing requirements for the XC APIs?

Based on feedback from developers, Adobe has decided to change the licensing terms for the XC APIs and classify these capabilities as a standard feature. …

 Current version of Adobe roadmap for the Flash runtimes states:

“As of January 2013, the XC APIs are no longer classified as a Premium Feature and access will no longer require a separate license from Adobe. Thus the use of Stage3D APIs in conjunction with the fast-memory opcodes via the domainMemory API will be available without requiring that content creators enter into a separate license agreement with Adobe. Developers and publishers that have published content using the XC APIs do not need to make any changes to their content to reflect the change of status for the XC APIs, nor submit royalty payments.

At this time, there are currently no APIs or features designated as Premium Features in the Flash runtimes. However, additional Premium Features may be added in the future.”

Also worth noting is that plans for Flash Player “Next” and ActionScript “Next”  has changed:

“However, by its nature, this type of architectural innovation is disruptive and generally not backwards-compatible. As Adobe has learned in the past from transitions between generations of virtual machines (from ActionScript 2 to ActionScript 3), this places a high burden on developers who want to take advantage of features and APIs which may only be available via the new runtime, or which may require significant porting of content, frameworks, and libraries. Given this, as well as the growing importance of browser-based virtual machines, Adobe will focus its future Flash Player development on top of the existing Flash Player architecture and virtual machine, and not on a completely new virtual machine and architecture (Flash Player “Next”) as was previously planned. At the same time, Adobe plans to continue its next-generation virtual machine and language work as part of the larger web community doing such work on web-based virtual machines.”

This is consistent with Premium Feature reclassification, as earlier plans were making fast memory opcodes irrelevant:

New ActionScript 3 APIs to access the fast-memory opcodes are no longer being added to the “Dolores” release. The APIs are no longer relevant due to planned improvements for ActionScript execution and APIs in ActionScript “Next”.

Below are a couple of  Twitter reactions to the news:

Good news everyone ! Flash Premium Features licensing is no more in effect for XC API’s. - Ralph Hauwert @UnitZeroOne

#wtf now #stage3d + #alchemy are no longer a premium feature. So wht purpse served that move lst year ? #as3 - Patrick Le Clec’h@pleclech

It says a lot about the stewardship of Flash that rolling back a bad idea is seen as the top new feature. - Robin Debreuil @debreuil

The #Flash speed tax is dead. Hope #adobe doesn’t replace it with something worse - Nicolas Cannasse @ncannasse

Central-Apollo-AIR, Flash, Flex, MG, Misc. , , , , , , 3 Comments

Why will Premium Flash Player Features Kill Flash?

SWF file format, the format for Flash files, is proprietary. Flash has been criticized for this by many, including late Steven P. Jobs.

But SWF format has been open, since 1998 with the initial release of SWF specifications. And this is what we all said against proprietary format argument.

Openness of SWF format meant that any 3rd party can create SWF files without the need to get permission from Macromedia or use any Macromedia software (now Adobe). Then we saw 3rd party SWF related utilities flourish, from Claus Wahlers‘ JPEG to SWF converter to Swish text effects to animation packages like Toon Boom Studio. (We also made a living around SWF format).

This openness has been a very important ingredient of Flash’ success. Even with open SWF format, Adobe still has the upper hand, because they control the Player³ and hence the new features: 3rd party apps can only use existing features but Adobe software can make use of the latest features.

If some features of the Flash Player is to become premium, this means SWF format is no longer open, just documented (assuming Adobe continues releasing SWF specs).

As we all know, Flash suffered many blows in the last few years and declined. Flash could have become the software on every appliance in the world for ever; thanks to the competence of Adobe suits who couldn’t stand up against S. Jobs of Apple, Flash retreated to gaming world (and DRM infected video delivery)¹.

Now, with Flash Player 11.2, open SWF format is going away.

[Adobe introduced domain memory and some opcodes, that performed faster memory operations, for Alchemy project (C to AS3 conversion). AS3 was not fast enough, so many 3rd party developers made use of these opcodes to create Flash content and more importantly libraries. Flash Pro couldn't make use of the opcodes but Haxe did, our own Azoth  did, Joa Ebert's tools did. That was the power of Flash and open SWF! (Soon will be history)].

I’m on no pre-release program so can speak freely (and ignorantly). Adobe decided to make money off -maybe what they saw as a dying platform- Flash by charging for what they call premium features. SWF files created for new 11.2 player won’t be able to use so-called Alchemy opcodes, unless they are signed².

[Old content, created for older players, older SWF versions will still be able to use the opcodes in the name of backward compatibility (But AFAIK, not the libraries/SWCs if they are loaded by a newer version SWF file). So this move is deliberate and has no technical justification - only greed for more money, I would say. Well, this is nothing surprising, Adobe seems to lay off more talent as they make more money...]

What is really pathetic is that they are promoting (demoting) an existing feature to premium. (If a totally new feature was introduced as premium, that would have been easier to digest).

This move will make the SWF format closed… So, a free version of Alchemy 2 is irrelevant here. Any Adobe software that creates SWF files is irrelevant.

This is a major change (blow) to the Flash eco-system. Here’s what Nicolas Cannasse, creator of MTASC and Haxe, wrote about this in a recent comment:

“The ability to fully target the flash player has suddenly transformed from being free to being locked-in. That hurts the confidence of many developers (including me) which was already quite down with recent announcements”.

And if this happens (now seems inevitable with Player 11.2 release), I, hereby, predict Flash’s death.

Well, some say Flash is already dead.  Release of premium runtime features will only be my personal recognition for the date of death. Flash will not suddenly go away or disappear, for sure.  But it will be the point of no return.

With Player 11.2 release, we will welcome a dead Player with Premium features. I will not install it on any of my personal computers I actually use* – I heard web still exists without Flash…

 

 

¹ And Flex is abandoned to Apache. (You may say it is now better for Flex, but you see, Flex is now just a footnote. Sad.)

² Signing files against modification, or, as signaling approval are totally different subjects.

³ Adobe also controls the distribution of the player.

* I intend to keep latest 11.1 version and not update, as long as I can. Afterwards my computers will be Flash runtimes free.

Central-Apollo-AIR, Flash, Flex, Misc. , , , , , , 6 Comments