Sharing Streamable Functionality

Advertisement:

POWERED by FUSION

Question: How do people share on the net?

Answer: They use services like Del.icio.us, Facebook, and Twitter. They IM, Email, and RSS. They advertise, search engine optimize, and chain letter. But it all comes down to communicating URLs.

Now, that might seem to be a trivial conclusion. And it is—the URL is the unit of location for the Web. But as we began to think about how to share new functionality for the browser (read Ubiquity commands, as well as the broader spectrum of Firefox add-ons), we realized that the basic URL was again going to be the key to sharing.

Question: How is functionality shared now?

Answer: Via one-time software downloads. New versions of Firefox are downloads (albeit often transparent ones) and add-ons are available as static XPIs. 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.

Functionality is not shared via URLs, but it should be. Security concerns aside (we are starting to think about them), it’s a corner-stone of streamable browser functionality.

Question: What should functionality look like?

Answer: Like the rest of the Web. The closer new browser functionality can be packaged to look like standard HTML and JS, the larger and more diverse a community will create it. XUL and the desktop paradigm for extension development, while powerful, has a high cost of adoption. Right now we have a short tail of browser functionality with thousands of add-ons. There should be millions. We can get to that long tail using a more web-like model for functionality development&tools that are accessible to hobbyists and tinkerers, but that scales to professionals.

Bookmarking Functionality

Given that functionality implementations should look webby (think microformats) and be sharable by sharing URLs, it makes some sense that to add a piece of functionality, you should just be able to bookmark it.

In Ubiquity, you can do just that. We still haven’t defined a Ubiquity microformat, so right now functionality is simply a Javascript file. To nab it’s functionality, you bookmark it and tag it “ubiquity”.

Immediately, your browser has new functionality. Streamable functionality.

Using bookmarking solves a lot of user experience problems for passing around functionality: It doesn’t introduce a yet another new thing to learn, it enables no-action syncing between computers with Weave, and it lets you bookmark RSS feeds for aggregating interested meta-sets of commands. It also makes semantic sense: You bookmark content that you find and like, so you should be able to bookmark functionality you find and like.

The bookmark method works in the current prototype (running it requires pulling it from the HG repository). If you build some commands/verbs and want to share them, it is as simple as just posting a file online. If you do, tell us about them on the wiki.