Thursday, February 22, 2007

Why I don't get Adobe Flex

Mark Anders
I don't get Adobe Flex.

Actually, Flex looks great. Solid architecture, slick IDE, modern declarative markup language and scripting language, lots of productivity features.

Still, I don't get it. Why would an architect choose to rely on a proprietary runtime, available only from a single vendor to do stuff that can be done just as easily with standard XHTML, CSS and JavaScript?

I chatted on Flex with Mark Anders from Adobe. Mark worked on ASP.NET from 1998 until 2003, and then co-founded the Flex effort at Macromedia.

Mark demoed Flex at FOWA today, building a functional, slick Flickr tag browser in few minutes using the Flex markup and practically zero code. The thing is that the exact same day can be built with just as easily with an environment like ASP.NET, with the output delivered to the client using standard XHTML CSS and JavaScript. So why Flex?

Is Flex Adobe's way of leveraging the huge Flash developers community and lure them into a vendor-lockdown?

According to Mark, Flex is a way to avoid the browser compatibility issues, especially with regards to CSS and JavaScript. It's a reliable, predictable runtime that works the same way on all browsers.

Flex must have been a huge engineering effort. Could the same effort have been dedicated to delivering the same productivity and reliability advancements, but with the markup and the script "compiled" into XHTML + CSS + JavaScript instead of proprietary Flash runtime bytecodes?

And what about search engines and other content-aware tools, which cannot easily access the content delivered by Flex applications? And permalinks, which do not work as naturally with Flex as they do with HTML? How do you bookmark a piece of content in a Flex application on Delicious? And - which surprises will you run into when you hit the browser's Back button?

The upcoming Apollo server platform from Adobe promises to deliver support for rich web applications that work equally well offline and online. This is something I've been looking forward to for a long time. Of course, it will require the Flex runtime to provide this functionality. Technically speaking, I don't see a reason why the same capability cannot be delivered through standard XHTML + CSS + JavaScript + a client-side plugin, which could be a subset of the Flex-required Flash runtime.

Given Adobe's track record with Flash and its 98% penetration, I think it's safe to guess that Flex will be hugely successful. Still, I can't help but feel that in a sense, it's a step backward. Or at least sideways.

58 comments:

shamshins said...

The advantage of flash was always the fact that it provided a relatively easy way of creating rich and compelling vector based UIs with a tool that was easier to use that traditional programming IDEs.

In the past there was no way you could achieve "flashlike" effects with ASP.NET.

However, that is going to change as more people adopt WPF (Windows Presentation Framework) which enables vector based UIs from within .NET apps.


It will be interesting to see what happens in the next 2-3 years in this arena. Adobe is no small player, and if they manage to stay ahead of the microsoft curve, they might definitly control this market. I wouldn't call it "proprietary" just yet - it could turn out to be the mainstream platform for rich UI apps.

YanivG said...

Yes, for rich and compelling vector based UIs Flash is probably the best solution (though depending on just how rich they are, SVG could also be a viable and more standard option in some cases).

The thing is that Flex is not positioned by Adobe toward vector based UIs - it is being positioned for content and information systems. This is the use case in which I feel that Flex is not the best solution for the problem.

i suspect that the same is true for WPF/E.

Re proprietary - what I mean by this is that there is a single vendor behind it, and is not standard based. As demonstrated by Flash, you can be both proprietary and extremely mainstream at the same time :)

Anonymous said...

"Why would an architect choose to rely on a proprietary runtime, available only from a single vendor to do stuff that can be done just as easily with standard XHTML, CSS and JavaScript?"
Flex enables you to do things that you can't do with XHTML, CSS and JavaScript. For instance, with one Flex component, I can record video from my webcam and play it back in the same application. You can't do that with HTML and JavaScript.
Photobucket seems to know that:
http://www.yottapixel.com/2007/02/17/flex-based-video-editing-tool-debuts-at-photobucket/

"And what about search engines and other content-aware tools, which cannot easily access the content delivered by Flex applications? And permalinks, which do not work as naturally with Flex as they do with HTML? How do you bookmark a piece of content in a Flex application on Delicious? And - which surprises will you run into when you hit the browser's Back button?"
A little research here would go a long way for you.

1. Search engines index .swf content no problem. A Google search for filetype:swf gives 48 million results for me.
2. Permalinks work fine. Check out Yahoo Maps! for an example: http://maps.yahoo.com
3. Back button works fine, same as in any browser. Again, Yahoo Maps! is the example.

"The upcoming Apollo server platform from Adobe promises to deliver support for rich web applications that work equally well offline and online."
Just to be clear, Apollo isn't a server. Its a new runtime from Adobe. Flex isn't a runtime, its a framework for building applications that get delivered via the Flash player.

