An experiment into connecting the Web with language.
It Doesn’t Have to be This Way
You’re writing an email to invite a friend to meet at a local San Francisco restaurant that neither of you has been to. You’d like to include a map. Today, this involves the disjointed tasks of message composition on a web-mail service, mapping the address on a map site, searching for reviews on the restaurant on a search engine, and finally copying all links into the message being composed. This familiar sequence is an awful lot of clicking, typing, searching, copying, and pasting in order to do a very simple task. And you haven’t even really sent a map or useful reviews—only links to them.
This kind of clunky, time-consuming interaction is common on the Web. Mashups help in some cases but they are static, require Web development skills, and are largely site-centric rather than user-centric.
It’s even worse on mobile devices, where limited capability and fidelity makes this onerous or nearly impossible.
Most people do not have an easy way to manage the vast resources of the Web to simplify their task at hand. For the most part they are left trundling between web sites, performing common tasks resulting in frustration and wasted time.
Today we’re announcing the launch of Ubiquity, a Mozilla Labs experiment into connecting the Web with language in an attempt to find new user interfaces that could make it possible for everyone to do common Web tasks more quickly and easily.
The overall goals of Ubiquity are to explore how best to:
- Empower users to control the web browser with language-based instructions. (With search, users type what they want to find. With Ubiquity, they type what they want to do.)
- Enable on-demand, user-generated mashups with existing open Web APIs. (In other words, allowing everyone–not just Web developers–to remix the Web so it fits their needs, no matter what page they are on, or what they are doing.)
- Use Trust networks and social constructs to balance security with ease of extensibility.
- Extend the browser functionality easily.
Learn more about Ubiquity and the capabilities that it could provide for users and developers.
The Initial Prototype
As part of this announcement, we’re also releasing an early experimental prototype to demonstrate some of the concepts of Ubiquity and the possibilities that it opens up. This release is meant as a illustration of a concept and mainly focuses on the platform. The next release will explore interfaces that are closer to features that might make it into Firefox.
- Lets you map and insert maps anywhere; translate on-page; search amazon, google, wikipedia, yahoo, youtube, etc.; digg and twitter; lookup and insert yelp review; get the weather; syntax highlight any code you find; and a lot more. Ubiquity “command list” to see them all.
- Find and install new commands to extend your browser’s vocabulary through a simple subscription mechanism
- Read about Ubiquity In Depth, or see a number of the commands in action (with screenshots) in the Ubiquity Tutorial.
All of the code underlying the Ubiquity experiment is being released as open source software under the the GPL/MPL/LGPL tri-license.
Influences, References, and Background Resources
- The Graphical Keyboard User Interface by Alex Faaborg
- Why Verbs by Jono DiCarlo
- The Linguistic Command Line by Aza Raskin
- The UI Breakthrough-Command Line Interfaces by Don Norman
- Enso by Humanized
- Trust-based security, and Herd-based knowledge by Atul Varma
For a full list, see the credits page.
Mozilla Labs is a virtual lab where people come together online to create, experiment and play with Web innovations for the public benefit. The Ubiquity experiment is still in its infancy and just getting started. There are many ways to join the team and get involved:
- Download Ubiquity 0.1
- Find Ubiquity Commands
- Get Help, Make Suggestions, or Write Documentation to Help Others
- Write Commands for Ubiquity
- Report a Bug
- Discuss Ubiquity
- View Source
We’ve also started compiling a suggestion list for possible Ubiquity commands. If you have any suggestions, add them here or get inspired and develop one of them and add them to the command repository.