Raskin's next Mozilla experiment: an even smarter address bar
Shouldn't a Web browser eventually be capable of responding to natural-language commands -- not the Web site, but the browser? Today, the son of legendary developer Jef Raskin launches a project to explore that question.
One of the most lauded additions to the latest edition of Firefox is how its new "smart" address bar (called the "awesome bar" in early betas) can resolve some incomplete or indirectly descriptive entries into URLs. Sometimes, it even throws the text over to Google when it can't quite resolve the text into a history entry or a URL that Firefox has seen before.
This got Mozilla Labs engineer Aza Raskin -- who made waves two months ago with a concept video for a radically redefined Firefox for Mobile -- to thinking: What if that "smart bar," or something similar to it, were equipped with a language interpreter and a command processor? Over the past decade-and-a-half, we've seen a countless array of ideas for browsers that processed natural language queries; but what if this ended up being the place to do it?
Rather than simply stop with the production of another concept video, with this experiment, Raskin has produced at least the skeleton for some code for a concept he calls Ubiquity. For now, it's an add-on to Firefox 3 that does not override the functionality of the address bar; instead, you call it up using the Ctrl-Space (Command-Space for Macs) key, and Ubiquity brings up a separate command line.
"Most people do not have an easy way to manage the vast resources of the Web to simplify their task at hand," Raskin wrote in a blog post this afternoon. "For the most part they are left trundling between Web sites, performing common tasks resulting in frustration and wasted time...Ubiquity's interface goal is to enable the user to instruct the browser (by typing, speaking, using language) what they want to do."
Though the Ubiquity 0.1 plug-in (available from Mozilla Labs) is far from being able to accomplish the concept's goals, its blueprint is to eventually be able to deconstruct a natural language sentence, subdivide that sentence into parts that may serve as commands, and process each of these commands as actions. The key here may just be the latter part: The end goal of the translation process is not to find the URL that corresponds to the brand name of the job the user wants to perform, but rather to perform the job.
"Book a flight to a Boston next Monday to Thrusday [sic]," Raskin's ideal address bar would be capable of processing, "no red-eyes, the cheapest. Then email my Boston friends the itinerary, and add it to my calendar." That, instead of the URL for a travel service, a Web-based e-mail portal, and a Web-based calendar.
BetaNews was among the first to begin experimenting with Ubiquity 0.1 when it went live this afternoon. What we found, to our surprise, was a rudimentary command parser that was pretty much stuck with one command: translate. If you have a small passage of foreign language text highlighted with the cursor, you can type Ctrl-Space, bring up the Ubiquity command line, and type translate. For a few very common words, such as the French moi (me), the translation process is immediate. If it doesn't recognize the language, you may be able to try translate from French to English as your command instead -- at least that's what Ubiquity's early-release documentation suggested.
Here we're trying Ubiquity 0.1 while reading (or trying to read) an article in Paris Match about the Democratic National Convention in Denver. We'd like Ubiquity's help in translating the sentence, Ses partisans lui sont fidèles. So we type Ctrl-Space, followed by translate. Ubiquity responds with the phrase, "His supporters are fidles." Barack Obama might be interested to know that his loyal delegates are rapidly becoming violins. (And yes, if you're interested, Trop lent! means "too slow.") |
When that fails (and it will), Ubiquity gives you a list of sites where you can throw the text over to see if makes sense to any of them: Google, Yahoo, and Wikipedia are among them. But of course, the Firefox 3 smart bar already does that now. If you're unaware of Ubiquity's current limitations in the natural language processing world, a query like, Show me the way to get to the Indy 500 (which we tried) will be tossed over to Google forthwith. While Google has a powerful semantic search engine, it lacks any sophisticated contextual method for determining, for example, who "me" is, and whether "get to" should mean "drive," "go," "fly," or "walk."
So what is Ubiquity demonstrating, exactly, besides another opportunity to be patient while its creator completes its concept? Partly it's to demonstrate a potential solution, Raskin explained, and partly it's to highlight the problem.
"Being relatively new to the Mozilla world, we found it difficult and time-consuming to write extensions to Firefox," he wrote. "There is something largely last-decade about requiring restarts to add a new feature to your browsing experience. It's ironic that the entire Web is on a push model, yet the browser -- the most fundamental tool of interacting with the Web -- is on a pull model. The fundamental problem is that extending the browser, and hence the Web, is too difficult. The closer new browser functionality can be packaged to look like standard HTML and [JavaScript], the larger and more diverse a community will create it."
To that end, Ubiquity has an extensibility model, where the ability to process new commands (hopefully better ones than translate) may be added modularly. Each new command looks like an object-oriented method for stating its parsing rules, and has embedded JavaScript for processing the function.
Conceivably, not only could users teach Ubiquity (provided they know a little JavaScript), but other Web sites could load Ubiquity with new commands that it could learn to process, making the system more adaptable over time.
But that brings up an entirely new ball of wax, Raskin points out, which Ubiquity may try to tackle entirely unto itself: How should users come to trust sites to teach their browsers new tricks? How do I know in advance, for instance, that the next great extension to translate won't prevent Ubiquity from ever using Yahoo or Google?
"It's important to understand the dangers of subscribing to Ubiquity commands from sites that you don't trust," reads the first published draft of the Ubiquity tutorial. "Since a Ubiquity command can do anything, and it has full access to your Web browser, a bad person could write a Ubiquity command to steal your personal information or do malicious things to your computer. You should not install Ubiquity commands unless you are confident that the source is trustworthy. In the future, we'll be creating something called a 'trust network' that Ubiquity users can use to share knowledge about which commands are trustworthy."
Once again, the exploration of big questions has led developers to stumble upon even bigger ones. As the Ubiquity project continues, Raskin may want to consider consulting with developers who have encountered the exact same problems once or twice before. The developers of PowerShell come to mind.