Mike

Josh Tynjala said...

"Of course, [Apollo] will require the Flex runtime to provide this functionality."

Apollo will not require Flex. In fact, you will be able to build Apollo apps with only HTML/CSS/JS and no Flash at all. Apollo apps will, however, require the Apollo runtime kind of like Java or .NET apps require their respective runtimes.

Anonymous said...

The advantage not mentioned here is that when you deliver Flash it works and looks the same on all browsers/platforms (within reason). Try that with another technology--you'll have special cases for each user profile.

The issue of proprietary is an interesting one. Sure, if you were intending to build something that was to live for 100 years and you wanted it free from any proprietary technology, then Flash/Flex is bad news. The thing is, you can't make ANY computer software on any framework that will last, say, 10 years. You keep updating it. Step beyond the idealistic world and think about the cost/benefit to Flash. It's the best solution for many jobs.

--Phillip Kerman

YanivG said...

@mike potter:
"Flex enables you to do things that you can't do with XHTML, CSS and JavaScript. For instance, with one Flex component, I can record video from my webcam and play it back in the same application. You can't do that with HTML and JavaScript."
Of course. So go ahead and build this specific component with Flex. Unless your entire application is about recording video from a webcam, there is no point in building it all using Flex if you can just integrate this specific Flex component into it where and when needed.

"1. Search engines index .swf content no problem. A Google search for filetype:swf gives 48 million results for me."
The point is not about indexing SWF files. It's about being able to find a specific piece of information in a Flex RIA. If the application is not built to support it, "dumb" free text search on the text that may or may not be in it will not be helpful – clicking on the link will not show me the information I was hoping to find.

"2. Permalinks work fine. Check out Yahoo Maps! for an example: http://maps.yahoo.com
3. Back button works fine, same as in any browser. Again, Yahoo Maps! is the example."
Permalinks and Back work for Yahoo Maps! because they've invested a lot of effort into making sure they do. The "hack" they used for this (e.g. the use of the URL anchor) is a brilliant one, but it should be built into the platform, and not re-invented and re-architected by each developer.

"Just to be clear, Apollo isn't a server. Its a new runtime from Adobe."
Of course. I am sorry if I wasn't clear, by "server platform" I meant platform for the server side, not a server per se.

@josh:
"Apollo will not require Flex"
What I actually said is "… will require the Flex runtime to provide this [ = offline] functionality".

@Phillip:
"The advantage not mentioned here is that when you deliver Flash it works and looks the same on all browsers/platforms (within reason)."
True, this is a serious advantage of Flash (and Flex). It'd be great if the engineering efforts are invested into solving these problems, and not into inventing new runtimes with new problems.

"The issue of proprietary is an interesting one. Sure, if you were intending to build something that was to live for 100 years"
It's not about building things that will last 100 years, it's about building things that will inter-operate as seamlessly with the rest of the world that we live in today.

Anonymous said...

If you check out the Open Laszlo Project you will see they are doing exactly what you are asking for. They can compile their xml markup language to Flash or to Javascript/HTML/CSS and it's free and open source (CPL).

Anonymous said...

flex / apollo will be very important going forward. Adobe is the only company providing an efficient, reliable cross-platform and standards-based development and deployment solution.

and it's free (AS IN BEER)

James Ahlschwede said...

I hate to be a killjoy, but as someone who's done almost equal amounts of "standards based" and Flash based development, it's Ajax that's the step backwards.

I really really wish that wasn't so, but wishing doesn't really matter. Flash just works, and it's been ubiquitious for at least 7 years.

Anonymous said...

Could you post a video recording of how the same could be done in ASP.NET? If it takes only a couple of minutes, I'm sure that would be very instructive and really make your point. As a beginning ASP developer I'd LOVE to see how to do that.

Anonymous said...

so Flex is Java by any other name then?

Haven't we been through all this before? I thought that the widely held consensus to get out of these proprietary "standards" was open standards such as those published by the W3C? Sure Flash is lovely in theory, but again, hasn't it been widely derided as a development platform? I keep seeing this "installed on 98%" figure banded about for years, but you would still be insane to produce a Flash only website, even though this figure seems to trump even IE's market share!

I my opinion, Flex represents the bleed-back from web development tools: web development tools and practices being used to develop traditional desktop applications. It appears to me that MS and Adobe are battling to secure desktop developers as web developers, using these tools. But, again and again, hasn't it been made abundantly clear that developing web based or net connected applications a completely different kettle of fish (security being the chief concern). Wouldn't we all be better off if developer learnt about the intricacies of developing internet scale applications rather than giving them lovely pretty frameworks that output lovely pretty interfaces?

