Archive for October, 2008

Ubiquity Update: 0.1.2

Sunday, October 26th, 2008

Ubiquity Update

We’re pleased to say that the distributed team at Mozilla Labs working on Ubiquity has recently released an update to Ubiquity. If you already have Ubiquity, it will auto-update itself. Otherwise, you can download it here.

What’s In It?

We’ve got an amazing amount of feedback about Ubiquity since it’s launch. One of the main points has been wanting features and bug fixes for the commands included in Ubiquity, as well as more commands. The web moves quickly and Ubiquity has the ability to stream commands: it’s silly that we aren’t using that ability to let development of those built-in commands rage on, without being impeded by the slower Ubiquity release cycle. The largest update in “Raging Stream” is the ability for all of the built-in commands to be streamed in from the HTTPS-secured Along with that is an experimental way of having all preview  and command code combined into one large file.

Also, for those of you who are writing commands, we’ve greatly improved the Ubiquity command editor. For a full list of changes and notes, check out the release notes on the wiki.


Between Ubiquity 0.1.1 and 0.1.2, we are proud to have been joined by many new faces. In particular, two new members now have commit access to Ubiquity. Please welcome Fernando Takai, and Davanum Srinivas! By the quality of code, and quality of their participation in the community they have shown themselves to be stewards and champions for the rest of our contributors.

If you have patches or questions, please don’t hesitate to ping us on the #ubiquity channel on IRC at The handles of the folk who can review code are now fern, dims, jono, atul, abi, unfocused, and aza.

Ubiquity Tutorial: Turn Bookmarklets Into Commands

Thursday, October 16th, 2008

Bookmarklets are clickable actions (technically a link containing some Javascript) that can be added to the bookmarks bar of your browser. They’re a good way of getting control of the web back into users hands, by allowing them to add whatever new functionality they want to the websites they visit.

The main problem with bookmarklets is that they don’t provide a scalable solution for accessing their functionality. You can only have so many buttons on the toolbar before they become an unusable outbreak of pimples that clutter the browser’s interface.

With a new utility function in Ubiquity, it’s now trivial to turn any bookmarklet into a Ubiquity command. Here’s a short video tutorial on how to do it:

Here’s the source code for the command in the video. The bookmarklet comes from here.

name: "Embed Flickr Photo",
url: "javascript:(function(){if(window.page_p)'';%20else%20alert('No%20Flickr%20photo%20found.');})()"

If you’ve got any favorite bookmarklets or great bookmarklet-based commands, put ‘em in the comments.

Firefox 3.1 New Tab Specification

Wednesday, October 15th, 2008

Taking into account all of the feedback from the New Tab concept post, we’ve been working on the behavior for the streamlined New Tab in Firefox 3.1. The esteemed Asaf Romano is leading the development charge.

Adding a new search mechanism was the most contentious issue from the original proposal, so it’s been removed from the specification. The other main pieces of feedback we got were (a) that the page needs to load super fast, and (b) that it shouldn’t be visually distracting. Summing up the requirements into four themes we get:

Polite. The page must be super-fast to load, shouldn’t be distracting, or get in your way.

Quick access. Provide a fast way to open the pages you start navigation tasks with or for reclaiming closed tabs and windows. This is especially useful for heavy mouse users.

Streamline. New tabs are opened to start a new task. If we have a good idea of what that task is (like mapping an address selected on the last tab), we should simply and streamline that task in a polite way.

No configuration. Never force the user to set up or fidget with a feature before they use it.

New Tab Screen

There are three parts to the new tab screen. A quick-access strip along the bottom, a set of contextual actions in the upper left, and a tab and window recovery link in the upper right.

New Tab For FF 3.1

Note that the graphics here schematic — the icons and exact styling isn’t right. We are looking for help here, so feel free to jump in by mocking something up, putting it on Flickr, tagging it “mozconcept”, and blogging about it. Adding a comment here wouldn’t hurt either.

Let’s take the parts one at a time.

Quick-access Strip

It may seem slightly strange the quick-access strip is along the bottom of the window. It’s there in order to be polite and not distract you if you’ve got your mind on opening a new tab and just entering a url. The bottom of the window not in your foveal vision, so if you are looking at the URL bar, you won’t notice the strip. It’s the best of both worlds: the cleanliness of a blank page, and the convenience of speed dial.

