Labs/Ubiquity/Roadmap

< Labs‎ | Ubiquity
Revision as of 18:13, 21 June 2009 by Jdicarlo (talk | contribs)

The Purpose of the Ubiquity experiment

Ubiquity is really two experiments in one.

Pseudo-Natural Language

The first is an attempt to build a practical, learnable, efficient user-interface using pseudo-natural-language parsing. Parsing and understanding the semantics of natural language in the general case is extremely difficult, maybe even impossible, and IMHO best left to academic A.I. researchers. But maybe it's possible to make an interface which is similar enough to a limited subset of natural language that the user's linguistic instincts will make it easier to learn and use. That's what we're exploring.

Verbing the web

The second experiment has to do with the "verbification" of the web. Traditionally the web has been made of "locations", i.e. pages, that you "go" to using a browser. But as more and more of those locations become interactive and offer useful services, maybe it makes more sense to treat those services as things you can "pick up" and "take with you" to use elsewhere, instead of treating them as locations. These chunks of code become commands, the "verbs" of the web, as opposed to the "nouns" that are content-oriented websites.

Security plus generativity

To make this work, we need to solve the problems of how discrete chunks of code can be written and shared (as easily as web pages can) in a way that offers protection from malicious code without sacrificing generativity. Security and generativity are often at odds (c.f. "The Future of the Internet and How to Stop It" by Jonathan Zittrain) so to resolve the paradox we explore new and untested security models such as the proposed "web of trust". If we can find something that works, it could be applied to many other projects as well.

The benefit for the user is efficiency

Natural language and generativity are of interest mainly to developers. For the end-user, the benefit of installing Ubiquity is that it gives a faster way to do common web tasks. With the appropriate command installed, you can accomplish something by simply selecting text on a page and invoking a command, as opposed to copying text, going to a different website, pasting it into a form, etc. For all of the complexity going on under the surface, this efficiency boost is the reason people use Ubiquity. To drive more uptake, we should look for more opportunities to write commands that streamline repetitive tasks.

Although there are a nearly infinite number of cool new features that can be proposed for Ubiquity, we should try to stay focused on these three areas: natural language interface, verbifying the web, and increasing the efficiency of the user's internet tasks. Things that aren't closely related to one of these should be considered out-of-scope for the project.


Planned Upcoming Releases

Ubiquity 0.5

The big news here is the new parser, which supports internationalization. We took everything we learned from writing the original parser and used it to create a much more robust and expandable basis for future development of multiple-language pseudo-natural-language input.

Second biggest news is the new interactive tutorial. User testing showed we had a desperate need for a better first-run experience, so we created a walkthrough that takes new users by the hand and teaches them the basic concepts along with a handful of the most useful commands.

Release date: June 22 (or 23rd if we're following the tuesday-publicity theory), timed to coincide with release of Firefox 3.5.

Must support both Firefox 3.0 and 3.5.

Major new features:

  • Parser version 2, which supports internationalization
  • More consistent naming of standard feed commands, with no more hyphens
  • New interactive tutorial
  • better organized web/help content
  • improved asynchronous noun suggestions
  • Supports multiple languages: English, Japanese, and Danish at launch; more later.

Community building after 0.5:

  • New command developer documentation
  • Series of videos promoting new features that 0.5 offers to command developers and encouraging command developers to update their feeds to the new format.
  • Educate command developers on locked-down feeds, encourage them to use locked-down feeds whenever possible and standard feeds only when absolutely neccessary.
  • Human interface guidelines for command developers, to encourage consistency of interface between commands.
  • Outreach to localization community, to solicit the help of localizers to get Ubiquity working in more languages.

Ubiquity 0.5.1

A few features that didn't make it into 0.5, along with fixes for whatever the biggest bugs are that we discover after 0.5. Notable features (which are almost done, but didn't get in to 0.5 before feature freeze) are:

  • Provider plugin arguments
  • Suggestion memory in parser 2

Ubiquity 0.6

0.6 will be a polish release. After the deep infrastructure work of 0.5, we need to focus on turning the new power of the platform into tangible benefits for the end-user. That means improving the implementation of the standard feed commands for better stability and functionality.

Around this time, the Test Pilot project will have produced a usable set of policy guidelines for collecting data without compromising user privacy. These guidelines will be implemented in 0.6 so that we can start collecting usage data that we can use to scientifically improve the usability of Ubiquity from here on.

  • Instrument Ubiquity for data collection according to Test Pilot standards.
  • Improvements to standard feed commands and their documentation
  • New and better default skin; Better graphics for user interface.
  • Localization gets wider and deeper: More locales supported; make nountypes localizable; look into distributing localization so that a command feed can be localized independently from its creator.
  • User-defined command aliases

Community Building after 0.6

We should have a contest to write the best Ubiquity command -- the most useful, most innovative, and best implemented commands that conform to our human interface guidelines will be rewarded with publicity, swag, and possible uplift into standard feeds to be included by default with future versions.

Ubiquity 0.6.1

A few features that didn't make it into 0.6, along with fixes for whatever the biggest bugs are that we discover after 0.6.

Ubiquity 0.7

Ubiquity 0.7.1

A few features that didn't make it into 0.7, along with fixes for whatever the biggest bugs are that we discover after 0.7.


Ubiquity 1.0

A Ubiquity worthy of being called 1.0 must have: