What’s All the HubBub? Roughly Drafted Article on SproutCore… Some Key Points to Consider


Many tech pundits and non developers are all a-Twitter over the article over at RoughlyDrafted. It’s understandable. At a 10,000 foot view, it’s another player in the RIA marketplace. Cool! However, let’s not all start high five-ing ourselves just yet. A pundit’s view is not shard by clients and developers. Of course, when a company like Apple, Adobe or Microsoft puts its’ weight behind a technology or development platform, it’s worthwhile investigating.

Now why would each company want it’s own RIA dev/deployment platform? Adobe wants to leverage PDF and the Creative Suite community with many of the improvements going on in the Flash platform (Acrobat.com’s debut last week pretty handily demonstrated that). Microsoft wants to empower it’s .Net developers by giving them a nice set of UI design options and rich media deployment options with Silverlight. Apple wants to continue to push the iPhone and iPod Touch as a mobile platform by providing Quicktime compatible or Cocoa style widgets and JS frameworks that leverage the WebKit rendering capabilities in mobile Safari. Thus the support being given to SproutCore, essentially an MVC framework for JavaScript. This move allows them to remain plug-in independent while delivering the capability for it’s developer base to release RIAs for its expanding mobile market. A few things need to be kept in perspective though regarding this concept of a standards based platform for developing RIAs.

A little background on my experience in the matter. As a multi-platform development house, we build on LAMP stacks, IIS stacks and build HTML/CSS/JS sites and Flash sites. We recently have been begun deploying RIAs built on the Flash platform using a combination of Flash and Flex. We have used Prototype/Scriptaculous and JQuery/Interface and I dabbled a bit with Spry when it was first unveiled by
Adobe. We’re no strangers to new and exciting tools and technologies. Really, the client need and the project requirements define the tool or platform we deploy in.

For us, the use of frameworks for the behavior layer of a standards based site is indispensible. Writing the JS in JQuery by hand on a site by site custom basis would be spaghetti code suicide for our development budget. No doubt about that. We haven’t wrote a lot of custom JS from the ground up for a couple of years really without relying on one framework or another.

Some things to consider though. With the creation of intranet or specific target audience sites or apps, development using a framework is simple. The need for cross-broswer testing is virtually eliminated. However, expand that idea to building a consumer site or a very heterogeneous corporate climate where people may be using Safari, IE6, IE7, IE8 beta, FF2, FF3, Opera, on and on. You get the idea. Debugging and testing becomes a killer. No matter how easy writing the code is, extending, revising and testing it becomes time consuming and expensive. I actually think the next project that comes along may get a separate time tracking activity for “cross browser test functionality” for any JS required to perform functionality.

This is where the concept of SproutCore or any other JS framework being called a “platform” kinda gets thrown out the window. Without the dependability of rendering, behavior and developer creature comforts afforded by a binary compiled file that runs in a plug-in ala Flash or Silverlight, there is no platform. Now, does SproutCore offer a significant upgrade over JQuery or Prototype for RIA development? With built in data binding tools and a respect for the MVC design pattern, I’d say yes. It’s a bit onerous for a little JCarousel style menu or a thickbox gallery, but I’m pretty sure everyone knows that already. Now SproutCore apps may render and perform admirably on Safari, but what happens in an heterogeneous deployment? More than likely, a developer will be losing sleep and a Project Manager will be counting pennies as the ink starts to turn red.

Until IE8, Safari 3-4 and FF3 rule the roost, and we can fully abandon legacy support for IE6,7 and older Firefox versions, I don’t think I could seriously recommend building any application of importance or scale with a JS framework. Even then, it might be a stretch. With SilverLight and Flash/Flex you get innovative controls, layout containers that behave uniformly (unlike shoddy CSS rendering from browser to browser), media handling and a lot lot more.

Now, I am as much in favor of web standards as the next guy. I teach a class every semester on Designing with Web Standards, and use the Zeldman book for one of the texts. I firmly believe that CSS is the right way for adding style to your markup. I stress that writing HTML/XHTML that validates is the only way to go. I advocate using JS versus ActiveX or other nonstandard behavior layers is the only acceptable way to add interactivity to your site. That said, when the client is footing the bill and time is on the line, only a true platform will do for making an app that must behave dependably and uniformly.

