Software development

Tightening the web around software

What started as a system with isolated points of access is now weaving into a tight fabric. That is, instead of surfing the Internet, we are increasingly immersed in the waves themselves. However, simultaneously the fright of drowning is diminishing as technology becomes a part our lives –- and not the other way.

Web itself is no longer a synonym for a browser. Web is but the facilitating structure that enables client software to share and consume information. Web pages, of course, remain such clients, but in addition we now have countless applications built on numerous other platforms. The motivation behind this phenomenon is most commonly either gaining access to some information only available on a certain device –- such as accelerometers –- or need to package the application in a certain way in order to put it in, say, AppStore.

With this transition arise new challenges. The former prevailing issue of browser compatibility is steadily fading into history and is giving room to a new kind of fragmentation of technologies. We are already living in a world filled with a spectrum of processor architectures, embedded operating systems and physical screens of different sizes. No longer is it possible to have one portal with only cosmetic tweaks to accommodate this variation.

However, unless one platform will one day rule the realm of software, I believe we will see a compromise emerge. What I mean is, it requires far too much effort to create a client with similar behavior for each of these ecosystems. Was there a solution that offered enough, while providing a suitable compatibility across platforms, it would be the eventual winner. This is simple evolution that the markets dictate.

There seem to be two plausible heirs to the Web 2.0 that fit the description. Namely, they are Adobe AIR and hybrid applications.

With Adobe AIR it is possible to directly package a web application (HTML5, JS and/or Flash) into an installer package that the AIR Runtime installs and executes. Essentially the same code can be run with access to all kinds of native APIs and local storage on any platform for which Adobe has provided the runtime. However, currently these platforms only include Android in addition to the usual desktop operating systems. In this sense it does not alleviate the dire situation.

Another approach is to stretch the traditional web a bit further. In all modern platforms it is possible to embed HTML5 inside of a “real” application, and contrary to the past, they also behave consistently. By only building the bells and whistles natively on top of the core functionality implemented in web technologies, it is even today possible to increase the amount of shared code between different applications –- thus reducing the amount of total work. However, while this sounds like the perfect cup of tea, the native wrappers still require quite a lot of expertise to develop for someone just starting and the overall architecture can easily go horribly wrong.

We are still far from an optimal solution, but it would certainly seem that the web as we have grown to know it is not disappearing but is rather becoming a fundamental building block of future software. Expect the web to be dissected and reassembled into a new world of software.