Mozilla Labs' Ubiquity: Firefox becomes Quicksilver

Lots of talk today across the web about Mozilla Labs' new project, Ubiquity.

If You Want To Create a Mashup, Just Ask Your Browser. Mozilla Labs Launches Ubiquity

Ubiquity prototype lets users take command of Firefox

Ubiquity: Firefox Gets its Quicksilver On

This blog has a nice writeup: Ubiquity In Depth

Quoted from Ars Technica:

Mozilla Labs has released the first working prototype of Ubiquity, a natural-language command-based shell for the Firefox web browser. Although the Ubiquity project is still in early stages of development and the software still has some serious bugs, it already offers some useful functionality and exudes an enormous amount of potential.

The Ubiquity prototype, which is implemented as a Firefox extension, offers an unobtrusive and extensible command interface that enables users to interact with the browser and a number of remote web services. The user can launch the Ubiquity command interface with a configurable keyboard shortcut and then type in an instruction. The command interface has an autocompletion mechanism which attempts to guess the rest of the user's command string and then displays available results.

The command interface is conceptually similar to desktop launcher tools like Enso, Quicksilver, and GNOME-Do. Unlike those tools, it places a strong emphasis on web content manipulation and web services. In many ways, it's like an interactive mash-up system. Ubiquity can respond to user instructions in several different ways. It can directly alter the contents of a web page, it can manipulate the browser interface, it can load a page in a new tab, and it can display output in a notification pop-up.

New commands can be implemented natively in JavaScript, so it is trivially easy to extend the system and bring it new capabilities. The developers have even created a simple Ubiquity command editor that allows users to input new command implementations directly into the browser. Mozilla provides a detailed tutorial that explains how some of default Ubiquity commands were implemented. It is even possible to use popular third-party JavaScript libraries like JQuery to simplify development of new commands. The Ubiquity developers aim to eventually create a tool that can automatically convert Ubiquity commands into full Firefox extensions.

One of the commands that particularly impressed me performs in-place translation of selected text blocks. The user selects a bit of text, initiates the Ubiquity command system, and then begins typing the word "translate" to select the translation command. Ubiquity will use a remote translation web service to automatically detect the language of the selected text, translate it into English, and display a preview of the English translation in the Ubiquity results listing. When the user hits enter to complete the command, the foreign text in the page itself will be replaced inline with the English translation.

Ubiquity offers some very compelling functionality in its current state, but it still has a lot of limitations. The biggest weakness is its lack of support for pipelines. Modularity and support for combinatorial command chains are the greatest strengths of the conventional Linux command-line shells. Ubiquity would be far more powerful if it provided a way to supply the output of one command as the input to a subsequent command.

Ubiquity is largely an experiment in user interaction, but it is likely that some of its functionality will eventually be streamlined directly into the Firefox browser itself. One potential integration vector is the Firefox AwesomeBar, a rich autocompletion system that matches user input against fragments of URLs and page titles and offers the best results based on how frequently a page is visited and how long ago it was last viewed. Many enthusiastic fans of the AwesomeBar have speculated that the system could be expanded to encapsulate more functionality and potentially even a full command system. Perhaps the AwesomeBar could converge with the search box and the Ubiquity command system to form a next-generation Firefox UberBar.

One of the principal developers of the Ubiquity extension is Aza Raskin, the founder of Humanized and son of the celebrated Macintosh luminary Jef Raskin. Aza and several of his colleagues from Humanized were hired by Mozilla earlier this year to work on experimental projects that could shape the future of the web. I've had the pleasure of meeting Aza at several open-source software community events and I've always been immensely impressed by his excellent presentations on software usability. He has bold ideas and very intriguing solutions to seemingly intractable usability problems.

Aza advocates creating software that conforms to the Taoist notion of Wu Wei, which is to "act without doing." The Ubiquity extension, which clearly builds on the experiences that the Humanized developers cultivated while creating Enso, is a profoundly elegant articulation of that Taoist concept.