You want pretty vector interfaces? Get on the backs of the browser developers to get SVG in place. Then you can knock yourself out and get this pretty interface crap and realise that building an entire interface in SVG would suck just as much as a an entire Flash based site would.

Anonymous said...

I haven't found any other way to make interactive charts easily. And using the flex ajax bridge, it is easy to limit your flex use to widgets here and there that sit in nicely with the rest of the application.

skuunk said...

I have developed apps in both AJAX and Flex and the answer as to when to use each really depends on the project.

The cross platform nature of Flash (and Flex) really does save a lot of QA time when it comes to putting in a fancy UI feature (it only needs to be tested once). The advantage Flex has over Flash is in providing an enterprise architecture where multiple people can work together in a shared programming oriented development environment.

That said, you would mainly use it in an encapsulated web application. The loading time of the libraries in the SWF means you can't create a small UI component to be re-used throughout your site (AJAX would be better suited to this).

The encapsulation does provide the advantage when it comes to debugging your app though. AJAX applications beyond a particular size get a little unwieldy from both a development and a runtime perspective (the new Yahoo mail based on Oddpost's code looks really nice and is almost as fully featured as a Flex app, but runs really slowly and probably has a codebase which is difficult to manage). Even though Flex has a higher base memory requirement and load time, once loaded the components react very smoothly and Flex has a much higher ratio of functionalty vs memory limit than AJAX.

Anonymous said...

We made the choice to go to Flex here at my current employer. I can understand some of what you are saying coming from someone who has never used Flex as an everyday tool. Believe me, it offers much more than what ASP.NET can do and hands down is easier to use than XHTML + CSS + Javascript. The databinding in Flex is top notch and is the best I've seen in a web framework. Flex's event machanisms make for nice clean design. Using Flex's Data Services features, you can take advantage of features that are off the chain. You can push messages real time (JMS included) to your front end from your server (vs. polling for messages from the front end). You can use java remoting instead of SOAP web services. And you can take advantage of data synchronization, so if 2 flex clients are displaying the same data, and 1 client changes the data, the data on the second client's screen will change real time. I also think Adobe has been a good citizen in the open source community, and actually just recently, they are donating their javascript runtime they use for ActionScript to the Mozilla foundation. My biggest complaint about Flex, is that it is really designed to be used with Java, it would be nice if Adobe supported other languages. Granted, you can still consume web services from any language, but if you want to use, lets say Ruby for your back end, you'd have to use WebORB. But, overall, Flex is solid.

Anonymous said...

I mean no offense - but it is obvious that the people that 'don't get it' have not reviewed the architectural documents and do not understand what the Flex/Apollo framework buys them.

Any solution, wither proprietary or open-source, that can reduce the preponderance of Internet technologies to a lowest common denominator (e.g. maximizing simplicity, manageability, supportability, and stability) will make them a king in their respective courts.

In response to your XHTML + CSS + JavaScript stack question - the Apollo framework (a la WebKit) is a perfect way to wrap your preferred tool-set. You make it sound as if Adobe has some kind of agenda to prohibit you from using these tools - when, in fact, these are core technologies within the framework.

Backward? Sideways? No, a quantum leap in the direction of standardization for XHTML, CSS, JavaScript, Flash, and PDF.

Matt Wright said...

How this got Digged is beyond me. Just look at whats out there already and you can see why Flex is a totally viable technology. This is just another 'holier than thou' developer who likes to bash Flash. Dime a dozen.

Chris said...

As Rick said, if you think you can do everything in HTML/CSS/JS that you can in Flex, then you owe it to yourself (prior to commenting like this) to truly understand Flex (or any other technology for that matter) and why it exists, what it can do for you, etc.

I am all for open source, I use it daily, have contributed, etc. So, if you refuse to use anything but open source, that is your choice. On the flip side, your customers likely don't care a bit. They want the best application. And, depending on what that application is, Flex may be the best way to go.

Further, Flex is vastly superior for building web apps for many folks. AJAX is non-trivial, and is one reason so many frameworks have sprung up around it. But, even using these frameworks it is still relatively tedious. Sure, lots of really cool things can be done with HTML/CSS/JS these days, we know that. But, "just because you can" doesn't really cut it for developing apps your business relies on.

I build apps these days using Rails as a back end, and Flex as a front end, and it's just a wonderful experience. Flex is a great environment that is like using a real application framework, and has superb debugging abilities (Firebug is great as well, and it's a great tool in the belt), full documentation, and many things that just make it a first class professional development environment.

