Concept Series Design Jams at University of Michigan

rhian

October 30, 2008

1:20 pm

In September a group of HCI students at the University of Michigan’s School of Information began a series of design jams focused on the future of the browser. These awesome events aim to contribute ideas to the Concept Series. When we launched the series we put out a call for “industry, higher education and people from around the world to get involved and share their ideas and expertise as we collectively explore and design future directions for the Web”. These students are doing just that.

Headed by Liz Blankenship, a current Masters student in the HCI program, the first satellite Labs night encouraged brainstorming around how to create a better browser. The students divided into four groups - Tabs, History, Automation, and Web Apps - and discussed use cases present in each. Check out a complete wrap up of the event on the Student Organization for Computer-Human Interaction website. The second event, held in October, took ideas generated at the first session and expanded them into mockups and sketches. The students again broke into teams and dove into fleshing out details around each concept. More details here. The third and final jam will tackle creating functional prototypes.

Great work by these students. We would love to hear about similar projects. What are your thoughts on the future of the browser?

Add them to the Concept Series in any state - crazy idea, sketch, mockup, prototype, all are welcome!


A Brief Rant

Jono DiCarlo

October 27, 2008

6:52 pm

Alright, Internet, listen up!

Modal dialog boxes are bad UI. We knew that they were bad UI twenty years ago.

Do we really need to re-implement modal dialog boxes, inside web pages, in Javascript, in order to re-discover this fact?

I’m not going to name names. You know who you are. You’re on my list!

      


Pie In The Sky

Jono DiCarlo

4:34 pm

This blog post is a hands-on experiment. If you have Firefox 3, before you read any further, please go to this page and try out the demo.

(Unfortunately, the demo will only work in Firefox 3.0 and later, because it uses some cutting-edge features of the Canvas object that aren’t supported in Internet Explorer, Safari, or older versions of Firefox. I believe strongly in presenting web content in a cross-browser compatible way, but sometimes for feature demos, requiring Firefox is unavoidable. This is Mozilla labs, after all.)

Anyway, the demo presented two different styles of pop-up menus and asked you to repeatedly select the same menu item.

Which menu style made the task easier? Why do you think that was?

A Brief History of Pie Menus

Pie menus are nothing new. Don Hopkins has been evangelizing them for decades. Mozilla has experimented with pie menus before, although (as far as I know) the experimentation hasn’t led to any core browser features.

Also, here’s Radial Context, an extension that replaces the Firefox context menu with a pie menu; unfortunately, it’s no longer actively maintained and is only compatible with Firefox versions 2.0 and older.

[UPDATE: Here is an updated version of the Radial Context extension that works with Firefox 3.]

Do you know of any good pie menu implementations for leading browsers? If so, please leave a link in the comments. For example, I know that Opera has mouse gestures, but does it have pie menus?

Fitts’ Law

The reason why pie menus are good has to do with Fitts’ Law, one of the most reliable theories in all of HCI, which has been empirically verified time and time again. Sadly, a lot of people who do UI design, even professionals, don’t know about this simple and useful formula:

where:

  • T is the time taken to move a pointing device to a target. It’s a function of:
  • a and b are constants, which depend on the hardware and the individual person using it, so they’re generally outside the control of UI designers.
  • D is the distance from the starting point to the center of the target.
  • W is the width of the target, in the direction of motion.

In other words: bigger things are easier to hit than smaller things, and closer things easier to hit than those farther away. (No duh, Sherlock!)

In a pie menu, Dis very low, because the pie slices are all adjacent to the starting point. And W (the width of the target) is correspondingly large, since each pie slice occupies the largest possible area. (In some implementations, the pie slice area effectively extends all the way to the edge of the screen, making W very large indeed.) Therefore Fitts’ Law predicts that the time to aquire the target in a pie menu should be minimal.

Habituable Mouse Gestures

But that’s not all. Besides Fitts’ Law, pie menus are good because of the habits they teach.

What are you doing with your hands when you select from a menu? You’re making a mouse gesture while holding down the mouse button.
We usually think of the menu that you see on the screen as a UI element, but here’s a different way to think about it: the mouse gesture IS the command. The menu on the screen is just visual feedback to help you find the right mouse gesture.

With a traditional list-style menu, the mouse gesture consists of moving downward by a certain distance. Choosing a different item means moving a different distance downward.

With a pie menu, the gesture consists of moving a certain direction. Choosing a different item means moving a different direction.

Gestures that vary by direction of movement are easier to distinguish, kinesthetically, than gestures that vary only by distance of movement. That means that the gestures involved in selecting from a pie menu are easier to perform without looking. And it’s always easier to form a habit around a UI interaction when it can be performed without looking.

