I’ve begun thinking again about the next generation of Internet apps and what they’re going to be built on. The model we’ve used since 1995 remains fundamentally broken: interleaved client and server code in files on the server…just painful. I’m amazed we’ve gone as long and as far as we have, but for a number of reasons I think we’re ready to begin moving on. The bulk of web apps will continue to be built in JSP and PHP and ASP for awhile, but within a handful of years I think they will no longer live in a browser and they won’t be in HTML either.
<?>
I’ve hacked up CGIs in C, C++, and Perl. I’ve worked in ASP back when it was in beta, ColdFusion when it was 1.0, written templating tools in VB and C++, PHP and JSP and XML/XSL, Cocoon and Velocity. I’ve made up my own too. It’s all pretty expensive and vaguely incoherent. Smart and disciplined folks have to put a huge amount of energy into engineering anything that isn’t a mess and preserving that in the face of all that pulls it apart with time. Inexperienced or lazy folks just leave a mess and contribute to the general perception that software’s unreliable and unmaintainable.
Before the web days, I created applications on the desktop in a variety of languages, and those that talked to a server were fat clients with a heavy-duty installation and heavy-duty tech support woes. VB dlls? No thanks, I’ve got a few somewhere already. RMI with Java suggested the rich possibilities of just pushing an object over the wire and getting one back. CORBA you say? I know, but it just didn’t get there fast enough, broadly enough, for enough people to matter. Service oriented architectures and web services help clarify the interface boundaries between systems and finally achieve a looser coupling despite a tight data integration. Higher bandwidth and ubiquitous connectivity to over-powered client PCs leave us ripe for a richer connected application architecture.
So, what’s it going to be? I think we can identify some of the requirements:
- Free or really cheap and easy to get installed on almost every platform
- Aesthetically rich user interfaces
- Support for rich media types (sound and vision)
- Sophisticated client-side programming models
- Transparent support for web service integration
- Enough open standards and multi-vendor support to look like a safe bet
- Solid developer tools to entice the community and enable productivity
I’m open to suggestions. I’ve started looking into Flash, seriously, as a representative of the type of thing I’m talking about. If Macromedia can get their virtual machine free of their animation/presentation model (and it looks like they’re trying) then they may have a shot. If Microsoft do a good job and the world doesn’t change too much before they get it released in 2006, then “Sparkle” might turn out to be something meaningful after all.
But I think it’s time to look to the future, which really just means it’s time to start making it happen.