The quick-access strip is determined by frecency — the same metric that the Awesome Bar uses — with one twist. Instead of raw frecency over all sites visited, we are only considering those sites that start history “strands”. That is, we are using the most frecent sites that you actually begin browsing from. The versatile Places feature of Firefox 3 makes this possible.

The quick-access strip itself is made up of a thumbnail, title, favicon, and the last couple entries from the page’s RSS feed. It’s the last which is most interesting. Without the user ever having to know what RSS is, they still get the benefits of content syndication. For example, both Gmail and Yahoo! Mail provide RSS feeds, so you’ll automatically get to see your latest emails — without hassle or setup. Pretty good for a zero configuration interface. (Thanks to Ambient News for the inspiration for including RSS).

To enhance uncluttered-look, everything on the page is in grayscale and slightly faded. When the mouse gets near the strip, the colors fade back to being resaturated. These effects are possible by Robert O’Callahan and Vladimir Vukićević‘s awesome work on SVG effects for HTML content, which is new in Firefox 3.1.

Contextual Actions

Copy-navigate-paste is a common interaction on the web that we can streamline. These patterns should sound drudgingly familiar: Select some text, open a new tab, and do a Web search/Wikipedia search; Select an address, open a new tab, go to a mapping service, paste it in; Select a single word, open a new tab, go to a dictionary, paste it in, …

These are all things we can turn into a single click with contextual actions on the New Tab page.

New Tab For FF 3.1 Actions

The actions only show up when they are apropos, based on what you selected in the previous tab. If you’ve selected an address and open a new tab, you’ll be presented with a single-click way to map it, etc.

Eventually, these contextual actions can be a modular extension point, or even be integrated from Ubiquity.

Update: A couple comments point out that there needs to be a way to change providers for the contextual actions. I forgot to include that in this write-up, but I’ll be adding it here soon.

Tab/Window Recovery

Clicking on the recover tabs and windows link slides the page over (iPhone style) to a set of thumbnails of recently closed tabs and windows.

New Tab For FF 3.1 Tab Recovery

Why is it on a separate screen? Because recovering an accidentally closed tab doesn’t happen so often that it warrants cluttering the new tab screen. The correct time to surface an affordance for quickly undoing an accidental close of a tab is just after a tab is closed, not on the new tab screen.

Slide animation between new tab screen and tab recovery screen

As an added benefit, this feature means we can remove the dialog box that asks users whether they want to restore a previous session or start anew upon Firefox start-up. That’s a question you normally don’t care about, and that has no easy way to undo a wrong choice. It’s removal, by providing a better mechanism on the new tab page, is a big win.


The brainstorming behind this specification was a group effort. Many thanks to Asaf Romano, Alex Faaborg, Jenny Boriss, Mike Beltzner, Madhava Enros, and Vladimir Vukićević. Special thanks to Edward Lee for the AutoDial add-on, and Atul Varma for the Ambient News add-on.

Mozilla Labs in Europe. Join us!

Monday, October 13th, 2008

Mozilla Labs will be making its way to Europe next week to meet with community members, hackers, bloggers, media types, and general feasance doers. We’ll be spending time in London, Berlin, and Barcelona. We’ll be having Labs nights, Hack sessions, or drinks in each of the cities. They are open to everyone, so we hope you can join us!

More details to follow, but here’s a rough outline of the where we will be.

Monday evening, Oct 20th. London. Possible event and drinks with Labs.
Tuesday 2:30pm-7pm, Oct 21st. Berlin. Hack Day 1 @
Wednesday 10:30am-7pm, Oct 22nd. Berlin. Hack Day 2
Thursday 10:30am-2pm, Oct 23rd. Berlin. Hack Day 3
Friday evening, Oct 24th. Barcelona. Drinks with Labs.
Saturday, Oct 25th. Barcelona. MozCamp EU. Labs keynoting.
Sunday, Oct 26th. Barcelona. MozCamp continues.

Dan Mills will be with us, so come with your Weave thinking caps on. Chris Beard will be around for the Barcelona segment. I’ll be around too, so plan on some good Ubiquity times.

Many thanks to Jane Finette for coordinating everything.

Mozilla Labs Geode: Follow up

Monday, October 13th, 2008

On Tuesday, we launched Mozilla Labs Geode. It’s had great response, and we’ve seen websites embracing the standards-based geolocation all across the web.