A good user-interface is one that naturally teaches the user effective habits. And pie menus are an effortless way of learning efficient mouse gestures.

Pie Menus in Ubiquity

For a UI widget with so many advantages, pie menus are sorely underused. They’re used in computer games (The Sims being the best-selling current example), and they’re used in (shameless plug) Songza — click on the title of a song to see a pie menu.

But pie menus are conspicuously absent from most popular UI libraries and toolkits. They’re not in the Human Interface Guidelines of Mac, Windows, Gnome and KDE. Many UI designers don’t even know they exist. Sure, round things are a little harder to program than square things, since they tend to involve polar coordinate math, but it’s not that much extra effort.

I’m particularly interested in the possibility of using pie menus to replace the Ubiquity context menu. (Wait, Ubiquity has a context menu?) Yes, it does, but it’s not well-documented or widely-used. It’s also not very useful, since it’s currently a big, unweidly, unsorted, list of random commands which may or may not be applicable. It would be cool if right-clicking on some selected text — or an image or link, for that matter — resulted in a menu like this:

Not a Panacea

Just replacing a rectangular context menu with a pie menu doesn’t magically make everything better, though. In fact, it introduces a new set of problems that need to be solved.

One of the problems that we’d immediately face is the large number of Ubiquity commands available. At my count, there are no fewer than twenty built-in Ubiquity commands which can take arbitrary text for one or more of their arguments. That means that when we bring up a Ubiquity context menu on a text selection, we start at a baseline of twenty commands, before adding in third-party command subscriptions or specialized commands that can act on the particular data-type of the selection.

Even if we increase the specificity of commands and aggressively filter non-applicable commands out of the context menu, we’re still looking at a large and ever-growing set of commands.

Time for another demo. Try out the pie menu on this page in order to understand the usability problems that arise when there are too many items in a pie menu. (Basically, when the wedges get too small, you lose the benefit of being able to select one without looking at it.)

One approach to this problem is to allow a hierarchy of pie menus. For example, if we took the previous illustration as a starting point, then if the user mouses over the “Add to…” pie wedge, they might see a new subsidiary pie menu pop up with the list of “Add to…” subcommands. Like this:

(I don’t have an interactive demo for this yet, unfortunately. It involves a lot more programming than I wanted to do for this blog post.)

I think hierarchical pie menus will be a big step forward. But another problem still remains. To understand what it is, here is the third and last interactive demo. Give it a try.

Annoying, isn’t it?

If the number of items in the pie menu can change, then a given item will not always be in the same place. And if it’s not always in the same place, then you have to visually double-check the menu every time you use it. That means the habit-forming benefits of pie menus are lost.

And here’s the rub: the number of items in the Ubiquity context menu is guaranteed to change. Not only does the list of applicable commands vary depending on the type of content you have selected, but the total number of commands that Ubiquity knows can grow without bound as the user subscribes to third-party commands. There’s simply no way of fixing the number of items in the context menu.

I don’t have a good solution to this yet. I have some vague ideas about keeping the most-used items in the main pie menu, which has a fixed number of slices (perhaps eight?), while shunting the variable number of lesser-used commands off to a variable number of hierarchical sub-menus. But it’s very much an open question. As always, I would love to hear any suggestions and feedback you have.

      


[android] Building and running Android from source

Davanum Srinivas

October 23, 2008

6:01 am

Use the repo script to pull down the source as explained in
Make sure you install ncurses headers using “sudo apt-get install ncurses-dev”
run make from the root directory
run the emulator using “out/host/linux-x86/bin/emulator -system out/target/product/generic/ -kernel prebuilt/android-arm/kernel/kernel-qemu”

PS: Many thanks to massiveRobot on #android IRC channel for the tip for running the emulator.
[...]


Greasemonkey script for Summize search on Twitter Home page

Davanum Srinivas

October 22, 2008

12:31 pm

// ==UserScript==
// @name Summize / Twitter
// @namespace dims
// @include http://twitter.com/
// ==/UserScript==

var summize = document.createElement("div");

summize.innerHTML = '<div style="margin: 0 auto 0 auto; ' +
'border-bottom: 1px solid #000000; margin-bottom: 5px; ' [...]


Android is *finally* open

Davanum Srinivas

October 21, 2008

11:35 am

http://source.android.com/


Mozilla Labs in Berlin: Hack Days

rhian

October 16, 2008

8:32 am

