Are Flash's Days Numbered? (or "Is Microsoft a threat to Adobe?")

Mix '06I was recently at Mix '06 in Las Vegas, courtesy of Lynda.com, along with a group of fellow Flash developers as part of a Microsoft-sponsored initiative to both expose some of us in the Flash world to Microsoft's new Expression line of products and to get our feedback on them.

The Expression line includes the incorrectly-named Expression Graphic Designer and Expression Interactive Designer as well as the Dreamweaver-clone Expression Web Designer.

I say "incorrectly named" because Expression Graphic Designer is actually an Interaction Design tool. During one of the sessions, it was used to create a site mock up that was later imported into Expression Interactive Designer to be developed. Which brings me to the fallacy in the naming of the second product: Expression Interaction Designer is actually a development tool. Confused yet? I sure was.

Beyond demonstrating a lack of understanding of the workflow and specialized roles involved in team-based RIA development, the misnaming of the products (if it remains unchanged in the final release versions) will actually harm the industry by perpetuating a less-than-ideal prescribed workflow wherein "graphic designers" will carry out the interaction and usability design of an application, hand it to "interaction designers" who will carry out the user interface *development* function and pass it over to programmers/developers who will carry out the heavy-lifting and back-end integration work in Visual Studio.

The correct workflow, of course, would include *interaction/usability designers* carrying out the design function (based on an iterative process that involves usability testing throughout) and user interface *developers* carrying out the UI development function. As such, Expression Graphic Designer should really be called Expression Interface Designer and Expression Interaction Designer should be called Expression Interface Developer.

(Things are complicated by the fact that you can also use Expression Graphic Designer to carry out traditional graphic design tasks such as creating skins for components. This is why it is better not to prescribe user roles in the names of the products themselves.)

As Branden Hall mentioned in his overview of Mix '06, Microsoft is also making the same mistake Macromedia did when it named all things Flash under the "Shockwave" umbrella. There was confusion even at the conference about what someone was talking about when they talked about "Expression". The answer to this would be to drop the Expression name from the products themselves and perhaps have an Expression Suite that would include all the products (similar to the Adobe bundles.)

