That great!

On Thu, Mar 17, 2011 at 8:17 AM, Howard <hls...@gmail.com> wrote:

> I've always had a love/hate relationship with JavaScript; some of the
> earliest motivations for Tapestry was to "encapsulate that ugly
> JavaScript stuff so I don't have to worry about it again." However, as
> I've come to appreciate JavaScript, over time, as a powerful functional
> language, and not as an incompletely implemented object oriented
> language, my revulsion for the language has disappeared ... even
> reversed.
> Back around 2006, I started adding the client-side JavaScript features
> to Tapestry 5; this started with client-side form field validation, and
> grew to include a number of more sophisticated components. The good
> news is these features and components are fully encapsulated: they can
> be used freely throughout at Tapestry application without even knowing
> JavaScript. Tapestry includes the libraries (and related CSS documents)
> as needed, and encapsulates the necessary initialization JavaScript.
> The APIs for this were revamped a bit in Tapestry 5.2, but the core
> concept is unchanged.
> The bad news is that the client-side is directly linked to Prototype
> and Scriptaculous (which are bundled right inside the Tapestry JAR
> file). These were great choices back in 2006, when jQuery was new and
> undocumented (or so my quite fallible memory serves). It seemed safe to
> follow Rails. Now, of course, jQuery rules the world. I've been talking
> for a couple of years about introducing an abstraction layer to break
> down the Prototype/Scriptaculous dependency; meanwhile I've recently
> seen that Rails and Grails are themselves moving to jQuery.
> However, that abstraction layer is still important; I have clients that
> like MooTools; I have clients that are using YUI and ExtJS.
> Certainly, it would have been too ambitious to try to start with such
> an abstraction layer from day 1. At the time, I had no real idea what
> the relationship between JavaScript on the client, and the application
> running on the server, would look like. Also, my JavaScript skills in
> 2006 are a fraction of what they are now. With several years of coding
> complex JavaScript and Ajax components for Tapestry, for TapX, and for
> clients, I think I have a much better understanding of what the APIs
> and abstraction layers should look like.
> So suddenly, I have a number of goals:
> - Allow Tapestry to work on top any JavaScript framework
> - Support Prototype/Scriptaculous and jQuery as substrate
> frameworks "out of the box"
> - Make the built-in Tapestry library first class: documented and
> release-on-release compatible
> - Keep backwards compatibility to Tapestry 5.2
> What I'm proposing is a gradual transition, over Tapestry 5.3 and 5.4,
> where new, documented, stable JavaScript APIs are introduced. and
> Tapestry and 3rd party libraries can code to the new APIs rather than
> to Prototype/Scriptaculous. The goal is that, eventually, it will be
> possible to switch the default substrate from Prototype/Scriptaculous
> over to jQuery.
>
> --
> Posted By Howard to Tapestry Central at 3/16/2011 05:16:00 PM

Reply via email to