We've been talking about the web-as-a-platform for ten years. And yet we've been building web applications pretty much the same way since then. It's still hard.
What normally happens is there's a server which delivers static web-pages or calls programs that are written in a more or less traditional programming language.
The only improvements on this model, from the programmer's perspective, have been these : templating systems like Coldfusion and PHP which allow calls to functions and bits of code to be embedded directly in HTML templates; and object publishing systems, like Zope, have allowed particular HTTP requests to map directly to object methods within the program. Zope also allows development through the browser.
Beyond this, everything else is handled as libraries, within a fairly traditional programming context. And built with fairly standard tools. It's still hard.
And yet the web-as-platform gets ever more complex : applications ping each other, pipe RSS feeds around, crawl and search each other's databases etc. What's needed is a far higher level abstraction over the web.
Ning looks like it's moving in several interesting directions :
- You build your applications on top of the application server (rather than on your desktop and then having to plug it in to the server)
- View Source
In fact, put these together and you see that Ning is really a kind if social software development platform. All developers build in the same space. All developers can see each other's work and learn from it. These are the lessons of free-software integrated into the web.
I wonder how other platforms for developers can learn from this.
Developers have social software, of course : Source code search, source code repositories, bug trackers etc.
It will be interesting to see if these can all be integrated into an IDE that has a shared platform at its heart, with view-source of other applications as standard.