> > I see Flex as a "host" agnostic GUI toolkit.
I dont agree with this assertion. Right now, browser based Flex apps are entirely dependent on the Flash Player which in turn depends on the browser in which it is running. For example, any HTTP calls that is made from Flex/Flash Player actually goes through the browser. That is why we are able to use the nice functionalities like browser cache, automatic cookie header attachment etc. Another example is - a flex app can make only 4 concurrent uploads/downloads from the same domain in Firefox vs. 6 concurrent uploads/downloads in the same app running inside Internet Explorer or Safari. What I am proposing is to go directly to the browser using ExternalInterface + JavaScript for features that Flash Player does not provide Flex - which turns out to be mostly non GUI related features. This achieves two purposes: a.) To an extent, try to reduce dependency on Flash Player, thus decoupling Flex from Flash Player's release cycles and market goals. b.) Plug the holes that cause a disparity between the capabilities offered by HTML5 and Flex. > Any integration which is not > cross platform/browser/device would have to be extracted and implemented as > an opt-in separate library that enhances Flex functionality in that given > area. > Other than that, I think that having to deal with (in this context) > dependencies with browser vendor related issues ( potential cross browser > incompatibilities and all that ) is something that could affect the natural > release cycle of the the SDK itself. > As I mentioned earlier, the key is clean abstraction and graceful degradation. I agree - if we are not able to achieve that I wouldnt push for this to be included in Flex. Instead of checking for browsers versions, lookup features support matrix like we have to do in Javascript, in Flex end users will be able to write simple code like: if(FlexBrowserCapabilities.indexedDBSupported) { //write data locally } else { //write data to server } if(FlexBrowserCapabilities.geoLocationSupported) { //Call apis to get location } else { //Ask user to enter zip code }