And to the person who mentioned, something about, "isn't this Java all over again." No. Flash is an essentially ubiquitous runtime, and truly is write once-run anywhere. This is indeed one of the strengths. If you enjoy all the tedious differences among browsers, um, well, have fun with that. I would rather spend time cranking out killer apps that work anywhere Flash runs (which is often a larger spectrum of browsers than many advanced HTML/CSS/JS apps cover), and spend my time on my apps, not on the painful browser diffs.

Lastly, for completeness, I should note that I do not use only Flex. I also build XML only views, and some HTML views. It just depends on the app you're building, or the specific need. But check out Flex, it's cool stuff.

Anonymous said...

i was there, and i think what flex has to offer is a good thing as it makes it easier for developers on different platforms (mac, win, linux) to build such apps and know they can run on all machines.

also with apollo you can take these off the browser and onto the desktop.

very good thing.

Anonymous said...

Flex Data Services affords opportunities to work with large sets of data in an easy and asynchronous manner. I've found that that's the real killer app with Flex.

Furthermore, don't think that just because the web is the delivery platform that Flex is meant for consumer websites . . . it works well for destination and novelty sites, but its true application is in enterprise web apps, and often on an intranet, away from public view.

Anonymous said...

You are misinformed. Apollo is not a server product, nor does it require Flex. You can write Apollo applications using XHTML/CSS/Javascript, AND/OR Flash/Flex.

Anonymous said...

Yaniv,

Great post opening some great discussion.

As the old adage says 'There's more than one way to skin a cat'. If you have a method that acheives your objectives the best way without using Flex, then go with it, as long as you've considered Flex and any other platforms available that may fit the scope of your job. I like to think of myself as platform agnostic and try to resist going with an approach simply because it's worked in the past.

Anonymous said...

I can't believe people actually compare ASP.NET to Flex. I had a whole argument about it over the weekend.

You CAN'T compare Asp.Net to Flex, ASP.NET is a server-side executed code which delivers XHTML, JavaScrip, CSS etc; Flex is precompiled and runs in a proprietary plugin.

Just because they are used for the same purpose does not mean they can be directly compared. Apples and Oranges are both fruits you eat but have fun comparing them.

Further discussion: http://karpus.wordpress.com/2007/02/26/adobe-flex-confusion/

Unknown said...

Why? Flex targets the Flash runtime, a very powerful and compact runtime engine that can do things browsers can't even think of doing.

Try doing the following in your XHTML compliant application:

- Build an image editing application that can save PNG's to your hard-drive.

- Create a cross-browser video player with your own custom skin.

