Monday, June 11, 2012

Do you know of a bleeding-edge HTML5 leveraging, legacy-ignoring JavaScript framework?

What's the best framework (sort of jquery, extjs, etc like) to use if I'd like to intensively use all the freshest technologies of the HTML5 stack provided by modern browsers (Firefox 7, Safari 5, Chrome 14) and have absolutely no need to support any legacy browsers (incl. no need in IE support at all and no need in Firefox or Chrome prior to the latest stable releases)? I'd like to get all the newest available goodness without having (even abstracted by a library layer) a line of code meant just fore legacy compatibility or keeping any legacy-induced things in mind.

To soften the filter, taking very humble hope of such an ideally fresh framework to exist, the least (the maximum level of legacy support) I'd like to agree is not supporting IE versions older than IE8, or better just not supporting IE at all.

Source: Tips4all


  1. I am really having a hard time reconciling this idea after a serious thought. Assuming such a framework exists, it would only be as good as the current implementation status in any one browser. Let's say there are only two browsers and the HTML5 implementation status looks like this:

    Browser | Feature X | Feature Y
    A | ✔ | ✘
    B | ✘ | ✔

    Then your most bleeding-edge HTML5 application can either have X or Y, but not both. If the features your application needs are available on the latest versions of most major browsers, then that feature is not bleeding-edge. It would have been bleeding-edge a year ago.

    So depending on the project scope and goals, the most B-E application that can be written will conform to a single browser (the one that offers all/most of the features needed for your application).

    If you're writing for a lone browser and do not want to fix any implementations deviations from the spec (as the spec is not yet finalized), then it's basically writing code for that chosen browser regardless of any specs.

    If that is the case, then a framework is basically extra baggage to carry around. Instead, shortcuts for most commonly used APIs and other general simplifications would be the best way to go.

    That said, if you're goal is to have a framework that vastly simplifies the HTML5 APIs oblivious of where the browsers stand today, then I would love to contribute towards that project.

  2. Sproutcore is another one that sort of fits your opening description "How do we build blazingly fast, desktop-class web applications?". Apple are interested in it and i have heard good reports.

    Another approach would be Apples Dashcode. It use html(5) css(3) and JavaScript to build both Mac Widgets but also Web based sites. Essentially because it has little or no legacy it will only run effectively in Safari and Google Chrome, less that effectively in Firefox and not at all in IE.

    To use Cappuccino (mentioned in another answer and a good idea to look at) and Sproutcore you you will be more productive on a Mac and Dashcode definitely needs a Mac as you will need to install Xcode to get Dashcode

  3. What about Cappuccino? I don't really know how much HTML5/CSS3 it supports, but it requires IE7 at minimum. It is focused on web app development, not site-building, so it may not be what you're looking for in that regard.

  4. Not exactly an answer, but I think this will be beneficial for the discussion:

    GWT's approach (cross-compiling Java to JavaScript with deferred binding) is in line with your point about getting the minimal amount of JS code, without the burden of making all the browser abstractions in client side code, and carrying around all the weight of that code plus the weight of legacy browser support code.

    I'm not sure if the current level of granularity by which it produces optimized per-browser versions is the one you're talking about, but the technology enables it.

    Also, not sure about out-of-the-box bleeding edge HTML 5 feature support, but again - one could write such libraries (if they're not there already), and they will benefit from the same deferred binding mechanism, and you can compile just for the browser permutations you want to support.