I’ve been involved with the web pretty much since trumpet winsock was the way to connect your PC to the net and mosaic was the way to browse this new things called ‘web pages’.
It didn’t take long before someone asked me if I could make some software using a technology called CGI to process the data typed in to a form by a user.
These have all become the tools of the trade with which we, the programmers build the websites that you use every day. Typically a website uses a number of technologies for every layer in the cake.
All in all an ungodly mess of languages and techniques to achieve what in the late 80’s would have been nothing special, the only difference is that you can now tap in to the power of the server farm on the other side from your mobile phone through the network connection. Essentially we’ve re-invented the smart terminal, only now it got so smart that you can send bits and pieces of software over the wire to accompany the content for interaction and rendering purposes.
I don’t know if any of you remember the concept of the ‘graphics terminal’, but in case you don’t, a graphics terminal was a device that would allow you to draw both text and graphics remotely. Typically you had a very limited choice of line drawn fonts and the resolution was terribly low (except for the high-end models, they’d cost as much or more than a new car) but they got the job done. Printed circuit board layout programs and CAD software running on mini computers typically used graphics terminals to present the user interface.
Browsers today are the graphics terminals from yesterday, only they require a much larger number of technologies to ‘drive’ them (and of course are much more powerful).
I think the current fragmentation of the ‘stack’ of technologies that is required to create a functioning website is counter-productive. We’ve gotten to the point where the demands placed on a web developer are such that it won’t be long before websites will be like movies. Already the number of techniques that you have to master to even be considered a player is on the edge of overwhelming small teams, let alone individuals. Given the budget of the average start-up and the number of things you need to do with that budget there is a limit to how many specialisations you can engage in to create a minimally viable product. A few more iterations of the wheels of technology and end-user expectations of what a website should do is going to be overwhelming for small players.
There has to be a better way to do all this, there has to be a way in which you could build a web application using only a single language that will hide all the gory implementation details, cross browser issues and so on. All you should really need is your ‘resources’ (graphical components, text and templates) and a server side program written in a single language.
As far as I’m aware there is one project on the road to doing this (http://noloh.com/)) but it isn’t open source (yet?). Are there other projects like that? Will you be the one to get us out of this mess? (I wouldn’t know where to start).