- Create a browser-based VNC client (e.g. http://www.darronschall.com/weblog/archives/000192.cfm )

While all the above could be completed in pure Flash, Flex provides a robust application development platform on par with Microsoft's next-generation XAML/C# based model.

Anonymous said...

I can believe this got any attention. Yani obviously does not understand Flex and what it represents.

Anonymous said...

Please have a look at fauxto.com, and then understand why this runtime touts capabilities that are near impossible to do with AJAX (XHTML, CSS, Javascript).

While created using the FLEX framework, the result is a flash 9 swf capable of being run on MILLIONS of computers.

Other very cool examples of the posibilites of the flash runtime can be found here:
http://blog.papervision3d.com .

Anonymous said...

Whoops.. This papervision3d link will work:

blog.papervision3d.org

Anonymous said...

Take a look at how Dekoh www.dekoh.com (java based RIA platform) compares against Apollo http://www.dekoh.com/blog/news/entry/desktop_ria_comparison_dekoh_verses1

Unknown said...

I hate to sound like the comic book guy, but you obviously have no idea about flex. The reason you were shown the Flickr example is because it's fast, and can be done in front of an audience. I can write hello world in C++, and you can get the same output by using ASP.net, JAVA, RUBY, Python, Perl, ext. Does that mean that the other languages can replace them? They all have strengths, and part of being a good developer is knowing which tool serves the job. I can code ASP.net, PHP, Java, Flex, Flash, and AJAX. I agree that you could easily build what was demonstrated to you in .NET as easy or easier than in Flex. And if I just wanted a Flickr front end, even .NET would be overkill. I could write that in pure HTML and JS. That wasn't the point. It was to show the IDE, how the code looks, and the basic steps of creating an application. If I want a real-time, data-heavy application for use in a browser with low memory overhead, then Flex is the answer.

BTW, SVG may be a "standard", but it's hardly supported enough at this time to concider as a development platform (same with XUL).

And finally, you should be shot for your saying that the crap that .NET spits out is "standards compliant". It may be "IE compliant", but it in no way resembles what is spec'ed out in the W3C.

Tyler said...

Your right, you dont get Flex. At first nor did I, so I understand for point of view. This is not a competitor to the core technology's of the web(HTML CSS ect). It is without question that the web has become something very different then what was originally envisioned. There is a high demand do deploy applications over http. Most web apps use HTML CSS and Javascript to deliver the UI. We all know that developing a application for the web is hard using these technology's. Why is that? the answer is obvious. HTML CSS and Javascript where not designed as tools to create applications. Any application created with HTML and CSS is fundamentally a hack. The web was designed to be very document centric, HTML for applying semantics to data, CSS for customizing the visual presentation and Javascript was something added much latter down the road. With that said, these technologys are flexable enough to do the things we need them too with a lot of hackery required. Adobe is not the only people trying to bridge this gap. People from Apple, Mozilla, Opera and the W3C saw this problem and the WHATWG was formed to create Web Applications 1.0 or HTML5. The bottom line is that you use the right tool for the right job. Remember this is not one technology vs. another. Yes, you can use html, css and javascript to deliver a application. Just as you can open a can of soup with a hammer. Its not the most efficient way to go about it, but a better way would be to use a can opener because it was designed specifically for that job. For example you mention accessibility and SEO. If thats a important part of the project then use HTML. If your developing a web based PowerPoint presentation program. You probably are not that concerned with which HTML element is the most schematically appropriate for your add new slide button. Sorry, I didnt bother to read all the current comments(way to many) but I suspect that a lot of what I have said has already been called out.

Unknown said...

If I could add to the "you really need to try it" comments and the "appropriate tool" meme.

Our web publishing house creates sites in the best tool for the job - sometimes that is PHP, AJAX, Flash, and now, happily... Flex.

I personally hated Flash for development - the unintuitive UI meant me as a publisher couldn't ever get my hands dirty. I was always at the mercy of a Flash developer.... Where is that action script? What does it have to do with... anything at all?

Flex has changed all that for me. I'm currently working on a 2nd generation video site and coding Flex with ease, checking in and out code from Subversion with the developers, making big UI changes at will, and generally having a much easier life. This particular app could not be done any other way.

Next week we start work on an AJAX/ROR site because that is more appropriate for the job - we want on page indexing of content, and I'm personally dreading the research into cross platform libraries such as Yahoo UI, Prototype etc.

Different strokes for different folks (and tasks) I guess, but you really should try / research something properly before writing a post criticizing it, or at least disclaim against that. If you had tried a Rich Text or Video Player component in Flex, you would surely have seen how powerful Flex can be compared to Javascript.

As the other commenter said, nice post to get some comments going, and way to get Dugg by the AJAX fans. Can someone digg my site now?

Austin said...

Check out www.nikestore.com for a practical example of deep linking, back button support and search engine linking.

Do a search in google for Nike Shox III and go to the nikestore result. It links directly to a flash movie with that specific product.

Anonymous said...

Flex delivers one of the simplest and most economical way to develop anything with a complex and/or dense UI; e.g. spreadsheet-type of User Interfaces, or advanced charting/dashboards that need real-time refreshing.
It's great for building functionality that have a lot of functional density and UI constraints - that doesn't mean that you have to use it across your application; nor that Ajax is not best suited for building semi-complex pages. In large / enterprise-type of applications, the solution is clearly to use a mix of technologies.

YanivG said...

@ben davies: While I generally agree with you, judging by the comments on this post, it looks like there isn't really a consensus around this.

@tony: your analysis makes perfect sense to me

@allen riddle: I have no doubt that databinding – and the rest Flex features and architecture – are top notch. My only issue with Flex is the proprietary runtime used to achieve this.

@rick winscot: No offense taken. Note that I was referring to Flex when talking about HTML + CSS + JS, not to Apollo. Apollo makes sense to me, if Adobe can pull off a server-grade scalable & high performing runtime, it will be good news. It's the Flex part that I am somewhat uncomfortable about, with regards to standard, search engine compatibility and usability issues created by users' browser-related habits and expectations.

@chriss: not sure how you reached the conclusion that I refuse to use anything that is not open source – I use open source when it makes sense to me, and I use proprietary, vendor-specific tools and technologies when I think it is appropriate. My favorite server side development tool has been the oh-not-very-open-source ASP.NET for quite some years now, for better or worse. I agree that Flex is cool, but being cool does not mean that it can ignore the issues I've raised, at least not if you want users to actually enjoy using Flex-build apps.

@shan: I may be misinformed, but not about Apollo. My understanding of Apollo is in line with your comment. But thanks for clarifying anyway!

@rob toole: I'm with you :)

@daniel: you are right of course, none of the functionalities you mentioned cannot be implemented without using Flex and it alike. I suggest using HTML/CSS/JS wherever you can, and Flex for the components that require it, no more.

@bill: I am not sure I see the logical path between "A Flickr browser can be built in multiple languages" and "If I want a real-time, data-heavy application for use in a browser with low memory overhead, then Flex is the answer". But then, strong assertions are often a useful substitute for actual data. And since I assume that you don't actually mean to shoot me, I'll take a big risk and insist that the "crap that .NET spits out" is actually a pretty decent attempt at being standards compliant.

@tyler: I agree with you. HTML, CSS and JavaScript are far from being the perfect solution, and the document-centric approach that underlies HTML can be pretty annoying when trying to build an application and not a document. However, the various frameworks built over the years on top of HTML/CSS/JS do a pretty decent job at hiding this and providing an application centric set of components and technologies. BTW, if I was developing a PowerPoint presentation program, I actually would care about which HTML element is the most schematically appropriate for a new slide button, to ensure maximum accessibility. But other then this, I agree with your points.

@worldtv: I have no doubt that Flex is much more powerful than JS, it's hard to be less powerful (or less stable) then JS :) I also have no doubt that for some tasks Flex is a much better choice. And certainly, for many tasks it is a much better choice then plain old Flash. It's the other kind of tasks that I am talking about.

@actionscript warrier: thanks for the example, pretty cool. It'd be good to have the framework support these concepts internally, instead of having to patch them on later.

Anonymous said...

I didn’t understand Flex either before this post but after reading it, all the comments and some external material, I think I get it a little better now.

So, bottom line is, I think it looks great, it’s powerful and it removes some of the burdens of the developer.

Does it mean we will see a wider spread of “flash based” websites if the adaptation of Flex becomes more significant?

Great! Because what the web really needs is more websites that take 15 seconds to load (hey, at least the cool ones give you that nice animated progress bar with colors and stuff, beat that, HTML!)

Websites that take one third of the page’s width.

That don’t scale horizontally whatsoever

That don’t scale vertically unless the developer puts that strange non standard scroll bar which is 3 pixels wide, usually with the same color as the background.

That don’t support the back button (yes, yes, I read Yahoo Maps does, I will remind that to myself the next time I get pissed at one of the other 99.9% sites which don’t).

That don’t let me address any resource within the site with a simple URL change, bookmark or link.

That don’t let me change font size or use my own preferred font.

That don’t let me search within the document I am reading!!! Oh wait...I don’t need to search the document, because the document is usually just flashing pictures and colors (some of which are impressively pretty, I must admit).

That don’t let me copy/paste anything from the page.

That don’t let me save the page I am looking at for offline reading (no, I don’t want to get the entire swf file and play it again later, thank you).

That are outright hostile toward most of my Firefox extensions.

That don’t play nice with any JavaScriptlets.

That don’t allow any creative hacks on the site’s output, whether it is something like greasemonkey or simply parsing the page’s output in the absence of appropriate web service.

Not to mention (again) the propriety format and that open formats and the fact that everyone can just open the page and read the xhtml/css/javascript contribute greatly the sharing of knowledge and help people learn these technologies.

But hey...it’s cool, it lets the lazy developers the excuse not to test their application on the 4 popular browsers we have today...

Why is it that every time I hit a Flash based site I am pretty confident I will not find the information I am looking for? Mostly I am right.

</sarcasm>

Ok, yes, I see why and where Flex/Flash can be very useful and it does an awesome job there. It is those places where I need that special UI, that extra client side functionality or those specific bells and whistles. But as the Ring that binds them all? Aa aa, no way. It annoys me too much as a user (you know, the one who actually doesn’t care about your server side stuff).

Anonymous said...

Does your comment system work???

Anonymous said...

okay, I guess it worked that time... so here we go trying this again...

"Websites that take one third of the page’s width."

Also something you can do with bad HTML and CSS. Blame the developer, not the tool.

"That don’t scale horizontally whatsoever"

"That don’t scale vertically unless the developer puts that strange non standard scroll bar which is 3 pixels wide, usually with the same color as the background."

Flex apps are able to scale taller than the browser window and scroll with the browser's scrollbar. Even before that, Flash provided a standard set of UI components that included a normal scroll bar. Blaming Flash for 3-pixel wide scroll bars that are a bad color is yet again blaming the tool rather than a bad developer.

"That don’t support the back button (yes, yes, I read Yahoo Maps does, I will remind that to myself the next time I get pissed at one of the other 99.9% sites which don’t).

That don’t let me address any resource within the site with a simple URL change, bookmark or link."

Frameworks for supporting deep linking and back button are more and more common, and I wouldn't be a bit surprised if Adobe comes out with a standard one of their own soon. But in a Flex application that has one main screen to it, sometimes a back button doesn't really make sense. Do you expect a Back button to do something in a desktop application? Then why in a "rich internet application"? When it makes sense to go back to an application screen you were working on previously, sure, and in that case, it isn't Adobe's fault if the developers failed to see that.

"That don’t let me change font size or use my own preferred font."

Because you know better than a professional graphic designrer what font it should be in. As for size, Flash Player lets you zoom in and out on the whole thing (it's right there on the right-click menu), if you have a vision problem or something.

"That don’t let me search within the document I am reading!!! Oh wait...I don’t need to search the document, because the document is usually just flashing pictures and colors (some of which are impressively pretty, I must admit).

That don’t let me copy/paste anything from the page."

Have you even been to a Flash site since about '03? Many of your complaints seem really tired and outdated. Likewise, since Flash originated as a plugin for graphic and animation before designers/developers realized several years ago that it meant they didn't have to have the same boring gray UI as everyone else, the level of professionalism applied to Flash-based websites has had to increase. Much of the complaints most common complaints are stereotypes leftover from the early days of Flash-based web sites.

There are tons of really bad, ugly, dysfunctional web sites made in HTML/CSS/Javascript too, you know, but I don't see anybody saying that's the fault of the W3C or of browser vendors.

Anonymous said...

Much of your arguments seem to have been pretty well flayed by commenters here, so it seems the only thing you're still complaining about is the proprietary runtime and not standards-based (neither of which is entirely true, BTW). Before coming here I actually wrote
A post at my blog responding just to the DZone submission/summary and some of the comments there.
Now that I've read this page and these comments, I have some other thoughts I'll post here later.

Mark Zeman said...

Wow it's getting real boring seeing people trash Flash over issues that have been solved for quite some time. SwfAddress is a great solution that puts them altogether. Deep linking and the back button... bookmark away.

Design 4 Use said...

I would choose Flash output any day over HTML, CSS and JS despite being proprietary. Why?

Because customers don't care and aks for the best experience possible. I simply do not have time to wait until consortia finally agree after years to standardize. Besides, features like rotation, distortion and other dynamic presenation features are not available yet. I haven't got another decased to wait. My customers are asking for a great experience now.

Bill said...

Let's see... HTML came about as a means of displaying static documents in a [theoretically] consistent manner across platforms that rendered HTML. Browsers came along to integrate Internet services into a single user interface, though HTTP became the most predominate service used - and HTML was implemented in ways that allowed both text and images to co-exist on a "page".
Someone got frustrated with the limited click-request-response interactivity of the Web and came up with JavaScript, which allowed some small but interesting things to be done.
Then JavaScript became a standard and this whole DOM scripting frenzy became the hot thing. Then someone came along and gave all the old technologies a new umbrella name, AJAX, and suddenly the whole mess was revitalized as if it was something new.
What is backward to me is the fact that an entire Web application industry has been built - even STANDARDIZED - on a foundation that was never intended to support such concepts. What is backward is that everything interactive on the Web (based on the HTTP protocol, that is) is a hack, and yet so much effort and momentum continues to be fed into its continued, persistent mold-like growth into the future, like a mutant lab animal that scientists refuse to allow to die.
Flex is a breath of fresh air, as it provides an environment that makes sense - not to mention, an environment that is more consistent, pervasive and reliable than the touted "standards-based" technologies. It is actually an environment that is designed and INTENDED to be used for interactive APPLICATIONS, unlike browsers which really still only render static pages (and then are manipulated by JavaScript).
What I don't get is why anyone thinks standards-based implementations are somehow better, or why they insist on hanging on to (or remaining stuck in) the past.
Whether Flex prevails in the end or not, it surely is going to have a powerful and beneficial effect on the future of "Web-based" application development into the future, since it is giving us a good glimpse of how things should have been done from the BEGINNING.

Anonymous said...

http://srbenda.com

Anonymous said...

Wow! This is such an ignorant post. Please read up about something before posting about it. I can tell you are familiar with .NET, thats great I learned .NET in highschool, but Microsoft is just not keeping up. Its great for something, but if you want something much more responsive (without having to use AJAX) then Flex is the answer. I used to be a .NET developer, but now I get much more requests for Flex developer.

.NET = dinosaur
Flex = new kid on block

I would expect the dinosaur to be defensive...and here it is.

-Weber
www.weberdesignlabs.com
www.weberdesignlabs.com/blog/

Anonymous said...

Html is Good.
JavaScript is Good.
Flex is Good.

Good at what they do best.

I don't need my eStore to be indexed by google, although it could be in a Flex application. But Why?
I created a very successful B2B eStore system for manufacturing using ASP.NET. About 8 months of work and nothing but trouble getting it browser compatible. I tried to explain to the higher ups that you can't do those things with the browser, but they would not listen. So, I quit! Asta la vista, baby!

I just created the same application in Flex in less than 2 months, by myself not 5 developers. It has more functionality. Better flow. All the browser problems are gone. This application is going to bury my old company, once I release it to the customers. Not because they want it for their web, but because of the potential of it plugging directly into their already fine tuned data model. I do not think people care if it is html, flash, play-do, or even crayons melted in a pan. They just want it to WORK!

FLEX WORKS! In 98% of all client systems out there, including MAC (bleck).

P.S. (As for MS asp.net, I love it too. But I am having an affair right now)
P.S.S. Standards? Right. No One can agree on the standards, so here we are. Goodbye AJAX.

Anonymous said...

I must admit, that I agree with most of your comments here and wonder if they really are – in a sneaky, 'back door' way, trying to get people into a vendor-lockdown. Not cool if that's what they're – even secretly – hoping for. Adobe is, in once sense, showing support for the open-source idea. And in another sense, they're showing some Microsoft tendencies. I'm watching this with some trepidation, and only hope Adobe proves themselves as the better – and a good – company, than microsoft or the like.

Thomas said...

Wow, I see you were a bit more "lucky" than I was on your comments...
I was instantly hated by the ENTIRE Adobe Univers for mine which was far less bastant ;)
7 reasons not to use Flex

tahseen said...

Bill - I agree with your point 100%.

I prefer standards and do hope that the browsers start following it properly. But as you said, HTTP and HTML (+css, +js) is a totally broken model for RIA.
Everyone talk about JS or CSS hacks and perils of doing that but to me it seems that the whole Web 2.0 is a hack. We should try making something that allows Application to be Internet Aware in a standard way rather than evolve HTML to be an Application.

Seems Flash (Flex/OpenLaszlo) is at least moving to the forward direction not backward.

P.S. - I'm not sure about HTML 5 though, the proposal looks scary big for me to start reading.

Anonymous said...

Thank you for this blog, I spent my time effectivelly browsing it!

Anonymous said...

> Still, I don't get it. Why would an architect choose
> to rely on a proprietary runtime, available only
> from a single vendor to do stuff that can be done
> just as easily with standard XHTML, CSS and
> JavaScript?

Sorry. I don't mean to be rude but I had to laugh when I read this statement.

Can you build a 3D virtual world using XHTML, CSS and Javascript? I have using Flex. The technologies you mention are not even in the same universe, let alone in the same league.

Still, I appreciate your comments, so thanks.

Anonymous said...

Some folks are commenting that XHTML, CSS, and Javascript are preferable over a tool like Flex because it is open source. Open source is great, but should not be the final determinant in choosing a solution. Far more important to me is a "loosely coupled architecture". One of the main advantages of open source is not getting screwed by a vendor who decides to take a product in a bad direction or discontinue it all together. I really don't see that as being within the realm of possibilities for Flex. Even it does ever take a bad left turn on you, you can choose a different client side solution to fit into your loosely coupled architecture. It is this concept, far more than open source, that ensures your web applications' future viability.

R. Grimes

cicicocuk said...

oyun

deMello said...

I think that Adobe Flex is too expensive for me.

greetings,
przeprowadzki, fifa manager

Anonymous said...

For most Flash developers Flex is really handy because it helps them from working on a lot of enhancements due to browser compatibility issues. With Flex this matter is no longer a problem.

Anonymous said...

I haven't found any other way to make interactive charts easily.

Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...

I was instantly hated by the ENTIRE Adobe Univers for mine which was far less bastant ;)

SoftwareEngineer said...

The author of this blog post is complaining about proprietary technology and simultaneously praising MS ASP.NET!?!? Really? "Vendor-Lockdown"? Try running a .NET application on Linux or a Mac. It's not pretty.

Don't get me wrong, I love .NET. I even love Microsoft. But Microsoft is not some sort of perfect, holy, righteous company that produces only good.

I also love Linux. The Flex SDK is freely available to download and use (for Mac, Windows and Linux). And Flex uses Actionscript 3 which is based on the ECMA script standard. So, it is standards based. And if you love external standards so much, why are you touting Microsoft? Is it because you believe Microsoft is fully compliant with external standards?

How about ease of development? Developing an application with AJAX is a nightmare in comparison to developing the same application with Flex.

Flex has issues like any other technology, but it doesn't deserve the denunciations on this page, most of which are false.

Anonymous said...

There are tons of really bad, ugly, dysfunctional web sites made in HTML/CSS/Javascript too, you know, but I don't see anybody saying that's the fault of the W3C or of browser vendors.

gazeteler said...

Nice review, might give it a whirl. Just a note, since Adobe is taking their sweet time, you can install 32 bit Flash player on 64 bit linux with nspluginwrapper. I'm using that now, works fine.