views:

739

answers:

10

I'm in the trade of developing business web applications. They are mostly internal-use, sometimes with a partner zone, but rarely available to the public internet. They are applications that help companies run their business.

For some time now I have an idea bugging me - why not use Flash for them? Up to now it's been ASP.NET + AJAX, which is not bad, but it's still the same old HTML+JS. As a result, browser compatibility is difficult to achieve and creating a rich UI that suits the clients needs/wishes is challenging. Most of the time this results in the application supporting IE only, or at most - IE & FireFox.

Flash would solve all this. It would instantly run on all browsers and all platforms. The UI capabilities far exceed those of HTML+JS. It can be loaded by parts and can do asynchronous communication with the server. What else can you wish for?

Yet somehow I haven't seen or heard anyone doing this. Instead, new alternatives (like Silverlight) are created which essentialy do the same thing, but still try to cling to HTML+JS. What am I missing?

It should be noted that I've never done any Flash development, so maybe I'm seriously overlooking something that makes this impossible.

+8  A: 

A big reason is accessibility. In a sufficiently big organization you will have a few users who need bigger text, screen readers, braille terminals or higher contrast. There are existing, well-established technologies for using those with "normal" web applications (if they don't rely too heavily on JavaScript usually).

Those technologies usually fall flat on their face as soon as your content is trapped in flash.

Joachim Sauer
So far I've never had accessibility as a requirement. Then again - perhaps I haven't developed applications for THAT large companies.
Vilx-
couldn't agree more
annakata
@vilx - never worked for a government org or public body? A lot of the more clued in financials also live in fear of being sued for discrimination so it's *really* important.
annakata
@Vilx: as soon as you write anything for the US government you'll have to fulfill the requirements of Section 508 for example: http://en.wikipedia.org/wiki/Section_508 Other big companies also follow those requirements.
Joachim Sauer
Luckily, I'm not from US. :) I live approximately on the other side of the world, in Eastern Europe. And yes, I've developed several applications for the government as well. Guess there is no such rule here.
Vilx-
Accessibility is for everyone. I really hate those funky Flash applications, where text is blurred and mostly cannot be selected, copied or pasted as expected, like on any web page.
OregonGhost
@Vilx - accessibility isn't just a US government requirement. Not having this kind of accessibility could be viewed as discrimination - particularly where you are writing business apps. You could be denying people a job through your choice of technology. This is why US govermnet and others insist.
Sam Meldrum
@OregonGhost - Agreed! I can't stand flash.
g .
It's worth noting that many accessibility features "fall flat on their face" as soon as you use complicated AJAX/DHTML as well. There's often a tradeoff involved.
fenomas
Out of curiosity: why the downvotes? I don't care about the rep, but I'm puzzled of why this answer is worth downvoting.
Joachim Sauer
This is completely the reason. You hit the nail on the head. Also, the European Union has some pretty strict rules on web accessibility if you care to go look for them. Ignorance of the law is no excuse and all that :)
Jon Grant
I think someone at PDC talked about this stuff for Silverlight. There's good style support in Silverlight that will allow you to switch an app into "accessible" mode. I'm not sure about it, so it's a comment, not an answer :)
jcollum
+10  A: 

It's already happening? Flex!

Learning
Wow! That looks nice!
Vilx-
+1  A: 
  1. Deployment. You're dependent upon a browser plugin which your IT department may or may not be willing to distribute.
  2. By using Flash/Flex you're basing your tech on proprietary software.
  3. Closed source, so its a helluva lot more difficult to debug

Having said all that, I actually quite like Flex, but for the reasons above, I view it as little more than a toy.