In addition to the Expression line, I also sat in on sessions on Atlas (Microsoft's Ajax/ASP .Net library), WPF (Windows Presentation Foundation) and WPF/E (Windows Presentation Foundation Everywhere.)

So, what are all these technologies and what do they mean for us as Flash developers? Are any of them a threat to Flash or to Adobe in the near future? Let me cover each in turn and tell you what I think of them, starting with the Expression suite.

Expression Graphic Designer (previously code-named "Acrylic")

Acrylic is a tool for creating vector and raster graphics. It is, in this sense, a mix between Photoshop and Illustrator. The common technology that ties all of the various Expression tools together is the XAML language that the various tools can output to.

XAML is an XML-based language for declarative user-interface design. Yes, you guessed it, it is very similar to Adobe's MXML, but with some important differences.

The biggest difference for me between XAML and MXML is that while MXML is high-level language that deals mostly with the layout of components, XAML can be much lower level, detailing the drawing of primitive shapes, fills, gradients, etc., in a manner similar to SVG. Although this allows tools like Acrylic to output their graphics in XAML, it suffers from the same readability problems as SVG. Of course, Microsoft doesn't expect you to hand edit complex graphics in XAML, that's what Acrylic and Expression Interaction Designer are for but, unless you're careful, it is possible to end up with single XAML files that are an unreadable hodge-podge mix of high-level UI layout and low-level graphics definitions. Finally, I'm not entirely sure about the bandwidth implications of having complex graphics in XML format. There's a reason (ok, quite a few) that SVG never caught on�

Acrylic as a graphics tool appears to be coming along nicely and will no doubt be more than adequate if you are going to be developing for the WPF platform. It is by no means an alternative to Photoshop or Illustrator, however, and it would be na�ve to expect a version one tool to in any way match the capabilities of either of these mature products.

Expression Interaction Designer (previously code-named "Sparkle")

Sparkle, which has widely been reported as a "Flash-killer" is nothing of the sort. It is an uneasy cross between the Flash IDE and Flex Builder; a tool that appears aimed primarily at interface design but complicated by the ability to draw primitive shapes (lines, shapes, paths, etc.) and create timeline-based animations (or perhaps it's a vice-versa: a design/animation tool complicated by UI layout features.) Regardless, the key word here is "complicated."

As a Flash and After Effects veteran, I was confused by the non-standard timeline and use of keyframes during the demos. It looks like instead of taking a lean and mean approach (and perhaps even creating two different tools), Microsoft took a "everything but the kitchen sink" approach, using the Flash IDE and Flex (or the Flash IDE and perhaps parts of Visual Studio) as influences. I'm not sure if they realized at the time that the Flash IDE is the product of many years of iterations, resulting in a lot of excess baggage � some of which we will hopefully be able to shed as Flex becomes the primary tool for RIA development. Sparkle appears to be starting life with all that baggage and I don't see that as a good sign. Then again, Microsoft's never one to be accused of bloat in their applications! :)

Sparkle will no doubt be an important part of the workflow for developing WPF applications but it is by no means a Flash killer. For one thing, it is not a tool for creating Flash applications and thus doesn't compete directly with the Flash IDE. If anything, WPF as a platform will be competing with Flex on the enterprise front and choice of platform (WPF vs. Flash) will determine the tools used for any given enterprise in the future. (Note the word "future" as none of this stuff is shipping at the moment.)

Expression Web Designer (previously code-named "Quartz")

Quartz is, unabashedly, a Dreamweaver clone. Beyond being a clone, it actually improves upon Dreamweaver in certain aspects such as its handling of CSS, which is definitely far superior to what's in the current release version of Dreamweaver. While sitting through the presentation on Quartz, I actually found myself itching to install it when I got back. I had visions of it replacing Dreamweaver as my main HTML editor when, half-way through, I realized that there was a *big* showstopper: It only supports ASP .Net. Oops!

Bottom line: If you're already a Microsoft house and don't mind ASP. Net lock-in, Quartz is the tool for you. If, however, you like to work with other technologies like PHP, CF, etc., stick to Dreamweaver. (And I'm sure that the Dreamweaver team are not sitting on their butts and will be implementing CSS-handling features that match or exceed those in Quartz for the next release.)

Windows Presentation Foundation (WPF; previously code-named "Avalon")

Avalon is the framework for building applications using XAML alongside C#, VB, etc. It is Windows-only and thus not a direct competitor to Flash/Flex in the consumer market but a definite competitor in the enterprise market where a lot of firms are already Microsoft/.Net houses. Flash applications do not currently match the 3D capabilities found in WPF and the Expression line, coupled with Visual Studio, does provide a very competitive suite of tools/workflow. This is one area in which I hope that competition will be beneficial to Adobe.

For one thing, Adobe has to make the creation of data-rich applications much easier in Flex and support this complete workflow instead of focusing mainly on the client-side UI design/development.

In the Microsoft tools, for example, binding to a dataset is as easy as drag-and-drop. No need to install and configure a separate package with a complicated pricing structure that makes me think far too long (like Flex Enterprise Services). This is how simple Flex Builder should make it. I should be able to introspect my services from Flex Builder and drag and drop to create bindings *straight out of the box*. Until we reach this level of support for the complete app-development workflow in Flex, we will be lacking behind not only WPF/Visual Studio but also other full-stack frameworks like Ruby on Rails.

There is no doubt that Microsoft has a very mature product on their hands in Visual Studio and serious up-and-coming competitors in the Expression suite. Competition on this front should be a very positive factor in getting Adobe to improve both Flex and Flash. Furthermore, as Adobe is far more agile than Microsoft (ok, I know, practically *anyone* is far more agile than Microsoft � perhaps with the exception of Quark!) we will hopefully see Adobe pull an OS-X on Microsoft with incremental improvements to Flex that increase its competitiveness in certain key areas.

(I did have one technical issue with Avalon: The templates system for skinning applications appears to be a gross violation of encapsulation, exposing way too much detail about the internal structure of components in the name of allowing them to be skinned. Flex/MXML's use of item renderers � each of which is a black-box MXML component -- IMHO, offers a much more elegant workflow that doesn't violate encapsulation, resulting in applications that are much easier to maintain and scale.)

Windows Presentation Foundation Everywhere (WPF/E)

Ah, finally, we get to the only technology that is a direct competitor to Flash: WPF/E.

WPF/E is a cross-browser subset of WPF that lacks the cooler features of WPF like 3D and hardware acceleration.

WPF/E applications run in the WPF/E runtime (think Microsoft Flash player/plugin) and can interpret pure XAML as well as Intermediate Language (IL) from any .Net language (I don't believe this capability was in the plugin at the time of the demo.) For scripting, it relies on the browser's JavaScript � which makes me queasy: How are they going to *ensure* complete cross-platform compatibility as long as they're relying on browser JS?

Bottom line: I was not impressed by WPF/E at all. Apart from currently being mostly vaporware, I think that Microsoft is so far behind on this front that they might as well give up now. They mentioned that WPF/E will not be ready to ship until 2007. When I asked about how quickly they expected penetration of the plugin, they couldn't give me any sort of a reply. I'm assuming that the best-case scenario would be in at least one year. So we're looking at something that won't even be worth developing for until 2008, if then. Unless Microsoft manages to pull a ridiculously large rabbit from their sleeves, I see WPF/E going the way of the dodo.

Atlas

If anything had me worried about the future of Flash, it was Atlas, a free framework for building ASP.Net/AJAX applications. This may have something to do with my seeing Ajax as the main competition to Flash/Flex for consumer-facing rich web applications.

Atlas makes the creation of Ajax applications a piece of cake and it isn't purely limited to ASP.Net (although you get some nifty features if you do use ASP.Net.)

Microsoft appears to be covering all its bases with the inclusion of WPF/E and Atlas in its upcoming product matrix.

Vista

During the conference, I got to play with Vista a little and, again, I wasn't really impressed at all.

My Microsoft guide told me that the build they were running was the first feature-complete build and thus was buggier than previous ones but there were certain issues that ran deeper, the most obvious one being the glaring usability issue with the new Start menu.

The Vista start menu has been reorganized so that the initial view shows you your recently used applications. You then have to click on All Programs to get to a separate view that contains a list of all your programs. The problem is that there are no landmarks to let you know that you are now in "All Programs" view. In fact, this relationship is usually one that you would model using a tab control, with the first tab's label being "Recent Programs" and the second tab's label, "All Programs". Instead, Vista hides these landmarks from us, leading to a confusing experience. This is unforgivable in such a key, frequently-used feature.

Apart from my views on the various individual technologies, I came away from the conference with two general feelings. These were:

1. Microsoft does not get simplicity

If there's one overarching feeling I got from the event, it's this: Microsoft does not understand simplicity. Bloat appears to be the dish of the day, with simplicity taking a back seat to a philosophy of "features, features, features!" If there's one thing we have too much of in software today, it's features. We're suffering from feature overload and guess what? We don't use a great number of them! (Remember the 20/80 rule.)

Microsoft and Adobe are both targeting mainstream developers and designers for their tools and the unique selling point for this market is simplicity. I think Adobe gets this better than Microsoft but there's room for improvement on all fronts. Possibly the rarest commodity in our field currently is developer time (it definitely isn't development tools or competing technologies, which we're flooded in). Find a way make it easier for developers to do things ("don't make me think") and you'll get more developers. And I don't just mean in the applications themselves: You have to take a holistic approach to simplicity. Time spent navigating complex licenses and installation/configuration options is still time wasted. Remember, KISS, KISS often and KISS with a passion :)

2. Microsoft is playing catch-up

Most of the conference felt like a history lesson.

I repeatedly watched as Microsoft engineers excitedly told me about these amazing new features they had developed but there really wasn't anything that I hadn't seen before.

Hoss Gifford was telling me after the conference how the session by Microsoft's R&D department showcased a project that consisted of having a looping video as the Windows wallpaper. Apparently the R&D folks were very excited by the fact the video looped perfectly. Excuse me? Surely, the R&D department of the world's richest technology firm is not getting its kicks playing with looped video to create something that I threw together with Flash the day Active Desktop first came out? (I had to abandon my plans for world domination through my "Smart Wallpapers" after I realized they consumed a ridiculous amount of CPU!)

I don't think this is a matter that can be resolved merely by picking up the ball. It will probably require the organization of a state-wide manhunt because not only has the ball been dropped but it appears to have been kidnapped and is probably being held hostage in an underground bunker somewhere.

Basically, the feeling I got was that Microsoft was playing catch-up on multiple fronts. That's not to mean *all* fronts � I believe they've got a very serious competitor in the enterprise market with WPF, for example, and Expression Web Designer and Atlas are looking good. In general though, there was very little innovation and lots of imitation. But, hey, this was my first Microsoft conference so I can't comment as to whether or not this is the norm or not.

Summary

Expression suite: Naming issues on two of the products, otherwise coming along nicely. Interfaces/workflow could be simpler, especially in Interaction Designer which aims to do too much in one place. Web Designer would be a formidable alternative to Dreamweaver if it wasn't ASP.Net-only.

WPF: Powerful alternative to Flash for enterprise applications. Would be a hard-sell to pitch Flex over WPF to a Microsoft house (once it's ready, of course.)

WPF/E Vaporware. Can't see it threatening Flash in any real way in the next five years.

Atlas Ajax is the greatest competition Flash has at the moment and Atlas makes Ajax easy. 'Nuff said.

Vista Fix that darn start menu, people!

Technologies and products aside, I got to meet a lot of very cool people from Microsoft and really enjoyed talking with them and learning about this whole different world. The various teams appeared to be very open to suggestions and feedback and I hope that their various products will benefit from it.

At the end of the day, I am very excited that Microsoft is moving into this field because I am sure that it will spur Adobe on to create even greater tools in the future.

Comments