The recent talk of Google Gears reminded me again about an aspect of it with a lot of potential.
In addition to the local storage system that enables offline access, it also provides a WorkerPool API for performing script tasks in multiple processes, allowing for much more responsive asynchronous operations. This is a pretty big deal if you’ve ever done any AJAX programming and been frustrated with the limitations of javascript running in the browser.
I once had to do something similar to this with an online support application I was creating. This was several years before the term “AJAX” came around, but it was using the techniques that have now become known as “AJAX” to enable features like chat, etc. to be included in a support request system. The issue with only using regular javascript came about because the interface for the help desk people had to allow them to carry on multiple conversations at once, manage an incoming queue of support requests, and transfer or conference other help desk agents (from a list of available ones) into the chat. Because it was doing so much, using plain javascript was getting a bit slow, since browser implementations of javascript do not have access to multiple processes or threads, so you can only really do one thing at a time while everything else waits.
I ended up moving a lot of the code behind the agent UI into a java applet which would allow multithreaded processing, while the “client” part (people making the requests) just stuck with plain old XmlHttpRequest because that was all they needed and it was best not to require Java on the client side.
It will be interesting to see some apps start to take advantage of the WorkerPool for more complex and more responsive AJAX-ish UIs. I imagine it will be used in this manner primarily for internal “web applications” or just to add extra (non-critical) functionality into sites that have a broader audience, since I don’t think any sites will be able to “require” Gears for core functionality because I don’t see most people installing it. I could see this pushing browser makers towards implementing something like this directly into the browsers themselves, though, so that it’s available for everyone.