ListenToRick
1. Flash is there in over 90% of browsers, and if we can make IE7 a requirement for our applications, why not Flash?2. And IE+ASP.NET isn't?3. Same as above. I don't think that proprietary+closedsource == difficult to debug.
Vilx-
Closed source is more difficult to debug - you have no idea what your framework is actually doing unless you can actually debug the source! Its guess work!Corporate environments are often tightly controlled. The company I work for deals with companies who actively refuse most browser plugins.
ListenToRick
1. Flash is on something like 95% of browsers, thanks to YouTube etc. 2. Flash is actually very easy to debug as both Flash and Flex have a debugger. The Flex framework is open source, so you can see what it's doing behind the scenes.3. Flash is a platform like .NET or Java, not a framework
Iain
95% of browsers in the public world perhaps. NOT the corporate environment i.e. call centers, banks, councils etc. Further, ASP.NET IS a framework, but .NET and Java VMs are platforms.Finally, having a debugger does not mean that a language is automatically easy to debug.
ListenToRick
"Flash is on something like 95% of browsers, thanks to YouTube etc" Actually, the bulk of YouTube (everything except for the actual video) is plain HTML+Javascript. I don't think it'd work as well if it was more Flash.
bart
The flex framework (which is used heavily in most enterprise Flash applications) is open source.
benjismith
+1  A: 

It puts your application in a box.

If you're happy with the limitations that box brings then all well and good, but as well as gaining easier access to a rich UI you will have some constraints placed upon you. E.g. If you need your application to have search capabilities, you may have to write your own rather than relying on google (for external) or an internal index server (presumably you could still use an indexing service to a backend database and would then be able to access that through your flash app?)

I haven't written a Flash app for about 7 years. When I did, it was fun and reasonably easy to get small toys up and running, but I never considered for a serious app - long time ago though - I suspect things have changed.

Flash would solve all this. It would instantly run on all browsers and all platforms.

Instantly?

loading... 23% ...

;-)

Sam Meldrum
I'm talking about internal business applications. If Google could index them, I'd loose my job for the biggest security hole in company history. :P
Vilx-
And as for the "instantly" part - Flash can load itself piece-by-piece and cache the downloads. In the end it's not much slower than simple webpage loading. Except that after the parts are cached, everything is even faster, because the UI doesn't have to be re-downloaded every time.
Vilx-
The heaviness comes from having a lot of graphics and sounds, but business applications don't have a lot of them.
Vilx-
@Vilx - google can index your internal business apps. They sell devices which will index your internal network and give you google on the inside.
Sam Meldrum
Interesting. I'll keep this in mind.
Vilx-
A: 

Many people and organisations are doing this with both Flex and regular Flash.

Iain
+2  A: 

Flash seems to have been the next big thing in interactive applications for years now. However, for whatever reason it has never happened. I don't think it will ever happen now for the following reasons:

  • Javascript frameworks almost completely solve the problem of browser compatibilty and rich functionality. Have you seen Ext.js? See also http://www.joelonsoftware.com/items/2007/09/18.html
  • All web developers have some knowledge of javascript, so there is a low barrier to extending an application's functionality using it. If you want to write an interactive Flash application, you will probably be starting from scratch.
  • What you can do with javascript is moving on so quickly, Flash will probably become obsolete for many (not all) uses. This is the site that made me say 'Flash is dead': http://webdev.stephband.info/parallax.html - if you can do that with javascript, why would you ever need (to learn) Flash?
  • Chrome and FF3 have put javascript execution speed at the forefront of their development. Flash is a resources hog.
  • Just for me personally - I know the visual cues of a browser based app. I don't with a Flash app, and I feel like it is a new paradigm I need to learn. I don't think I am the only user who reacts like this.

All this considered, to me Javascript is the future of interactive applications.

DanSingerman
Have you tried writing an ExtJS app? The results are fantastic, but there is a lot that needs to be done to improve the development experience/speed!
John Paul Jones
+5  A: 

I've run a successful small business (myself, plus 2 other partners) developing web apps for large financial services firms (Fidelity, Hancock, Vanguard, T.Rowe Price) for 7 years using nothing but Flash.

