Interoperability and the Progammable OS
Consumer operating systems have come a long way in my lifetime. Advances in user design and feature improvements have made many things that were once impossible commonplace. But that’s not to imply there aren’t opportunities for improvement.
For instance, I am consistently disappointed that consumers have settled for the status quo in application interoperability. Currently, interoperability between applications means one of two things:
- Cut to and paste from the clipboard
- Arcane and seldom used features offered by sister applications in a bloated, monolithic productivity suites
When I first saw Mac OS’s Growl notification system I felt we were on the verge of the next era of interoperability. Alas, Growl has remained “write only” – applications can send messages to Growl for relay to the user, but that’s about it. There’s no way for users to do anything with this information. For instance, what if users could pipe these notifications to other apps, sort of a ifttt.com for the OS.
Imagine if operating systems of the future allow applications to notify the OS of events and expose triggers to the OS for actions. Outlook could register events like “Email Received” or “Birthday Notice”. An instant message client could register triggers for actions like “Send a Message” or “Pop up an Alert”.
Using a simple pub/sub model, the operating system becomes the broker between applications, leading to a truly interoperable experience that is limited only by the hooks application developers expose. So, for instance, the user could easily use the events and actions mentioned above to automatically send an instant message to her friend Tom on his birthday.
If this sounds vaguely familiar, it’s because at a low level most of *nix-based operating systems have been working off of a concept very much like this from the start. It just hasn’t made its way up to the user interface. We’re not at all far away from being able to program our machines in ways early application developers would have never dreamed.