Web 2.0 has no doubt arrived. What initially looked like a spate of XML/HTTP-driven websites, now has terms like AJAX (which no doubt was a marketing genius) and Comet making its way into programmer skill-sets.
There was time, back in 1999, when I was just an year into programming, when JavaScript was dreaded. Nobody was interested in writing more than a few lines of client-side validation. I remember writing what we called a "double dropdown", which basically meant having two JS arrays and then populating a HTML SELECT list based on the selection of the first SELECT list. Like in a country-state selection. Doing that bit was a niche skillset that a couple of us could achieve with minimal code. All because of JavaScript illiteracy.
And then I had the opportunity to work on an IE-only intranet application (oh yeah, there was Netscape 3 and 4 to support otherwise) and thankfully we persuaded the customer to go with IE 4 as the base platform. Doing that application taught me DHTML and JavaScript like never before. In fact, after that I could look at JavaScript to do inventive things. I have had the privelege to code using Remote Scripting, Design-Time Controls (VSDTC) and Visual Basic DHTML project templates - all pioneers in making it easier to code in "AJAX". However, the best of those days was coding in Notepad. XML HTTP, which made its debut in IE 5.0+, was something I got introduced to only in 2003.
Why all this? To give you an indication that the Web 2.0 AJAX thing was always around. But somehow, due to the then backward nature of non-Microsoft browsers, non-standardization and the usual time for user adoption and comfort with new trends, it took a while to appear the way it has now. However, Web 2.0 is not just about AJAX. This is a key thing to remember. Check out Manoj's excellent post on Web 2.0 - a great perspective that I share too and hence am not going to repeat things here.
So, now that the background is set, let me get to what I wanted to actually talk about.
Though there are a variety of new innovative websites out there that harness Web 2.0 technologies and ideologies, it is still quite a small percentage of the larger web. One of the main reasons still remains that JavaScript, that plays a pivotal role in creating powerful interactive websites, is still a nice skillset. Excellent programmers hate coding in JavaScript (take Sid for instance - got to link to that awful post on AJAX here - Sid, place the link in the comments. Interestingly, the company Sid is part of is building something really cool on AJAX to make it easier to build mash-ups).
Now do you smell an opportunity? Everybody wants to be on Web 2.0, but JavaScript is a road block. And even if you love coding in JS, writing reams of code is a no-no for productivity. Of course, the larger corporations of the world did sense this and the result is a barrage of "AJAX toolkits" trying to ease the burden.
There is Microsoft ATLAS, Yahoo Developer Network, Google Web Toolkit, the Dojo toolkit, the Prototype toolkit, just to name a few. And there are tools and parsers - you will find plenty of them.
Though all of these are around, the developer view of Web 2.0 is still very confusing. The reason - each one has its own way of solving the problem. Some are even solving the wrong problem.
ASP.NET 2.0 introduced script callbacks which in itself is a great way of writing AJAX-style code. But then many of the associated controls do not have the AJAX capabilities built-in and still rely on postbacks. ATLAS aims at solving this problem - hence enabling developers to write ASP.NET code (read server-side) without having to worry about JavaScript and client hacks. Neat. But this causes two problems - one, it is tied to a server platform and two, it will take longer to mature because Microsoft has assumed that the developers know ASP.NET 2.0 already, something that is not necessarily true in all cases. Moreover, it is taking just way too long to release. I am afraid they might well miss the curve if something really better comes up.
Google Web Toolkit (GWT) works with code generation. Write in Java, generate JavaScript. Though I haven't tried GWT personally, I am pretty sure this is not a great approach. The problem is that no matter how well you write your code generation, purists will tell you that it limits the language that is being generated. If I wanted to do something one way and the tool generated in another way, it is always going to be a problem. Frankly, I had expected Google to come up with something targeting the Microsoft developer base primarily, but coding in Java will limit the user base of GWT as well.
Yahoo UI, Dojo and Prototype are all nice client libraries. In fact, I like Yahoo UI a lot for its simplicity. Dojo is really powerful. Both of them expect you to understand how JavaScript work - which could very well mean it is for developers who are already comfortable with JavaScript.
Tools like the Microsoft Research Map Cruncher and Google Sketchup are really nifty tools that can be used to do some good innovative Web 2.0 programming. But each of them are again limited to a particular context, particular website, particular technology, etc.
What is missing is a comprehensive IDE for developing Web 2.0 applications. A platform for creating, mashing up, merging, collaborating and developing applications using innovative ideas. Sites like Codeplex should aim at not just being another source control repository, but instead creating an environment, providing the right tools and enabling developers to code collaboratively. That will be the true realization of the Web 2.0 vision.