SmoothSpan Blog

For Executives, Entrepreneurs, and other Digerati who need to know about SaaS and Web 2.0.

Archive for September 11th, 2010

Wrapping Up the Warfield/Lucchini/Flex/Javascript Smackdown

Posted by Bob Warfield on September 11, 2010

Come on, admit it, we all love a good smackdown!  In response to my article about Flash coming back to the iPhone, Bill Lucchini wrote a well-reasoned rebuttal:  5 Reasons Adobe Flex is Doomed.  Here they are, paraphrased for brevity:

–  Flex creates an unnatural and dilutive web user experience.

–  Flex performs poorly relative to Javascript.

–  Steve Jobs argument that you can’t trust a 3rd party platform to reliably keep up with the features of the underlying device.  This results in sub-standard apps in Steve’s mind.

–  Bill doesn’t buy the “apps are where it’s at” argument.  In his words, “Some things like games seem much more appropriate as apps, but for many apps, mobile web seems more appropriate.”

–  AJAX toolkits are so much better these days as insulating developers from platform and browser issues that the relative advantage of Flex as eroded.

Point-by-point, let’s have at it!

Flex creates an unnatural and dilutive web user experience

Sorry Bill, I’ve got to call total BS on this.  Flex and Flash have been used to create some totally crazy web sites that are very annoying to use.  But that just reflects the poor UX taste of those authors.  Flex is perfectly capable of creating very mainstream UX as well.  As you would expect for a platform created with tons of designer (e.g Flash/Flex) as opposed to hacker (e.g. Javascript) input it’s set up to be able to push the envelope of User Experience, and some designers love to do that (been to a Museum of Modern Art lately?).

BTW, you can create crazy UI to your heart’s content in an AJAX app too, it’s just a lot easier to do so with Flex.  I can’t hold that against the platform.

Flex performs poorly relative to Javascript

Bill saw this in the form of complaints from his last gig with the Intuit Partner Platform.  I think it is important to look at his money quote for the insight:

Despite our research that showed that Flex had really great performance characteristics, we saw development team after development team struggle to get their apps to perform as fast as they needed to…

The italics are mine because I wanted to call out that obviously Intuit’s own development staff anticipated this and concluded there wasn’t a problem with Flex.  In fact, there isn’t.  I write 3D graphics code in it for CAD/CAM applications that just simply wouldn’t even be feasible otherwise.  Flex looks to me like it can support more of the cpu capacity of your machine because of how the Flash engine works, and the JIT compiler is excellent.  I spent time reviewing tons of benchmarks via Google, and didn’t find any counters.  I will tell you that some of the Flex components can bog down.  It’s hard to use the TextArea with files of many megabytes, for example.  OTOH, there are straightforward ways to work around that.

In the end, I really don’t buy the argument that Flex is slow.  But, I will tell you what argument I would buy:

It takes a better grade of developer to get the best performance from Flex than it does from Javascript.  If you have a developer who is up to speed, Flex is faster.  If you don’t (well if you don’t, you may be doomed anyway), it’s easier to get Javascript to perform decently, in part because the lesser developer won’t even be tempted to do a lot of things they are tempted by in Flex (image manipulation, fancy video, and the like are all performance intensive).

Sorry, I know “them’s fightin’ words” to someone out there (probably annoys both camps, actually), but Flex has a couple idiosyncracies that can be both strengths and weaknesses.  I also know I can’t leave that grenade on the table sans pin without elaborating a bit. 

There are two areas that seem likely to trip up less capable developers in Flex:  the validation model and the elastic racetrack.  If you properly harness both of them, you can get pretty amazing performance from your application–much better than Javascript in my experience.  If you don’t, and you try to ask the application for too much, things can get so bad you will think the app has crashed.  I want to emphasize that for most garden-variety work, you’ll never have to worry about it, and, validation and the elastic racetrack are not secrets or arcane.  But, if you’re making the app struggle with either large data volumes or a lot of manipulation pushed down onto the client, you have to deal with them properly.  I don’t want to spend a lot of time here, in what is really more of a business blog, debating the technical details behind this further.  I have been toying with the idea of starting yet another blog for the really Geeky stuff, but I don’t know that I have time for a third blog!

Bill doesn’t buy the “apps are where it’s at” argument

