I’ve been working on a few projects recently that have been using a lot of JavaScript and AJAX technology. All I can say over and over again is that I find the experience incredibly frustrating even with the help of some of the tools available (for AJAX I use Jason Diamond’s MyAjax or now called Anthem).
The problem isn’t so much the server side tools, but it’s the JavaScript. It’s a completely inadequate language to do anything useful in a ‘standard’ programming sort of way. Sure you can do just about anything, if you have some really dedicated code tweakers, who are willing to find all the intricate details and browser inconsistencies and run with it. We all marvel at things like Google Maps and Virtual Earth and the finesse it took to do this in the browser, but really if you look at how it works this sort of thing wouldn’t be nearly as magical if was written in anything but crippled JavaScript.
So here’s the 50 million dollar question? Why the heck isn’t JavaScript being expanded to properly support OOP priniciples, making objects first class citizens, providing support for scope and namespacing? JavaScript isn’t exactly a new ‘language’ and it seems only reasonable that this aging environment should either be updated to support more modern constructs or else make way for something better. I doubt either will happen but why is that?
Microsoft gets a lot of flak for doing things their own way. Remember way back when when IE 4.0 came out Microsoft went off and basically created a rich DHTML model that at the time was not standards based. Not standards based because there were no standards to base it on at the time. Yet, at the same time we have a standards body the WC3 and this body is not really serving progress by being slow, incomplete and hopelessly behind the times most of the time. Add to that the fact that most standards that come out of the WC3 are largely inconsistent in implementation details and you have the reason why things are as bad as they are today when it comes to client side programming.
I’m all for standards but at some point there comes a time when you really need to look at where software is headed and whether the tools that are available to us are going to serve that need. With the current push for AJAX software it’s obvious we’re heading in the direction of much more client side browser code, which is going to make software development considerably more complex for Web Developers.
I bring this up as I’m playing with and reading about Microsoft’s ATLAS initiative and the architecture. Microsoft is once again in a position where they are pushing new technology – in this case the ATLAS Client Script Framework (what Nikhil calls the Script Core). It provides a number of the missing features like core class functionality, namespace support and easier Oop class definitions – all features that should be natively included in JavaScript. While this is all nice and good, the way that they are going about it, is pretty damn complex and not intuitive. There’s nothing natural about it - as could be expected based on the fact that they are bound by the limitations of JavaScript.
And of course Microsoft runs the risk here again of inventing a new framework that eventually will be discarded because the years later the W3C will come around and realize that this is something that needs to be standardized. And Microsoft will catch flak again for ‘forcing’ a standard that isn’t a standard.
Microsoft aren’t the only ones in this space either. There are many other frameworks out there that extend JavaScript and bolt frameworks ontop of the browser to provide richer functionality. Ruby on Rails for one even though the approach there is a bit different from a much higher level automation perspective. In a way though it addresses the same space by abstracting away the browser scripting model.
But why should this be so difficult? Why abstract away the scripting model with wrappers and higher level object tools, if the scripting language could easily provide these services natively? We’re all using FULL ON HACKS to work around jackstrawed system that’s antiquated and horribly designed. And yet there’s zero innovation in this space. Sure FireFox keeps boasting about improved browser numbers, but you don’t see the Mozilla folks using their momentum to push for improved language support on the client either.
The big vendors are following the same beaten cat-tail path making due. Whatever happened to innovation? It’s dead in the water on the client.
It seems strange beyond believe that the big browser vendors the WC3 would not have an URGENT interest in fixing this mess. From the Microsoft Perspective in the browser, there’s the whole issue of IE’s major standards incompatibilities which have not been fixed or addressed for many years – I would say purposefully as a diversion to keep the browser space more difficult than it should be. No way does Microsoft not have the resources to make the browser standards compliant.
However, this may be changing especially in light of the recent push at Microsoft for a stronger presence in online content (Live). Microsoft has to use the limited tools as much as anybody else and it’s not making their lives any easier building their own apps and having to support tools that have to work with this stuff.
This may not endear many people to Microsoft but many changes in the past have been driven by Microsoft pushing ahead in new directions – proprietary or otherwise. Maybe that’s what’s needed right now – somebody to push the envelope a bit and bring some competition and sense into this stagnant area of client side browser development. It’s an important area that seems is being completely overlooked by the browser vendors.
I’m ranting as I don’t have any answers here. The problem is that innovation in this space has gone missing for about 7 years. I’d say the last really innovative release of a browser was IE 4.0 back in the late 90’s. Anything after that was a variation of the same old theme. Isn’t it time things move into the modern age?
Problem is who’s going to make that step? Microsoft? They have too much investment in Windows to even think about trying to push any new language features and making the browser a more powerful platform. Microsoft will push Avalalon on Windows (WPF) would be my guess, which would be all great and good, if XAML would become a standard. Fat chance of that… but if you think about it this is the sort of framework and rich interface that’s really what would make it possible to create sophisticated client applications and it’s a logical next step for client side Web apps. Whether it comes from Microsoft or elsewhere – this is where things are headed, although I think this is going to take a long time due to the stagnant environment we’re stuck in.
If not Microsoft - who else can drive innovation? Mozilla? Nah – they’re mired in standards that are backwards looking not forwards looking. No change coming from that end… What else is left in this field? Not a heck of a lot…
Everytime I think about the missed potential in this space I get incredibly frustrated. Not to mention the frustration when I have muck around for hours with client script code/client Html that would take minutes to do on the server…
Now playing: Corrosion of Conformity – Albatross