What's Wrong with Modern Computing
Mozilla got something right with Firefox and it's plugin framework - it let myriad developers create extra content contemporaneous to the browser, but beyond the basic scope of a quick, fast web engine. In some respects they over-succeeded - they've created a framework used by 1000's of plugins, some so poorly written as to render all the good things of Firefox useless, consuming memory and CPU. But the vision - of having things plugged into your environment that allow you to function quicker, better, using tools suited to tasks you do every day. Modern OS design could benefit more from this gadget-based approach, and here's how they might do it...
Let's look at the focus of operating system vendor development over the past three to five years. Apple has created an interface for the iPod/iPhone/iPad that is task oriented - a modicum of multi-tasking, but primarily you are focused on a single task. Microsoft has bestowed a concept known as gadgets to Vista and Windows 7.
What I want, however, are gadgets that are integrated with my applications. Evernote integrated into EVERY application I use, as part of an OS toolbar, that lets me grab a bit of data, or a whole document, and sucked into Evernote. A calendar button on my toolbar I can use to turn this document I'm working on into tasks and meeting agendas. A text manipulation tool, like grep, that can do complex search and replace of my document, so no one has to reimplement sed/grep/awk - I get it in one place, for *ALL* apps on the system.
Using Evernote as my example, take this PDF I just grabbed from the IEEE on some esoteric topic. There's a one or two page section inside the document that I want to save. Rather than have each application implement some strange save-a-section-and-export-document logic, why can I not select the section I want, and have Evernote interrogate the application for the data, and then have that sucked into my Evernote repository?
Using regular expressions, for example, I'd like to type in a complex search string, and have my widget/gadget pop up showing all instances in a list, with some before and after context, and allow me to quickly search for the relevant result. As search technologies (natural language, fuzzy matching, etc) advance, my gadgets can adapt faster than every single application in my system.
Take some of Firefox's extensions, like the Skype extension. This adds a little hyperlink after every phone number it encounters in a web-page and integrates it with a single-click to Skype to call the destination. Why can't this be extended across all my applications?
Some studies[pnas1] have shown that multitasking is inherently deficient to throughput. Instead of having to constantly remember applications and locations, and operations, you interrupt the workflow you are trying to achieve. But instead letting the end-user craft their "desktop" to their own needs, their recorder near at hand, their calendar but a blip away, their phone a mere hyperlink - you reduce the intellectual overload of performing tasks. People stop thinking about the tools they need to do their job, and just do their job.
The very nature of applications needs to change - instead of monolithic beasts that do everything, we need to think in structure of small tools that facilitate bigger things with each other, much as we've done with the command-line for the past 30 years of computing.
References:
[pnas1] http://www.pnas.org/content/early/2009/08/21/0903620106.abstract