Announcing three great opportunities to hang out and hack with Mozilla Labs! As part of the Labs whistle-stop tour through Europe, we will be hosting Hack Days at c-base in Berlin. These sessions will be super informal and totally flexible - join for any part of the day to code, ask questions, or just hang out. Meet the leads for high-profile future-of-the-web experiments including Weave, Ubiquity, Geode, and Personas.

  • Lightening presentations every two hours on Labs projects. Open slots for anyone else who wants to do a lightening presentation on their own project.
  • Showcase presentations for projects people have been working on during the Hack day
  • Workshops for web best practices
  • Previews of new content features in Firefox 3.1 (SVG Transforms!)
  • Workshops and tutorials for making Ubiquity commands
  • Competitions around story boarding new concepts, creating Ubiquity commands, and Geode-enabled sites

Schedule:

Tuesday 10/21
3-7:00pm Mozilla Labs Hack Day 1 at c-base
Weave in the afternoon, Ubiquity in the late afternoon/evening

Wednesday 10/22
12:30pm-7pm Mozilla Labs Hack Day 2  at c-base
Ubiquity in the afternoon, Weave in the late afternoon/evening

Thursday 10/23

9:30am-12pm Mozilla Labs Hack Day 3 at c-base

We hope to see you there!


I Remember Now/I Remember Now/Why They Called it Thunderbird

Jono DiCarlo

October 14, 2008

4:18 pm

Several computer science students at the University of Toronto and Seneca have made it their class project for this semester to port Ubiquity to Thunderbird and make it run there. Thanks to their efforts so far, we now have the basic functionality operational, as you can see in the screenshot below:

Don’t get too excited yet. This is still in the early prototype phase. Currently the hotkey works, the parser works, the previews mostly work, and a few commands work when executed, but most don’t. The students have to turn in their project at the end of the 2008 fall semester, so if all goes well perhaps we’ll have a usable Thunderbird extension sometime in December.

But it’s not to early to start thinking about the possibilities, such as:

  • Using existing ubiquity commands, like map and translate and whatever your favorite third-party commands are, while reading and writing emails in Thunderbird.
  • Cross-application functionality: email commands activated from Firefox could execute using Thunderbird, while web-searching and social-networking commands used from Thunderbird could execute using Firefox.
  • Sharing of data sources for argument suggestions: for example, the “email” command could use your Thunderbird contact list to autocomplete the recipient’s address, no matter where the command is used from.
  • Brand-new Ubiquity commands for searching and sorting through your email, composing, redirecting, creating filters, and so on.
  • Allowing everybody in the world to create and share email commands, encouraging massive innovation to discover new ways of coping with the Never-Ending Email Flood.

I think ultimately we’re going to have a single cross-compatible XPI that can be installed both on Firefox and on Thunderbird, but for now we’ve made a temporary fork and are doing Ubiq-Tbird development in a separate repository at http://hg.toolness.com/ubiquity-thunderbird. If you want to get the source code and set it up to run in your copy of Thunderbird, a page of very rough documentation is here on the wiki.

Once Ubiquity is fully operational in Thunderbird, what would you like to be able to do with it? Do you have any ideas for commands that you’d especially like to have to help keep your inbox under control? Leave a comment and talk about what you’d like to see!

      


Developer Tools and the Open Web

cbeard

October 13, 2008

9:18 am

Today we’re announcing the formation of a new group that will focus on the research and development of developer tools for the open Web.

We believe that there’s tremendous opportunity for innovation in tools that increase developer productivity, enable compelling user experiences, and promote the use of open standards.

We’re also excited to announce that Dion Almaer and Ben Galbraith, co-founders of Ajaxian, the Ajax Experience, and long-time supporters of the open Web, have joined Mozilla full-time to lead this newly formed Developer Tools Lab.

We’re just getting started, so please stay tuned for further details and information on getting involved.

Everything is on the table, from services to software, and we’re looking forward to working with Web developers from around the world to create, experiment and play with new ideas!


How web services punish you

Blair McBride

October 10, 2008

4:11 am

I’ve noticed that in order to use the APIs of some web services, they are requiring applications (web based or otherwise) to obtain per-user API keys. This is essentially a generated password (separate from the normal login password) specifically to allow an individual application access to a specific user’s data via an API. It requires the user to manually request an API key for each individual application they wish to grant access to, and then enter it into that application. Sometimes the user is instead forced to manually verify every single action.

In other words, it punishes the user because the web service doesn’t trust the 3rd party application. This is wrong. Its not the user’s fault.

This has come up many times for Ubiquity command authors trying to provide easy and novel access to web services. It means that if commands want to use a web service’s API, they need a setup procedure before they can be used. Which is stupid, because a command already has access to the login cookie, and the login information in the password manager.

I’m not saying that I’m providing a solution for all of this. There are already plenty of other existing methods to choose from – some of which may fit, some of which may be just as bad. What I am saying is that while granularity in access control can be seen as a good thing, it should not come at the user’s expense.

Related posts:

  1. Ubiquitous information – Part 1
  2. Ubiquity & Firefox – Introducing Taskfox

Older Posts »