For the Internet connected population, the problems of access to information have long shifted from limited availability of information to problems of narrowing down the flood of relevant information to a manageable amount. Filters have become increasingly sophisticated, but timely, relevant, and unobtrusive display notifications for the information we want are still a work in progress. This article explores recent developments in notifications for desktop clients, mobile phones, and Web applications. Notifications range from the mundane “Your backup is finished” or “Someone just responded to your column online” to the important “Your flight is delayed and has a new gate” to the urgent “A large out of state jewelry purchase just appeared on your credit card” or “Your corporate mail server and primary database are offline.” Many of these recent developments are very much in the experimental stage, but are clearly leading to important changes in how we receive information. For those willing to tinker a bit, the new capabilities are impressive.
Notifications for Desktop Applications
Display notifications are commonplace. These are the little boxes or bubbles that often appear on the lower right hand corner of your screen when you receive an instant message or a contact goes online or offline. Surprisingly, none of the mainstream operating system vendors have included an easily accessible and well-documented notification system for both system events and third-party applications. Many developers have created their own notification systems to fill the void. On Mac OS X, the open source Growl project has become somewhat of a de-facto standard system-wide notification system. Growl offers a simple way for developers to deliver event notifications and it is widely supported by independent developers. Growl offers a great deal of control to end-users both for the display style, the frequency and duration of notifications, and any sounds associated with notifications on a per-application basis. Growl can optionally receive requests for notifications from networked services. Growl has been ported to Windows and has inspired a similar, but incompatible, notification system for Windows called Snarl. Growl has also inspired a Linux-based system called Mumbles that is compatible with Growl network notifications. Linux has several notification systems available including Galago/libnotify and Notify OSD.
Two recent developments, Yapper by Jeff Lindsay and Silent Diving Seagulls by Abi Raja have the potential to greatly enhance the utility of Growl by allowing the notification system to receive requests via XMPP/Jabber. Currently, networked Growl requests require a direct connection, which is problematic for users behind firewalls or NAT devices. XMPP is an open standards-based protocol for real-time instant messaging, presence, more recently VoIP, and structured data. XMPP forms the basis of the Google Talk service and many enterprise instant messaging systems.
Yapper creates a small local server that can join the Jabber network, listen for requests, and relay them to Growl. Silent Diving Seagulls combines and extends several Firefox extensions into a single cross-platform extension that can relay requests to Growl, Snarl, Mumbles, and Libnotify. Lindsay and Raja are working together to develop a standard and cross-platform reference implementation for delivering notifications over XMPP that will interface with existing notification systems. Lindsay has already written a XMPP to HTTP protocol bridge, which could further simplify developers by allowing notifications to be created from HTTP requests. WordPress, FriendFeed, and third-party Twitter services already offer mechanisms to subscribe to feeds via Jabber, which could then trigger notifications.
Notifications for Web Applications
The absence of a standard for notifications for Web-based applications is even more obvious. We are increasingly dependent on Web-based applications rather than desktop applications. The problem is there isn’t a straightforward way for Web applications to notify users through the system that an event has occurred. In order to receive a notification, your browser must be the primary open application and the Web application you are running must be the front-most tab. Otherwise, there is no way for the application to let you know that you have received a new email or IM, your bank session is about to time out, that you have received a new message on a social network, or that the search query you are running has produced new results. Some developers work around this by distributing specialized notifications systems such as the FriendFeed notifier that maintain their own network connections or by piggy-backing on their own instant messenger client as Google, Microsoft and Yahoo! do.
Fluid and Prism are site-specific browser creation tools. They allow users to effectively turn a Web application into a desktop application, by creating a copy of the browser that works with a single site such as Gmail, Facebook, or Pandora. This new application has all the properties of a desktop application with its own dock or taskbar icon, the ability to run on startup, and the ability to be minimized. Fluid and Prism both include notification APIs for Web applications. Abi Raja created a Firefox extension called Yip that recognizes both Fluid and Prism notification APIs and can relay them to Growl, Snarl, Mumbles, and Libnotify. Raja’s Silent Diving Seagulls extension is built on top of the Yip extension. Growler, by Aditya Mukherjeey, implements Yip-like functionality for Safari on Mac OS X. Despite the limited support, Web-based services—such as the Meebo instant messenger client and the Flittr Twitter client—already implement Web notification APIs. Other individuals have contributed many Greasemonkey plugins to add Web notifications to existing Web services such as Google Voice.
Push Notification Services for Smartphones
Apple push notifications provide a mechanism to alert the user in the form of a popup message or a modified icon with a red number indicating the number of new messages. For both consumers and developers, push notifications have the advantage that an unlimited number of notifications are included with the base data plan and that they can be delivered over both cellular data and WiFi data. Given the potential rewards for a successful product on the iTunes App Store, developers are adding push notifications to iPhone applications at a rapid pace and many more have announced that support notifications are imminent. eBay, BeeJiveIM, E*Trade Mobile Pro, Yahoo! Messenger, and the Zillow real estate application all offer push notifications natively. Applications like Boxcar and GPush add push functionality to existing Twitter applications and Gmail. Pinger’s Textfree iPhone application allows users to send SMS messages for free. Users can also receive SMS messages for free, although they are delivered to a @textfree.us address and read in the Textfree iPhone application. Recently the service added iPhone push notifications so that Textfree notifies the user in a way that feels like an SMS.
Far and away the most interesting iPhone push application I have seen is Prowl–an inexpensive iPhone application and plugin for Growl on the Mac and Growl and Snarl on Windows that can send desktop notifications to an iPhone via the Prowl service. To start receiving alerts, the user simply needs to create a Prowl account and register the account with the Prowl iPhone application. Prowl immediately gives desktop applications that work with Growl and Snarl the ability to send notifications to the iPhone. There are settings to control which applications are allowed to send notifications; settings to control the look of the notifications; and settings to control when the notifications are received by defining a quiet time where only notifications designated as emergency are allowed through.
The most compelling feature of Prowl is its API, which allows you to generate iPhone notifications from many applications independent of Growl. While the process is still very much in the do-it-yourself category, nearly any application or service can send iPhone notifications with Prowl. Third-party developers have already written Prowl libraries for many popular languages as well as plugins for other applications and services.
* This article originally appeared as New Directions in Push Notifications for Desktops, Mobile Phones, and the Web in the September 2009 issue of Messaging News magazine.