There’s also been a bit of confusion about how Geode + Firefox 3.0 is related to what’s coming up in Firefox 3.1, as well as why location is a useful thing to have on a laptop/desktop computer.

One of the reasons for Firefox’s popularity is that it is so respectful of the user’s privacy and safety. With something as important as location, no amount of failure to respect the user’s desires is acceptable.

What’s the Difference Between Geode and Firefox 3.1?

There are a two main moving parts in implementing of geolocation. Let’s break them down.

Javascript Geolocation API: The Javascript API is what allows any website to request and process geolocation data. It’s a W3C standard, so the the API will be constant across all browsers, as well as between Geode and Firefox 3.1.

Location Provider: The location provider provides geolocation data to the Javascript API. In the Firefox 3.1 beta, there are currently only two providers: one to let the user enter their location manually, and another for any GPS device connected to the computer via a serial connection. It’s possible to add more providers, or to remove them. We aren’t sure what providers will come by default with Firefox, and we are looking for feedback.

Why Geode?

Geode is meant as a temporary solution to allow websites to experiment with geolocation today. Unlike Firefox 3.1, it doesn’t afford the user a choice of geolocation provider. Skyhook is built in. A side effect is that Linux isn’t supported for the simple reason that Skyhook hasn’t implemented Linux drivers. Although not ideal, it’s okay because Geode is only a temporary add-on.

Uses: Why Geolocation on the Desktop?

There are two parts to this answer.

(1) We shouldn’t allow the web to fragment; the web shouldn’t have fundamentally different abilities on a mobile device than on the desktop. That leads us back to WAP versus HTML thinking. Geoocation, address book, and access to the camera may be seem more apropos to mobile devices on first blush, but removing them entirely from the desktop nips entire areas of innovation in the bud forever. That has a chilling effect on the web as a whole, as well as continuity of experience across all devices.

(2) There is an entire gamut innovation that geolocation enables, from obvious to obscure.

There are first-order experiences enabled by geolocation in the browser. These are of the variety, “I am here, so I should see content that is filtered by my location.”, Everyblock, and Food Finder are examples.

There are the social aspects of geolocation. These are of the variety, “I am here, and so are/were my friends.” Brightkite, Pownce, and Twitter are examples.

And then there are the second-order experiences of the variety, “I am here versus there, so alter my experience.” This is where most of the unexplored areas in geolocation on the desktop come in.

We’ve already mentioned an RSS reader that knows the difference between home
and work and automatically changes it’s behavior appropriately, and Web site
authentication that only allows you to login from certain physical
locations, like your house. But there’s a lot more. Like virtual capture the flag. Or different playlists for different parts of the house. Or having your computer automatically turn off the lights (if you’ve forgotten to) at home when you plug in at work. Or phoning home if you computer gets stolen — with the location of the thief. Or…

If location was stored in the Places system, Firefox could modify the browser’s behaviors to be optimized for home versus work. It might even not list, in the Awesome Bar, a certain site that you visited from your bedroom after 11pm. Firefox could let you search for sites you’ve been to by remembering where you were when you did the search, or have smart bookmarks for “bookmarked at home” and “bookmarked at work”, or show a map of your browsing history. (Thanks to Dietrich Ayala for these ideas).

Track anything for $40?

Thursday, October 9th, 2008

Desire: I’d like to be able to track physical things—myself, backpacks, other people’s cars. Don’t ask me why. I’m mischievous. I’d like the solution to be low-cost enough that it isn’t painful to toss the tracker in a car and expect to never get it back.

Background: I’ve looked into the pre-built systems used for tracking fleet trucks and cars. They come with a cell-connection and GPS. They would be perfect if they didn’t cost a lot of money and weren’t both clunky and large. I’ve also looked into building something starting from a stand-alone bluetooth GPS receiver—but that already puts me up past the $50 mark, and it still has no way of phoning home.

Solution: The solution is pretty simple. A low-cost tracking system needs a cell-connection and a GPS. Some pay-as-you-go cell-phones come with a GPS, or at least cell-tower triangulation. If we can just get some software onto the thing to power it up every 30 minutes, spin up the GPS, take a reading, send an SMS with the location, and power down again, we’d be done. I’m not sure whether it’s possible to load new software onto pre-paid phones, but I’d be interested to find out.

There are are already some companies selling a phone which does something similar (for tracking your children—i.e., spying) for around $160 dollars.