Tuesday, 1 March 2011

Why not use Flash/Silverlight on public websites

This blog post is about why not to use Flash/Silverlight on your website. You can find hundreds of people who have already written on this topic but I still meet people who think it is a good idea. There are a few cases where it makes sense to use these technologies but in most cases you, your customer(s) and your end users are better off, not using Flash or Silverlight.

Why not use Flash/Silverlight
  1. A page with Flash/Silverlight will load slower. Especially if the page also has a lot of javascript on it.
  2. Inconsistencies with web standards. A flash movie gives a different feeling than ordinary web content:
    • Print does not work the same.
    • Copying content might not work.
    • Navigation, including back button don't work as you are used to.
    • Enlarging text doesn't always work the same.
    • Input fields, buttons etc look different and can confuse end users.
    • Bookmarking or linking to your site is more difficult since you're probably not able to link to the exact section within the Flash/Silverlight movie.
    • Searching text on the page (ctrl+F) doesn't work.
    • Less usable for the disabled.
  3. Internationalization and localization is more complicated.
  4. SEO is more difficult and in most cases will be less good than a plain HTML solution.
  5. It is more difficult to maintain the code as the resulting .swf/.xap file is closed and require special skills other than regular web development skills.
  6. Flash design is usually hard coded. You can not easily reapply a new style with such as with CSS. Silverlight makes this easier with XAML but XAML again requires knowledge and special tools.
  7. It is usually more difficult to update Flash/Silverlight content. There's usually no wysiwyg support.
  8. Q.A. gets more difficult (automated testing and code review is more difficult because it requires other skills and tools).
  9. Analytics using tools such as Google Analytics is more difficult and usually less precise.
  10. In most cases you don't have control over if the end user has Flash/Silverlight installed. Even if the website is an Intranet and everyone is supposed to have the same setup there's usually someone with a non-standard client that will complain.  
  11. Flash will not run at all platforms. (e.g. Flash on iOS)
  12. Flash/Silverlight is more difficult when it comes to progressive rendering. Normal web pages load and render parts of the page before the entire page with all the page resources are sent over the wire. With Flash/SilverLight you might need to create pre-loaders or put extra work into the implementation to make it load smoothly.
  13. You might have to create fall back solutions for those who have not installed the Flash/Silverlight plugin.
  14. Flash/Silverlight usually requires more bandwidth.
  15. Some developers and designers will get tempted to put fancy features or overly fancy designs into the Flash/Silverlight and they often do. These features can often become a source of irritation as they waste the time of the user or make the user think. Often they will create fancy animations on their top notch Mac computers and forget to test it on slower computers. Heavy use of animations requires more CPU usage which again is less environmentally friendly.
  16. As a developer you can get problems with stacking order if you have layers that will popup over the Flash movie. The Flash will always position it self on top, regardless of z-index. might work. Often you don't get into this problem until long after the Flash is developed and you need to update the Flash to fix the problem.  
Now that the web is getting more ubiquitous with mobiles and more and more client types appear (like tablet computers) it gets more important to adhere to standards and reuse best practices.