One major shift that Web2.0 brought upon us (among many others that I'm not going to cover here) is the shift from web sites to web apps. Before we roll our eyes at pompous catch phrases designed to stick into people's mind, let me explain.
In the pre-Web2.0 world we used to navigate to web sites. These were places online that you visit, you follow some links and you're on your way. As the name suggests, web sites were pretty static. Pretty static places that you visit like museums, by browsing from one view (room) to another while admiring the informational content. The dynamic aspect was there too, allowing you to customize your browsing and to customize the information that you want to see. But there was a big gap between the User and the Logic of the web site. Something like this:
User ............................. Logic
There are two ways of closing this gap. One is by moving the User to the right. In this case the User is moving in front of the Logic, basically giving us the classic model of desktop applications. We're all familiar with desktop applications; I'm not going into that now.
The other way of closing the gap is by moving the Logic to the left, closer to the User. This is a move that many technologies tried to make. Some names spring to mind: ActiveX controls, Java applets, Flash, etc. Some of them are more successful than others, but ultimately they all have some caveats.
They all rely on one big download of the component. Some are bigger than others but, usually, the download is significantly bigger than the good old html pages. After the download, the components would be initialized and run locally.
So why is this a problem?
The problem is that web users are not patient people. If the load of a web page takes too long, they are very likely to abandon it altogether. There are even statistics that give you a clearer picture of what's acceptable. This is a generic problem that affects these technologies in particular as they rely on the initial download.
Security is a serious issue in this particular case because the Logic is in fact moving onto the User's computer and running locally. The trust required in this scenario introduces another level of complexity solved by either signing your components or running them in very controlled sandboxes, or controlled environments.
So why is this a problem?
The problem with signing is that trust is delegated to another authority. Not everyone chooses to trust some authorities. This is especially a problem in very tightly controlled corporate environments. Signing still doesn't guarantee acceptance of your component.
The problem with the sandbox model is that it dramatically limits the operations that you can do in your application. The operations allowed make your application compare, generally, very unfavourably with desktop applications.
The sandbox model is enforced by having a virtual machine running your component. All the requests will go through the virtual machine first.
So why is this a problem?
Virtual machines require deployment as well, deployment which cannot be controlled by the application designer. Sometimes virtual machines are not deployed, especially in the corporate environment.
While virtual machines can be seriously improved, VM apps still can suffer from serious disadvantages compared to desktop applications.
In a pragmatic (be it less than ideal) world, we would need a way that alleviates these problems while still trying to close the gap between the User and the Logic.
And the simple solution was to go back to the good old Html and JavaScript. While it doesn't suffer from the caveats above, it does still have the gap between the User and the Logic.
It's not about the gap, it's about my perception of the gap.
The sentence above might be a simplistic definition of the User Experience. Ultimately, for Users, it is what they perceive that they care about. Users don't care about technologies; don't care where the Logic resides. It is all about perception.
And that's why AJAX is hailed as the saviour. While it is certainly not brain surgery, it still manages to change the perception of the User about web sites. By doing a lot of the work in the background, it can trick the User to believe that it is running an application, comparable to a desktop application.
The gap is still there, but the perception of the gap is no longer so clear in the User's mind.
It is not perfect; it's more of a compromise that doesn't suffer from as many problems as other compromises. Also, depending on different external factors and on the User, the perception of the gap can still be there.
But at least Web2.0 gave people hope. At least now we have web applications side by side with web sites.
It's not the end of the story and hopefully Web3.0 will bring a bigger revolution that will improve the User Experience even more dramatically.
Tuesday, December 12, 2006 6:14:20 PM (GMT Standard Time, UTC+00:00)