I am a Mac user. I work on a Macbook Pro. We own a MacBook for our home use. I own an iPhone. I have a couple other iPods in my house used by other members of the family… I like Apple. I don’t buy Microsoft stuff. I don’t own a single Windows PC or an XBox. So, you can’t cast me as a Apple hater at all… But given the choices between building a Silverlight app and a SproutCore app, I would definitely take the Silverlight app. Probably. ;-)

Posted on


8 comments

  1. Edward Jun 16

    If you would be taking a proprietary (Silverlight) approach remind me to never hire you to code a website. Silverlight is cross-platform Mac/Windows only. Linux is in the dark, and Mac will probably only be supported until MS gets enough market penetration to cause some havoc just like with IE. So enjoy your trojan horse.

  2. Chad Jun 16

    Edward, you may be correct about the potential for Mac platform abandonment, no denying that. However, Linux has never once factored into a client’s project requirements for me. That’s right, in a decade of professional design and development, I have never once had a client’s project need to be available on Linux. I realize that sounds callous. Maybe even financially reckless or at least shortsighted. There is no denying that Linux stands to gain marketshare due to MS’s complete botch of Vista and the mess that IE6 and IE7 fragmentation has caused. Flash is available for Linux. AIR for Linux is coming I believe. What this post is really about is ensuring uniform display and behaviour across the widest marketshare of the audience. With Linux on the desktop having a share significantly smaller than Macs (which is just as statistically small when compared to Windows), it just doesn’t factor into this equation.

    I mainly countered with Silverlight vs. Sproutcore as a lesser of two evils. Everyone who reads this regularly knows I would probably write a Flex app first.

  3. Chad Jun 16

    This dicussion thread at Macrumors shows how very little most people know about how Flash/JS or Silverlight works… Just something else to read on the subject.
    http://forums.macrumors.com/showthread.php?t=501128

  4. John Dowdell Jun 16

    “This is where the concept of SproutCore or any other JS framework being called a ‘platform’ kinda gets thrown out the window. Without the dependability of rendering, behavior and developer creature comforts afforded by a binary compiled file that runs in a plug-in ala Flash or Silverlight, there is no platform.”

    Good line, thanks. Supporting multiple runtimes is hard.

    JavaScript is still very useful. But when building something atop varied JavaScript & CSS engines, you’re still bound by their intersection. As we go to mobile browsing, things get wild’n'wooly again, and few JavaScript frameworks yet describe which Linux browsers support them. A new abstraction layer doesn’t change the underlying capabilities, only the access methods to those existing capabilities.

    re the Twitter “proprietary” thing, I noticed in the original article that Flash was dismissed on the basis of “proprietary”, but I was baffled why someone with that perspective would lock themselves into Apple’s hardware/software stack, or into Google’s database stack. Both of those are scarier, to me, than in not having runtime sourcecode, which you couldn’t use to modify someone else’s experience anyway!

    (Welcome back to the land of the fully-living, btw. ;-)

    jd/adobe

  5. Cheap Flights Guy Feb 27

    Very interesting point of view, but one that I don’t think many people share:

    “I dont think I could seriously recommend building any application of importance or scale with a JS framework”. These days, a lot of the ‘big’ sites rely on a js framework. I just checked CNN.com and they are using prototype, ESPN.com are using jquery. And I think this trend is going to continue as these frameworks become more stable.

  6. Tom1df Mar 16

    I don’t think I could seriously recommend building any application of importance or scale with a JS framework”. These days, a lot of the ‘big’ sites rely on a js framework. I just checked CNN.com and they are using prototype, ESPN.com are using jquery. And I think this trend is going to continue as these frameworks become more stable.

  7. Raju Bitter Apr 26

    How about using OpenLaszlo, capable of compiling to ActionScript3 source code and JavaScript source code at the same time. Use the SWF9/10 runtime for the less advanced browsers, and the DHTML/JavaScript runtime for the more modern browsers.

    Wonder what kind of visual effects you can achieve with OpenLaszo and JavaScript? Check out the demo I built with OpenLaszlo using the latest CSS3 effects, and the same demo running as a SWf9/10 app: http://openfuture.rajubitter.com/2009/08/25/openlaszlo-dhtml-css-3-demo-to-flash-or-not-to-flash-is-no-question/

  1. Apple's open secret: SproutCore is Cocoa for the Web - MacTalk Forums

Leave a reply