Computer Science has a tendency to spin in circles. Paradigms are like the ocean tide. What started with mainframes went to distributed terminals. Then distributed terminals became personal computers. Then PCs became smart clients and powerful PCs servers. Finally, the internet and the web browser transform our PCs into thin, dumb clients.
I had an interesting conversation with Gary Bishop yesterday regarding Adobe/Macromedia’s upcoming Apollo Platform. Apollo is noteworthy because it bundles AJAX, Flash, Flex, and HTML into a cohesive unit that allows rich internet applications to run as desktop applications.
Gary seemed to be disappointed or stunned by one of Adobe’s major selling points being ‘apps can work off-line!’ Why in the world would a bleeding-edge development platform care about off-line? In a number of years wireless will be ubiquitous! Joel and I have had a similar discussion. Joel, like Gary, feels off-line doesn’t make sense because it is simply not the direction the world is moving. I agree on many counts, but I disagree on others. I believe there is a very interesting space in web applications that can run on the desktop off-line.
“I’m never off-line, what would it matter?” I feel the words ‘off-line’ convey the wrong sense of where the power lies. The power is not in being able to use G-Mail when you don’t have internet access. (Although, it would be nice on rare occasions to not use Outlook as a surrogate client.) The power is in being able to have your e-mails and attachments cached locally. The power is in being able to open 500 meg video attachments instantly. The power is in being able to archive your old mail in files you can store on your own machine(s). To me the argument is, if we have the capability to utilize local persistent storage in trusted web applications why in the world would we not?
Two factors I don’t usually harp on are at the root of this. Efficiency and performance. If our network hardware were perfect we would be limited in transmission speeds somewhere approaching the speed of light. It is simply impossible to move bits any faster. It takes light a little over one tenth of a second to travel around the Earth. Furthermore it takes a processor at the other end of the wire acknowledging the request, switching contexts, processing the request, loading the data from its persistent store, and then pushing it back down the wire. Yes, the data may be cached remotely and yes, Google is placing data-centers strategically around the globe so the distance light must travel is shorter. It would thus be difficult to argue that an application with user-driven data can perform on the same level or better than when that data can be found locally even if our data can travel light speed.
The second factor, efficiency, is tied to the performance but is more compelling. It is simply nonsensical to transfer the same data from server-to-client from server-to-client from server-to-client, …, when the client has a 200GB hard drive and plenty of ram. Just the same as it is nonsensical for the server to do perform simple computations when the client has a fast processor with multiple cores looping idle. File sizes and content are getting larger, networks are routing amongst increasing numbers of nodes, etc. I wonder how many terabytes of data Google has wasted retransmitting the messages in users’ G-Mail accounts multiple times to the same computer. The amount must be incredible. In another context, who would argue L1, L2, and main memory should be purged from our computer systems because disks are cheap and can store so much more? It’s simply a matter of caching and distributing some computation back to the client.
There is no other way for Google to do it right now, though, while remaining web based. Or no easy way, at least. One can imagine the development of a client G-Mail application ported to Windows, Linux, and Mac. The problem is it would be a pain in the butt and a waste of human resources. If, on the other hand, the development hurdles were not monumental and it were actually easy to have a client executable running the same code-base as the web app, why not?
Adobe/Macromedia’s Apollo platform, Firefox 3’s upcoming off-line application support, and Google’s GWT* are all steps in the ‘off-line’ direction. I haven’t tinkered with the newer .Net’s but it is converging this way as well. The reason for all of this ‘off-line’ hype is not because you’re going to be ‘off-line’ more in the future. It is because we will be able to do more much interesting things with on-line than in the past.
*Note: GWT does not advertise or currently support off-line modes but let’s be honest about how perfectly set-up for off-line applications it could be with some additional cleverness from Google.
0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
You must log in to post a comment.