I broke this out into a whole other blog post, because it is a fascinating and deep topic.  Suffice it to say that Bill and I seem to agree both models are needed.  Where we may differ is in how often the app model has to come up, and perhaps on the relative monetizability of the two, which I also think is very important.  To paraphrase, the point from the other post is that the app model comes up a lot.  You can’t just shoehorn any old thing into a browsing experience and expect a good experience.  There are sound cognitive reasons why sometimes an app is better.  I argue that if what you’re about is creating something, the manipulative orientation of an app is far more intuitive than the navigational orientation of browsing.  

Apps are not just about games, Bill, though they are another excellent example.  All that stuff you’re browsing around in with your web experience had to get created somewhere, and that somewhere is best expressed as an app.  Sure, that app need not be installed on your machine AIR-style (though many will benefit from that and AIR is one more thing Flex has over Javascript that is very important), but once you pass through the login gateway (ala your favorite SaaS app), it had better start looking less and less like web browsing.  As it does so, it will get easier and easier to deliver a great User Experience via Flex versus Javascript.

The other thing about apps is people are predisposed towards monetization of them versus the browse.  It’s very easy for a paid for browsing experience to cross the line to looking like a pay wall, and that’s not a happy thing.  It’s been tried and found wanting. 

I do notice that Bill isn’t arguing Javascript is a better tool for building apps, so there again, we have a point of agreement.

 AJAX toolkits are so much better these days as insulating developers from platform and browser issues

Bill, I just haven’t seen much evidence of this, either in my recent Helpstream experience where it was a pain, or in the conversations I have daily all over the Valley when this topic comes up, let alone in the further research I did before writing this post.  AJAX is a pain in the keyster for cross-platform and cross-browser.  Ain’t no two ways about it.  There are some limited cures like GDT that help, but GDT is more Java than Javascript as far as that cure goes, so I’m not buying GDT as portability saviour.  Moreover, none of the AJAX toolkits are nearly as complete as Adobe’s toolset and Flex framework.  Not even close.  So even in the best of circumstances and giving the full benefit of a doubt, you’re going to pick an AJAX framework, and then all the code you still have to write that isn’t handled by the framework is still going to be very platform and browser dependent.

I was recently chatting with VC Bruce Cleveland at Interwest about this very topic and he was lamenting that no sooner had we reached a point of write once run everywhere for the server and on PC clients than the mobile world was plunged back into the old “port for every platform with long-term maintenance pain” headache we’d just gotten away from.  His portfolio was not very happy about that.

You can’t trust a 3rd party platform to reliably keep up with the features of the underlying device

I had to save this one for last because it is so richly ironic it is silly.  Here is Steve Jobs lamenting that 3rd parties might make arbitrary decisions that affect the User Experience on his platform.  That would be the same Steve Jobs whose arbitrary decisions (among many many other deleterious effects over the years) kicked Flash right off his platform and then suddenly brought it back again.  Or the Steve Jobs that won’t really give Adobe the same access to the underlying hardware to make Flash Player better as they can get on other platforms.  I have to admit, if I was Steve Jobs, I would be terrified at the prospect of doing business with myself!

But everyone isn’t Steve Jobs.  In fact, most are not, and most think about products and going to market very differently.  Some actually understand that platforms have to be Switzerland.  More importantly, as my first post that started this smackdown made abundantly clear, it is competition that benefits the consumer, not arbitrary decisions by Steve Jobs, Adobe, or any other entity, however enlightened and brilliant they may be.  If the platform or toolset owner ignores the wishes of its audience, and there is competition, that platform owner will lose. 

In this case, I think our little smackdown shows that there is wonderful healthy competition between Flex and AJAX/Javascript/HTML 5.  Flex is not the incumbent or default choice by any stretch.  It is not the lowest common denominator “easy choice.”  It takes a little more skill to really make it sing.  But I don’t think it is anywhere close to being “doomed.”  Markets like choices.  It’s why we have chocolate (Flex) and vanilla (Javascript) or BMW (Flex) and Lexus (Javascript).

One last point I want to raise is that we may be having the wrong smackdown.  If I have to create an app (or a particularly rich browsing experience), I want to use Flex to do that.  It really is a “LAMP stack for UI”.  But let’s go back to the Apple mobile platforms.  If I couldn’t use Flex there, I think the Objective-C environment, from all I have heard from developers, makes a much better solution than Javascript.  Perhaps from that standpoint, setting Flex and Javascript at each other’s throats is picking the wrong battle.  There’s a whole ‘nother post here somewhere to talk about these new webby apps and something I call “Fat SaaS”. 

Thanks to Bill Lucchini for the excellent debate.  He raised a lot of interesting points and sharpened my thinking.  In many ways, I think we are in peculiar agreement!


Posted in user interface | 8 Comments »