15 June 2011

The Browsers Future

Today, the web browsers are on the road to become omnipotent: beside the ability to display text they now render complex graphics and video. So many examples in the Web exist providing the user Web pages which are close to pages of an expensive life style magazine with respect of their presentation quality.

Also, browsers are already an runtime environment. See Flash(TM) and JavaScript for example. Look at all the games and interactive websites available in the internet. WebGL and SVG in combination with JavaScript bring you a full desktop like experience into the browser. So it is possible to run a Smalltalk environment in a browser. The current top of this evolution is Googles ChromeOS notebook, where in fact the browser is the operating system and the only thing the user see.

But this is the moment to start thinking in another direction. Why should a single application - the browser - get bigger and bigger ? I always dream about a software ecosystem, were small little code fragments in the sum give you the value. Every fragment, which may be an app or even smaller, has a limited role in the ecosystem and only their dynamic interaction let emerge the value to the user.

And this is the important term: interaction. Every fragment in the sense above shall have a range of processing capabilities. They shall not be limited to much, but broad enough to gain value for different non-forseeable situations. And we now all the solution for this: descriptive languages, like HTML, XML etc. In fact, a browser can handle many things by "just" implementing the HTML language. In the same ways, these fragments should implement one such a language, like SVG for graphics, X3D for 3D graphics, MathML for mathematics etc.

All this things exist, yes, but as one big bunch of software (that many things are implemented as plug-ins doesn't change anything substantially). My vision would be, that the fragments for SVG, MathML, CellML and what ever should be independent small code fragments, which could running on the local machine or anywhere in the network. In this software landscape, the browser would be just a collector and lay-outer of (ready drawn) canvases. And the communication between this fragments should be only ASCII text stream or a (video) stream of bitmaps.

Of course it is difficult to control a collaborative system in its emergent behaviour. But the main question for the future is: do we have to control all behaviour of future systems in detail ? Anyway, my wish would be that the future of software moves away from monolitic systems to a network of small fragments controllable just by descriptive languages.

Enjoy !