For the first few years (2001-2004), I felt like we were ahead of the curve - very few other companies were using Flash to develop robust, "real-business" web apps. In 2005-2008, I felt like we had lots of competition. Now, I'm starting to see the end of the road - JS and Ajax now make it pretty easy to do all the things we used Flash for (asynchronous communication, highly responsive interactivity, charting, graphing, drag-and-drop, etc.)

Here's a few of my opinions:

  1. Flash can definitely handle "real" business applications - our clients use our apps to run or integrate with trading systems, risk management applications, portfolio monitoring, and other business critical functions. Anyone who says Flash can't handle such things are mis-informed.

  2. I developed desktop applications for years before starting my own business. Flash was the first technology that allowed me to do in a web-app as much as I could do in a desktop app.

  3. Flash does allow us to develop once, and run on any browser

  4. Flash gives us a much larger array of UI controls and widgets - when a specific type of interaction requires more than just a text box or radio button or drop-down menu, we can build whatever we need. Some apps require novel interaction affordances

  5. That said, in our experience, a web app must look like a web app, otherwise users won't get it. So, even though you can build any type of UI control or interface you want, you should probably build them to look exactly like standard HTML controls, and EXTEND their behaviors, but never change them. Don't expect users to learn something new.

  6. If you pay attention, you can keep your Flash apps more lightweight than a comparable JS/Ajax implementation. Get rid of extraneous graphics, animations, unnecessary fonts. We've build serious quantitative Monte-Carlo simulations/financial planning apps that were lighter than many of the popular AJAX libraries.

  7. The biggest downside is managing your app/sharing the workload with other developers. Bottom line - there just aren't that many Flash developers, and fewer established coding standards or frameworks. So, know in advance that you'll probably own the app yourself for as long as it lives. If you have clients that will take over the app once you deliver it, they'll have a hard time finding new developers to manage/extend it.

  8. The second biggest downside is that you're beholden to Adobe. If they decide to discontinue Flash, we're stuck.

  9. As someone else pointed out, accessibility is a real problem. There are workarounds, but it's a LOT of extra work, whereas it's often 'free' if you use HTML. (Although AJAX/JS also can have huge accessibility problems as well).

  10. I don't expect that the iPhone will ever support Flash. While Flash is essentially ubiquitous on desktops, it may never make it to mobile. (Adobe offers FlashLite for mobile, but I don't know much about it. Seems like the uptake has been pretty minimal.)

  11. While other technologies are catching up (and surpassing it in some cases), I think Flash has at least another year or two of useful life.

Hope that's helpful. Good luck.

mattstuehler
+1  A: 

Very simple: because the current incarnations of Flash are still too bug-ridden. For example, there is a problem with accented character input under Linux that is pretty much a show-stopper. I have also tested several frameworks recently that offer both JS and Flash as client-side technology and it took me only minutes to write small examples that behaved incorrectly with Flash.

mjy
A: 

It can be done, and be effective. However, it is usually not being done well. There is a tendency to be seduced by the dark side of Flex, and forget about the basics. The result is a plethora of truly horrendous applications that break expected user behavior.

Of course this is not limited to just Flash/Flex. I was brought in as a consultant on a website targeted at iPhones. Because of their implementation of CIUI, the back button and bookmarking functionality of the web browser is broken. "Oh we thought about that already". They had created an elaborate way to store your own page favorites on their server, assuming you are logged in of course. And a series of links insured that the user would never need their back button. I am not exaggerating here either, I kid you not.

Failures at this basic level are what you want to watch out for. Very nice applications can be built using Flash and Flex, and can solve browser compatibility issues. Just be careful to not forget the fundamentals.

A: 

It's worth noting that my bank uses Flash for its login screen. They're doing some sort of biometric typing rhythm identification that I think would be a security hole if it was in Javascript.

The downside is that it means I can't use their damn site on my mobile phone!

jcollum