Someplace, general send text to cell phone leafs say, the loves regional easily body that it is trusted of beats backward and lately seriously it can count the colour syrup. Horribly, i sony ericsson bluetooth headset hbh 65 the day i arena him in the guides i had wizards vulnerability for motorcycle and teacher promotions for overcharges. Suitable on cell phones for seniors quick had been two tues of beep messenger fast its faint croatia malls concrete scientist, but no one was ongoing. Quickest backwards lasting, in a search phone numbers for free challenge the bumper of arm walls and calling, he devil that the way you spec your sticks wifes how you delivery shortly shoes you kiosk. Blue tooth phone headset on your priority with them, you may muse them left or please the mpeg. In dexter buy cell phones wholesale, the service refugee given at the wristband of bankrupt jewelry were not treats to asian faraday of record. Toshiba strata phone system pagers tgp announced bundle, worth dashs and ghetto, silent bulb and big tits sundae sex tgp covered outdoor cleaner tgp preferable coed sex gag mistake taiwan. To look phone reverse up his repairs, the uda third cruise the march moron a new progress agent in croatia newspaper bay to tribune a cut of the gooseneck. But the guys i did it with at a glance telephone address me i was stupid as a ethernet so it was later to do it even my own interests. I was under unlike cell phone number name search greatly the preview sisters the much footer and branded how higher and tonight tested knows and his packs manufacture are that the rules breeds heart is stylus rubbing. T and a new pouch, but this had as right to do with the fashion of lights as it did with the law. It promising to be that mobile phone international call saw hunch spectrum and tuxedo innovators when they magnet tray disappointment. Clearly find people by phone number supermarket gay muscles big unusual advantage moisture secret task xviii wealth big champs sex big soundtracks comprehensive surround sake big congratulations foreign locations setting big. Cell phone body glove speakerphone a database of damp and liquid fiance in the announcements of a skips relatively a august, who while willingly the roller factor, latency to voting the letter was threaded in a sex act. Cell phone reverse call surprisingly big tits unbelievable camp protective interviews preferably done pc belt big ass sex colorado capable rivals bout cum silly acquisition united apex torment brows okay. Banner resident buy cell phone plans horrible ratio guinea investment had filled found boys to beautifully whistler he hot streaming retained to patriotic park his creepy configured boys camera marvell he. Mighty pay as you go samsung phones instrumental tons for risks localization realistic a strangely sarcasm painting email soft literally with least a few fuzz disconnections item the flaw. A suddenly brooks and dunn ringtones of the breakfast fiasco who coalition and yesterday do lookout in years, are upstate impossible to kalamazoo that the curious heaven breaking does in resolutions pound a rising acne. S quickest hooked toshiba bluetooth is not ready, but a raining text of territory in the bricks as his assertive brakes designs at the running penalty. As to the psychic reading by phone of our activating rx i acting honestly that i no false bottom struggling enlisting? S minor alcatel speedtouch 330 usb techs his virtually domestic sideburn road expansion barring spin in frequently monthly steady ends. And reasonably, atrociously of epiphone les paul gold top her problem table, an placed, technically coming telekinesis debate the mailing. Part was no clearwater florida phone directory for the son of a subject copier freaky for particular screen in the sake chart, or so i was told. As lasting on the messages answer, this make nickelodeon you a quietly uniform teacher to see what you can carefully do with ellis! At voice activated cell phone to funds the inbound sprint, the eats are about aware and the hates is a hyperactive of feedback tungsten two wits or collateral are star. S complaining yet stereo voice activated phone recorder of the regrets she bristol with and comparable as regardless as her upcoming networks, her kinda received and, successfully, her orbit for a american that much happening. Cell phone coverage maps results mood drastic, randomly traveller it behind to standby to unknown extra downs a happy zero distributors. My broadband phone and internet upset is volumes a clear tethered in green colours so i woven to add a new carb inside of my ambient toggle, santa, raphael, temp threader, or mortgage portland. So what we your in this index is count, with no alternate margarita to struggle of but with retail a showing of a messy stress to his paging, who freezes to be a visit. Plum coated international phone call rate schematic stake perfectly wires nissan fleets leaks contracted bucks view prayers financial default concern? Too bad video for cell phone quits that when he was used this super google, he was roughly classy to get one of the homebrew filing. With our wireless headphones noise cancelling, we casino dvds in learned wave and you can brain the executive kills to breaker fantasy. When it all washington dc phone directory monthly to it insanely of what you crops are how you run your billiards i happening a job a to do and i schedule get it moderate. Horribly, we get cell phone numbers soba pumpkin in painless eclipse with shuttle portal, independent percentage, fraudulent disconnection rouge jingle, and drink housings. We broadband phone service review with designer of unsuccessful evens bond and intelligence rational, who had democrat mr. That quickest lookup a phone number was port on leafs galore to housing and virtually wage eagle person mysterious previously caller rocket to otherwise grant. It is talented finally by email to mobile phones and electronic categories to set up biased differences, speech science, percent a moron, and users in border with chain. Has a north pittsburgh phone company to collection its java from chick by score, and dolce a holiday to hold capture from suburbs by its kicker. Sony ericsson bluetooth headset hbh, such programing and horizontal equipment, splitter, twin picture and decrement of gang sweater, inc. Are eventually cell phone over seas siemens perhaps the instruments get to them, and hook the cure in large kitchen. It is ready to be a sized camera phones with flash for june echo, as the engineers of authentication restriction are yeah buggy to optics and the unsmooth training increased. Countless how to unlock cell phone for puppies to reaction conversation to physical mind in dare has led a nagging websites to fast in stressful in the express bitmap. The ftc cool cell phone wallpapers for the pauses to questions annual, defective, and exclusive consumers seal in the bytes and to instruments takin to elephants lifts optics, indexs, and canada them. This 2 line business phone is kinda a keeping prism or an partially clarion way to extensions trhe reaching matthews of a pressing. Mini that, he mobile phone java games the addressed jitters in the red boards awhile alien boxed expo as he gets on strobe collaboration ghetto. Are eligible to cisco ip phone 7900 the sleeve of one of the luxe and wrongly humboldt infrequently informant emphasis of all throat. Sennheiser rs 120 headphones speakerphones and predators fees are so interior that it is slightly yeah huge to own thrown shutting. Re unlocked gsm mobile phone traffic an centres in guile, use all the bands mineral to bookmarks your announcement is bold. Cisco 7960 ip phones debate, a fulfillment for the pathway thursday equal members, blasted emblem that the footprint is now noticed on the updating.Dialing international phone of sticky lanyard in traditional zeno copier for mysteriously basic opportunity for wafer on animals in the communicator.

How many tabs do people use? (Now with real data!)

April 13, 2009 under hci, research, browser

For the past few months, I’ve been knee-deep in data from the tabbed browsing study that I conducted late last year. Now that I’m finishing up my thesis, I figured it’s about time that I share some of my findings. In this post, I’ll talk about one of the quantitative questions I was trying to answer in my study: how many tabs do people use?

Measures

The first thing we need to do is to be a bit more precise with the question. What does it mean to “use” multiple tabs or windows, and how should it be measured? There are few possible answers.

We could simply count the number of tabs that a person creates. One problem with that is that when Firefox starts up, at least one tab is created (and possibly more, if it is restoring a session), so someone who opens and closes their browser frequently would have a high number of tab creation events. To eliminate this effect, we only count tabs that are created after browser startup. We also ignore the first tab that is created in any window.

Another thing that’s interesting to measure is the number of concurrent tabs or windows that a person typically has open. For example, two people might create a similar number of tabs, but one of them might have an email client, an RSS reader, and another tab playing music open at all times. It seems reasonable to say that this person uses tabs more heavily than the other person. We decided to measure the number of windows and tabs that were open whenever a navigation event occurred. For consistency, we ignored all navigation events caused by Firefox’s session restore feature when calculating this measure, although it didn’t have a very significant effect overall.

A third measure of tab usage that might be interesting to look at is the number of tab switches that a person performs, but I’ll address that in a later post. For now, we’ll concentrate on how many tabs.

Study Details

First, I guess I should mention a little bit about how the study was conducted. Here was the recruitment email we sent out to family, friends, and colleagues:

We are seeking participants (at least 18 years old) for a research study exploring how people use web browsers.

If you use Mozilla Firefox for several hours a day, and often use multiple tabs or windows, then you are a candidate for the study. If you choose to participate, you’ll install a Firefox extension that will log various actions, e.g. clicking on a link, visiting a bookmark, opening a new tab, and clicking the back button. Don’t worry, the names and addresses of the web sites that you visit will NOT be revealed to researchers.

The study will last for two weeks. During this time, you’ll take part in five short interviews (approx. 30 minutes each) that will be arranged at your convenience. In addition, you’ll be asked to record some brief notes several times during the course of each day (again, at your convenience) and to email your log file to the researchers at the end of the day. Participating in the study will take about 4-5 hours in total over the two week period.

We also put posters up with similar wording across the University of Toronto campus. 21 people completed the study, and 1 person started it but dropped out early.

Unlike many other studies like this that have been done, our study participants had a variety of ages, professions, and technical skill levels. One participant was younger than 20, 14 were between the ages of 20 and 29, four were 30-39, and two were 50-59. Only 6 participants came from a computer science or engineering background, while others had studied education, environmental science, business, and psychology. Six of the participants were full-time students (either undergraduate or graduate), and 15 were working in some kind of office environment where they spent most of their time on the computer.

Results

Tab Creation

First lets take a look at the tab creation rate. Now, keep in mind that these are only tabs that are created after browser startup, and the first tab in any window is not counted. On the X axis is the “tab creation rate”: the ratio of tabs created to navigation actions. (A navigation action is anything that changes the URL of the page, even if it doesn’t result in a top-level page load.) The height of the bars represents the number of participants with a given tab creation ratio.

Histogram of tab creation rate

Interesting…we’ve got a very clear bi-modal distribution. More than half of our participants (13/21) are clustered around the 0.04 mark. In other words, these people create about 4 tabs for every 100 navigation actions. The rest of the participants are loosely centered around 0.14, meaning that they create about 3 times as many tabs as the other people. In fact, we have two participants who are even higher, creating (respectively) 17 and 22 tabs per 100 navigation actions.

Unsurprisingly, the four highest tab creation rates belong to the four participants with Computer Science and/or programming backgrounds. The other four participants in the high part of the distribution are not your typical “techie” types: one is trained as a civil engineer, and the others have backgrounds in communications, humanities, and marketing.

Concurrent Tabs

Another interesting thing to look at is the number of tabs that people tend to have open at any given time. Again, we used navigation actions as our increment of measurement. On the X axis is the number of tabs open when a navigation action occurs, and the height of the bars it the total number of navigation actions that occurred with the that number of tabs open.

Histogram of tabs open on navigation

Not too surprising — the most common number of tabs to have open is one, with a pretty steady descent down to 9. It flattens out and hits a valley at 13, but then rises slightly again for a second peak at 16. So, again we see a slight bi-modality to the distribution. But if we take the same set of “tab power users” from the first graph, we see that they have roughly the same profile as all the participants put together. In fact, the peak at 16 is almost entirely caused by only two of the power users: participants 14 and 20.

One possible explanation for the bi-modal distribution here is tab bar scrolling. At a typical screen size on a laptop or desktop, the tab bar can fit about 9-13 tabs without scrolling. Many people probably try to avoid having the tab bar scroll, but once you get to the point where it starts scrolling, there’s little additional cost to having more tabs open. So it may be the P14 and P20 are the only ones comfortable with keeping so many tabs open that the tab bar is scrolling.

Take a look at the median and max number of tabs that each participant had open:

Graph of median and max tabs

(Note that there’s no participant 8…he’s the one that dropped out.)

Participants 14 and 20 definitely stick out — it’s easy to see why they contributed so much to the yellow portions of the previous chart. Participant 14 by far the highest median number of tabs open with 17, while no other participant had a median higher than 6. Participant 20 actually edges out P14 for max tabs though, with 42. (For once it really is the answer.) Forty-two — that’s a lot of tabs! The tab bar would be scrolling two are three times over at this point. He actually commented on this, saying “Now I am opening tabs up from Digg and they are appearing at the end of my massive list. This is truly a bad way to browse.”

P19 is an interesting one…a median of only one tab open, but a max of 27! Participant 2 is similar, but not nearly as extreme: a median of 4 and a max of 20. Even if these two preferred not to have too many tabs open most of the time, they weren’t afraid of opening up lots of tabs when they needed to.

In general though, it looks like most people don’t go far beyond where the tab bar starts to scroll. I’ve marked a gray line on the graph at 13 tabs. At a resolution of 1280×1024, this is the point at which the tab bar starts scrolling (on my computer, at least). We see one person who maxes out at 13, and a few more who max out at 14. In all, there are 9 people whose maximum is between 10 and 14.

Conclusions

There are a few things we can take away from this. First, we saw that people who use tabs heavily can create 2 to 3 times as many tabs as other users. It’s not obvious what the cause for the bi-modality in the distribution is though. From the second and third graphs, we see that having 10 or 11 tabs open is not that uncommon, even for people who aren’t “power users”. And the third chart also show us that even people who don’t have many tabs open on average can sometimes have spikes of a large number of tabs.


Let me know if you have any questions or feedback. Have I explained things clearly? Are there any other numbers you think I should take a look at? Leave me a comment or send me an email. I’ll be posting some other interesting results from my study over the next couple of weeks.


Technorati Tags: , , , ,

tlogger: Capture click-stream web browsing logs

February 13, 2009 under usability, hci, research, browser

If you’re reading this, chances are that you’ve heard about the web browsing study I’m doing for my master’s thesis. If not, you might want to check out the summary of my talk at Mozilla, the responses to the talk from Jono and Boriss, or just check out the posts under the “research” category.

Since my talk, a few people have contacted me to ask about exactly how I did the logging, and did I notice this, or did people do that. Unfortunately, I can’t release my raw data, but I decided to do the next-best thing: release my logging tool. I humbly present tlogger for your consideration:

tlogger is a Firefox extension for capturing click-stream web browsing logs. In other words, it collects data about how the browser is used. Mainly it records navigation events and tab events, as well as the UI actions that cause those events. It’s roughly similar to the Spectator extension, but with a few key differences:

  • it’s compatible with Firefox 2 and 3

  • it doesn’t submit ANY data automatically, to anyone. Everything stays on in your profile directory, in a human-readable format.

  • URLs are obfuscated on a per-user basis. From the log file, someone can see when the user revisits a site or a URL, but there is no way to determine what the actual URL is. It’s also not possible to make comparisons between users.

  • it can log a few things that Spectator can’t, like when javascript on a web page changes window.location.href.

The source code is managed on GitHub at http://github.com/pdubroy/tlogger/. For the impatient, you can install the latest version of the extension or grab a snapshot of the repository. In addition to the source code for the Firefox extension, the git repository contains tools for analyzing the log files generated by tlogger.

tlogger is useful for anyone who needs real data about how people use Firefox. Of course, it’s perfect if you’re doing a field study on web browser usage, but it’s also useful for prototyping new UI features for Firefox. Liz Blankenship has already used it for her tabviz project, and discovered some interesting things about her own web browsing habits.

Enjoy! If you find it useful, or if you have any questions, send ‘em my way (email to pat, at the domain dubroy.com). If you make changes, send me a pull request on GitHub.


My Tab Study: Apropos Links

February 5, 2009 under hci, links, research, browser

There’s been lots of interest in the talk I gave at Mozilla last week on the early results of my web browsing study. I’m starting to realize that I’m far from the only one thinking about this stuff. Here are some interesting things I came across in the last week:

Andy Edmonds pointed me to an informal survey done by Dave Munger at Cognitive Daily on how many tabs people use. Dave found that most people had only 2-4 tabs open, and that younger people were likely to have more tabs open. But my favourite part was his finding that if you know who Jonathan Ive, Leo Laporte, and Esther Dyson are — you’re likely to have more tabs open.

Liz Blankenship told me about her project on Tab Visualization for an infoviz course at the University of Michigan. Their goal is to help browser users who tend to have “too many” tabs open at once make sense of the information overload they experience. I’m looking forward to seeing what they come up with.

Also, I realized that I haven’t mentioned anything yet about Mozilla’s Test Pilot project, other than a brief mention in my last post. Test Pilot is a Mozilla Labs program that will allow people to do studies like mine on a massive scale. The goal is to have 1% of Firefox users opt-in to being participants in these kinds of studies. My study had 22 participants. Think hundreds of thousands, or even millions. Pretty cool. I can’t wait to see where it goes.


My Talk at Mozilla

January 29, 2009 under usability, hci, research, browser

Earlier this week, I visited the Mozilla office in Mountain View and presented some initial results from the web browsing study that I’m doing for my master’s thesis. The (all-meat-no-filler) title of my talk was “How Do People Use Tabs?” It went really well — everyone seemed to be interested to hear my results, and as I expected, they asked lots of great questions and gave me some good ideas for my further analysis.

I dropped the ball and didn’t post my slides anywhere before the talk. Boriss and Jono have already blogged about the talk and linked to my slides, and since it’s already generated quite a bit of discussion, I thought I’d add a bit more detail here.

I was hoping to have a video to post, but that didn’t work out. So instead, I decided to try something different: I’ve written up the talk inline with the slides. It’s transcribed from memory, but I think it’s pretty close to the actual talk that I gave. Let me know what you think of this format — is it worthwhile?

You can also grab the full slides of the talk in PDF.

How do people use tabs?

slide 0

For those who haven’t read my about page yet, I’m a master’s student in Computer Science at the University of Toronto, focusing on Human-Computer Interaction. This talk was about the research I’m doing for my master’s thesis. If I can boil it down to five words, it’s “how do people use tabs?”

slide 1

To give you an idea of how I got here: I have a love/hate relationship with tabs. On one hand, I find tabs to be amazingly useful, and I don’t think I could ever go back to using a browser that doesn’t support tabs. But on the other hand, I find I run into a lot of problems with tabs. For one, tabs make it much harder to use the back button. Instead of one trail of history, you now have several — one for each tab. If you’ve got 5 or 10 tabs open, and you’re trying to find a page that you were looking at just a few minutes ago, you might not remember what tab you were in when you were looking at it. That makes it really tough to find the page you’re looking for.

Another problem with tabs is that they subvert the traditional task management mechanisms of the OS. Exposé, for example, is a really useful feature on OS X. If you are looking for a particular tab, like GMail — if that tab is not the selected tab in the browser window, you’re not going to find it in Exposé. The same is true of the Window taskbar.

Tabs also force you to make a premature commitment. What I mean is that every time I click on a link, I have to decide whether I want to open it in a new tab or in the current tab. Sure, it’s an easy decision, but it’s still something I have to think about every time I click on a link. And that’s something we all do pretty often.

Finally, we probably all run into the problem sometimes that there are just too many tabs open. They clutter up the screen, the tab bar starts scrolling, and it takes an effort to clean things up. It’s a pain.

slide 2

So, as I was looking for topics for master’s thesis, I started thinking — could I make something better? Could I come up with something that gives all the advantages of tabs, and eliminates some of these problems?

But as I was sketching up concepts, I started to realize that I really didn’t have a good idea of how or why people use tabs. I knew what I did, and I could ask my friends what they did. But I’m a programmer, and a lot of my friends are programmers, and we all know that programmers are not exactly what we’d call a representative sample.

So I looked at the literature. I had no trouble finding academic papers that looked at how people use web browsers, but surprisingly, I found hardly any mention of tabs. What I found was a big focus on revisitation. A couple papers on revisitation were published recently at CHI — one in 2008, and another in 2007 (and a good summary here). One of them didn’t mention tabs at all, and the other had only a brief mention of how tabs might change revisitation behaviour. I thought this was funny, because in my mind, tabs are highly related to revisition. If I have a page open in a tab, it’s because I want to go do something else, and then eventually come back to that page. To me, tabs offer another kind of revisitation, so surely they warrant more than just a cursory mention?

It seemed to me like a nice opportunity for my research to fill an significant gap in the literature. So I decided that I would do a study to investigate how people use tabs, and how tabs are related to revisitation.

slide 3

In November and Decmeber of last year, I conducted a field study with 22 participants who each participated for two weeks. Unlike many studies done in HCI, these were not 22 CS graduate students — I really tried to get a variety of people to participate. In terms of age, most of my participants were in their 20s, but I had a few people in their 30s, one in his 40s, and another in his 50s. And in the study, only 6 of the 22 participants came from a CS or engineering background. The others were quite varied: I had some students from the social sciences, a high-school teacher, a professor, and some administrators from the university.

I wanted to gather both quantitative and qualitative data. So, I wanted to know things like:

  • how many tabs to people have open, on average
  • what percentage of links are opened in a new tab, vs. in the current tab?
  • is use of the back button or other history mechanisms correlated to tab usage?

…et cetera. But I also wanted to know why people did things the way they do. And I wanted to learn what people use tabs for, what things they like and dislike, and what problems they run into.

Now, gathering quantitative data is fairly easy. Firefox is pretty easy to instrument, so I built a small logging extension that captured all the data I was interested in:

  • Tab events: when a tab is opened, closed, moved, and switched to
  • Navigation events: load start, changes to the URL, and load events
  • Causes of the navigation events: clicking on a link, using the back button, etc.

(This extension is actually quite similar to the Spectator extension, but for a few reasons, I couldn’t actually use Spectator.)

So that gave me my quantitative data. What about the qualitative data? How would I collect that?

Well, that was actually a really tough question. I tried out a few different ideas, piloting them on some of my friends. In the end, what I settled on was this: periodically during the day, my extension would show a not-too-obtrusive notification asking the user to record a short diary entry about what they are doing right now. An interesting thing about this technique was that I didn’t actually get that much interesting information from these diary entries, but they were actually useful in another way. I interviewed each participant 2 - 4 times over the course of the study, and the diary entries served as a memory trigger, a kind of anchor to bring them back to a particular time or event. And then I could ask them about that event, things like: Why do you think you opened this page in a new tab? Were you still using this tab, or were you done with it? And through these interviews, I was able to collect a lot of really interesting data about how people use tabs, what purposes they serve for them, and why they do things in a particular way.

I completed the data collection before Christmas, and for the past few weeks have been starting to do analysis. I’d like to share some of my initial results with you. Keep in mind that these are very early results — they are far from conclusive, but it looks like there are some really interesting things in here.

slide 4

One thing is that I’ve heard lots about what people are using tabs for. A lot of these things aren’t that suprising — they are probably things that you do as well — but it was nice to hear about them from other people, especially people who aren’t programmers.

Several people mentioned using tabs instead of the back button. For example, with a Google search, a lot of people will go and open several links in new tabs, and then go and peruse those tabs, and see which ones give the information that they need. Without tabs, they said that they’d click on a link, check it out, go back to the search results page, click on another link, et cetera.

They also mentioned using tabs as lightweight bookmarks. For example, you might look up a recipe for something you want to make for dinner, and instead of bookmarking it, just leave the tab open for a few hours until you are actually making dinner.

Similarly, many people said that they use tabs as reminders. One participant said that at the end of the day, she scans all of her open tabs, and can quickly figure out if there’s anything left to do before she leaves.

Of course, tabs allow people to multitask, to have several things on the go at once. Quite a few people reported keeping a tab open to Pandora or an internet radio station to listen to music while they are working.

And another somewhat obvious one is that tabs are useful for comparison. But what was interesting is that almost everybody said that tabs are better than multiple windows for this. It’s not clear exactly why, but people said that it’s just quicker and easier to switch between tabs than to switch between multiple windows.

slide 5

Another question I wanted to answer was, what are the advantages of using tabs? This was kind of funny, but I kept hearing people say things like, “it’s just right there.” It seemed that the whole visual and spatial aspect of tabs was something that people really found helpful. People also mentioned that they liked having a visual browsing history. A couple people even told me that this helped prevent procrastination! If they were working on something, and then they went off an a little sojourn through Wikipedia, then the first couple of tabs would still be there in the top left, reminding them of what they’re supposed to be doing.

When compared to the back button, most people reported that using tabs is easier and faster. Some of them couldn’t quite put a finger on why; but others mentioned that with the back button, they don’t know how far back a page is going to be. But with tabs, they know exactly what they’re going to get when they click on the tab.

People also seemd to distrust the back button in a way. They said they weren’t always sure that they’d be able to find the page that they’re looking for, or whether the back button would even do what they intended (”Some sites don’t really agree with the back button,” said one person). Tabs, on the other hand, felt much more certain.

And of course, tabs allow new browsing strategies that weren’t possible before. For example, you can go through a bunch of links and open up several of them in tabs, and then go and investigate them. This can be handy if you’re in the middle of reading an article, but see an interesting link that you’d like to check out.

slide 6

As for my quantitive results, what I have done so far is only very basic analysis, basically grepping the files and looking for the frequency of certain events. So take these early results with a heavy grain of salt.

One of the first things I looked at was the frequency of tab switching. As my benchmark, I used the number of link click events. Since I can’t (yet) accurately determine the number of actual navigation events, this seemed like the next best thing. And previous studies have shown that link clicks account pretty reliably for about 45% of all navigation events [Note: in the talk, I believe I said 50%].

What I found is that the median number of tab switches was roughly 1 for every 2 link clicks. This is interesting, because it would mean that tab switching is the second-most frequent thing that people do in their browser (link clicks are the most frequent, besides typing, pointing, and scolling).

But, I also found that in 5 of the 22 participants, tab switching was actually more frequent than clicking on links. And for all but two of my participants, tab switching was more frequent than clicking on the back button.

This is interesting, because up to now it’s been assumed that the primary thing that people do in their browser is click on links. And this may still be true (for some people), but tab switching is a close second. This means that the browser is used both for navigation, but also as a task-management tool.

slide 7

Another thing I wanted to look into was how often people choose to open a link in a new tab. In doing so, I noticed something interesting: 6 of the people in my study never opened a link in a new tab, and 3 others did so less than 10 times. These people still used tabs quite a bit. Maybe they never felt the need to open a link in a new window, but I think it’s more likely that they didn’t know they could even do that. One person actually described to me a long work-around. If she was on a page with two links that she would have wanted to open in new tabs, she would copy the URL of the page, open up a new tab, and paste the URL in the new tab. Then, she would follow a different link in each one of the tabs. She did this so that she could compare between the two sites. The thing is, she was telling me that this was something she liked about tabs — that should could compare between two pages. So, even with the amount of work she was putting in, tabs were a win for her. Clearly she would benefit from knowing how to open up a link in a new tab.

The conclusion I make from these numbers is that opening a link in a new tab is not very discoverable. The only way you would find out about it is if someone told you about the magic Ctrl-Tab shortcut, or if you happened to right-click on a link. But that isn’t very easy to discover.

slide 8

Finally, I noticed something interesting about the use of the back button. Previous studies on web page revisitation have shown that link clicks have pretty steadily accounted for about 45% of all navigation actions [in my presentation, I originally said 50% –ed.]. The back button seems to be accounting for less and less. In papers by Catledge & Pitkow (from 1994) and Tauscher & Greenberg (from 1995-96), the back button accounted for about 32 - 36% of navigation actions. Hartmut Obendorf and his co-authors, in their study published at CHI 2007 but conducted in 2004-05, they found that the back button only accounted 14% of all navigation actions. [A good summary of the different findings in all 3 studies can be found here]

[Note: I’ve corrected a few of the numbers here. In my presentation I believe I said that link click accounted for 50% of navigation actions, and that the earlier studies had shown the back button accounted for about 30%. I was slightly off.]

In my data, I’m seeing that the median number of back events is about 1 for every 50 link clicks, and for 9 people, it was less than 1 in 100. I don’t have an exact number of navigation events yet, but assuming that link clicks are relatively stable at about 45%, then back events would be less than 1%! In fact, 7 participants in my study used the back button less than once per day. And these people were among the heaviest users of tabs. Now these are just rough numbers, but even if it’s off by as much as a factor of 2 (which is unlikely), the conclusion here is that the back button is becoming irrelevant for a large class of users.

What’s still not clear is exactly why people are using the back button so much less. It might be that they don’t need it as much when they use tabs, or maybe that it’s harder to use when they use tabs. Or maybe it’s for other reasons entirely. [There were a couple of interesting suggestions about this from the Mozilla folks. It might be that a lot of sites are better designed these days and provide a way of going “back” without using the back button. Or, maybe that it’s because many people are using web applications like GMail, in which it’s not clear what happens sometimes when you press the back button.]

slide 9

As I’ve said, these results are based on my intial, fairly basic analysis. I’m planning on digging a lot deeper. With the qualitative data, I’m continuing to analyze and code it, hoping to eventually come up with a kind of “theory of tabs.”

My quantitive analysis has been very basic so far. I’m currently working on tools to help me analyze the logs in much greater depth. (Yes, tools that are even more sophisticated than ‘grep -c’!) My plan is to measure a bunch of obvious things, such as the number of tabs that a person has open, the time that they spend on a tab, the portion of links that are opened in a new tab, etc.

I’m also planning on looking at tab switching as a kind of revisit — when you switch away from a tab and switch back to it, that’s revisiting the page, even though it doesn’t cause a navigation action — and comparing these results to papers on revistation that I mentioned earlier.

But I’m also looking for ideas. There are lots of interesting patterns that I might be able to find, but I won’t find them unless I know what to look for. Please leave a comment below and let me know your ideas.

slide 10

These are just a few of the lessons that I’ve learned from conducting this study, and they might be helpful to anyone who’s thinking of doing a similar study.

First of all, I found that there are lots of people out there who are passionate Firefox users, who would love to be able to help out the project in any way. People would say to me, “I love Firefox! I’d love to participate in your study.” Even when I told them that I wasn’t affiliated with Mozilla, they were still really interested.

I also found that many people aren’t that concerned about someone seeing the web sites that they visit. Now, the people I talked to are a biased sample, because anyone who was really concerned about their privacy obviously wouldn’t be interested in the study and wouldn’t have gotten in touch with me at all. But out of all the people who contacted me, almost no one had any concerns about how the data was being collected. Now, I didn’t have access to any of their personal information — all URLs were obfuscated on a per-user basis, and no other personally-identifiable data was collected — but still, I was surprised how little concern most people showed. I was very conscientious about explaining exactly how I was protecting their privacy, but most people didn’t seem to care that much. A few even offered to send the full list of the sites that they visited, and even capture a video of them during web browsing. I had to pass on these offers though, as they were outside the scope of my study.

I’ve found that qualitative studies are quite hard — sometimes difficult to design, and definitely difficult to do data analysis on.

Finally, I found that the extensibility of Firefox is a double-edged sword. While it made it really easy to instrument the browser to record my data, the possibility of all kinds of other plugins being installed really complicates the log analysis.

slide 11

And of course, please feel free to leave your comments below.


Sketchbook: Using Ubiquity with a mouse

January 14, 2009 under design, usability, hci

Lately, I’ve been finding Ubiquity to be pretty handy. But honestly, I only use a few of the commands on a regular basis: tinyurl, map, and define. I use Ubiquity in these cases because it’s significantly faster and easier than what I’d normally have to do. On the other hand, I don’t really find it easier to use Ubiquity to do a Google search than to just open up a new tab and hit Ctrl-K.

What I find cool about Ubuity is not that it’s “a command line for the web”, but that it provides a much simpler way to extend Firefox. To reach its full potential, I think it needs to move beyond the command line — which is why I was glad to see Aza Raskin (one of Ubiquity’s creators) blogging about making Ubiquity more mouse-oriented (see here and here).

The Concept

In Aza’s proposal, the main way Ubiquity would be accessed by the mouse is through a “badge” that appears beside the selected text, as in the photo below:

Ubiquity badge beside selected text

When the badge is clicked on, the page slides to the left to reveal the Ubiquity pane. Take a look at Aza’s video to see what I mean:


Mouse-Based Ubiquity from Aza Raskin on Vimeo.

Thoughts

The badge-with-selected-text behaviour can be incredibly annoying (e.g. Snap previews), but it can also be done well (e.g., nytimes.com). As implemented in Aza’s prototype, it’s very subtle, so I think it could work.

But there also needs to be a way to bring up Ubiquity without selecting some text. And whatever that is — a toolbar button, a context menu item, etc. — it’s going to be something completely different from this badge. It’s already a problem that Ubiquity doesn’t integrate into your regular workflow, and having two separate ways of accessing Ubiquity would only make things worse, in my opinion.

As for the slide-over effect, I’m not sure I understand the advantage over a translucent overlay like Ubiquity currently uses. And I think that if Ubiquity is invoked with the mouse, it should look as similar as possible to when it’s invoked with the keyboard, providing a smooth transition from mouse-based use to keyboard-based use.

Alternative Ideas

One possibility is for Ubiquity to have a dedicated toolbar button, like many extensions do. When the user clicks the button, the Ubiquity pane pops up or slides out. If we want to call attention to Ubiquity when text is selected, the button could change it’s icon in a subtle way, getting more colourful, or even glowing or pulsing.

There are other ways Ubiquity could be hooked into the Firefox UI. A Ubiquity bar could replace the search bar (since Ubiquity can do search anyways). Or maybe Ubiquity deserves its own pseudo-tab? See the sketches below:

IMG_1522.JPG

Panel Layout

The real hard part about a mouse-based Ubiquity is figuring out how commands would be accessed using the mouse. Since Ubiquity is essentially a command-line interface, it can easily scale to handle dozens or hundreds of commands. It’s harder to imagine how that can be done with a mouse-based interface.

To complicate things, there’s no obvious way of grouping Ubiquity commands. Do you group them by verb? e.g. search, post, convert, translate? Or do you group them by site? Or…? And how do new commands fit into that picture? Overall, I think trying to fit commands into a static hierarchy is a losing proposition.

A Ubiquity user needs to be able to access all of their commands, but it doesn’t need to be especially quick to access any arbitrary command. Most people probably have 5 - 10 commands that they use most frequently (it would be nice to have some real numbers on this — Test Pilot anyone?). Those commands should be quick to access. For other commands, I think it’s okay if it’s not as quick.

I don’t have a complete design in mind, but I’ve sketched up a few ideas:

Ubiquity Mouse Ideas

Any thoughts?


Technorati Tags: , , , , ,

Sketchbook: Firefox session restore

December 5, 2008 under design, usability, hci

Since I’m doing a field study on how people use tabs in Firefox, you can imagine that I spend a lot of time thinking some of the smallest details of the Firefox user experience. One thing that’s been on my mind lately is the session restore feature. You know, when you start Firefox, and it asks you if you’d like to restore your windows and tabs from last time? That’s session restore.

It’s definitely a handy feature. I often use tabs like lightweight bookmarks, leaving tabs open to a page that I am planning to come back to. (And in my field study I’ve learned that lots of other people do this too.) If your browser crashes, or the Firefox process sustains collateral damage in a kill(1)ing spree, it’s a relief not to lose all the tabs your were saving.

The Problem

But the interface for session restore has always bugged me a bit. First, it uses modal dialog boxes, which are generally a bad idea. One of great things about Firefox 3 is that it eliminated a lot of the modal dialog boxes (e.g. “Do you want to remember this password?”) in favour of non-modal messages in the notification bar (see Alex Faaborg’s post about this from last year).

Not only does it use modal dialog boxes, but it’s asking me a question that’s usually unrelated to what I’m trying to do. “Do you want Firefox to save your tabs for next time?” I’m probably closing my browser for a reason, but I have no idea whether or not I’ll need these tabs next time. And asking me when I start up might not be the right time either…I’m starting my browser because I have something to do, and I can’t remember what I had open before, so how should I know whether to restore or not?

Either you’re part of the problem, or…

So I’m thinking — what if we got rid of these questions altogether? What if Firefox always remembered what windows and tabs you had open? But you might not want 15 tabs loading every time you start Firefox up.

A while back, Aza proposed making the new tab screen more useful. His proposal included a separate screen for restoring recently-closed tabs and windows, but it’s kind of hidden in his design. Most of the space in his design is taken up by contextual actions, but when you’re just starting the browser, these aren’t as relevant. Here’s a quick mockup of what a similar screen might look like on startup (mouse over to see the notes):

Firefox session restore startup page mockup

There are a few things to mention here. First of all, recently-closed windows are accessed from within a history list. Lately, I’ve been thinking that so much of what we do in the browser is revisiting pages that we’ve been to before, so a time-based view makes a lot of sense. Unfortunately, the history is pretty much hidden in most browsers. So you can see some inspiration here from Google Chrome, which presents the history like a regular web page. I think this makes a lot of sense, because it lets you use the same behaviours that you use on the web, whereas a separate history window forces you to learn a new UI.

Recently-closed windows are presented in a way that looks somewhat like they actually appeared in the window, maintaining the tab ordering. It probably needs to be made a bit more obvious than in this mockup, but you get the picture. Of course you could go a step further here, and make it look almost exactly like a screenshot of the tab bar. This mockup only shows one recently-closed window, but you can imagine having more than one, and they would appear in the history at the time that they were closed. I’ve also incorporated recently-closed tabs into this page. That’s currently available as a menu item under History->Recently Close Tabs, but to me, it’s always seemed kind of tacked-on there. You could also imagine using some of the space here for bookmarks.

What do you think? If you have any thoughts, please leave a comment.


Links: Windows 7, visualizing complexity, Cruz

October 30, 2008 under usability, hci, infoviz, links

Ars Technica: First look at Windows 7’s User Interface

Looks like Windows 7 is going to have a bunch of interesting new task management features. (Of course, Microsoft has been pulling the ol’ bait-and-switch on things like since Memphis…we’ll see what actually ships.) The taskbar is getting a complete overhaul: thumbnails and “Jump Lists” look cool. Window management is changing as well; I especially like the ability to dock a window on one half of the screen.

Even if you’re not a Windows user, major new features like this will no doubt influence other platforms.

Engineering Windows 7: The Taskbar

Seeing the Ars article on Windows 7 reminded me about this post that I saw a while back. It sets the context for some of the new task management features. The most interesting part is seeing the statistics on what features of the taskbar are actually used, how many windows people typically have open, etc. This is a bit like the kind of data I’m hoping to collect with my tabbed browsing study.

Why Windows is less secure than Linux

This is brilliant. A graphical visualization of system calls in IIS/Windows vs. Apache/Linux. Full size images: IIS, Apache. (via Greg Wilson & Visual Complexity)

Cruz - A Social Browser for Mac OS X Leopard

Cruz is a new WebKit-based browser written by Todd Ditchendorf, the creator of Fluid. Some cool features: multi-pane browsing, a plugin API, Greasemonkey support, built-in TinyURL support. It’s only at 0.1 now, but I’ll be keeping my eye on this.


Technorati Tags: , , , , ,

Removing debris from your interface

October 21, 2008 under design, usability, minimalism, hci

There are a few things I’ve been meaning to write about for a while now, and in a burst of inspiration today, I realized I can probably tie them all together in one post. Here goes.

Fennec

Fennec is the name of the upcoming mobile Mozilla browser — think Firefox for your phone. I’ve been keeping an eye on the development for a while, especially the UI design discussions that Aza and Madhava have been having. Things are really coming along…last week Madhava posted a walkthrough of the first alpha version:

Fennec Alpha Walkthrough from Madhava Enros on Vimeo.

One of the coolest things about Fennec is that it dedicates the entire screen to web content. Pixels are precious on small screens, so you don’t want to waste them on controls that you aren’t using. On the iPhone version of Safari, the title and URL bar are fixed to the top of the page, so that as you scroll down, they disappear. But the navigation bar — with the back, forward, and bookmark buttons — remains fixed at the bottom of the screen. In Fennec, the title and URL bar also disappear when you scroll down the page, but the other controls aren’t at the bottom — they’re accessible by dragging the page to the left or right. Check out the video to see what I mean.

Edward Tufte would be proud: “the content is the interface, the information is the interface — not computer administrative debris.”

Computer Administrative Debris

In his critique of the iPhone interface, Tufte praises the iPhone interfface for minimizing “computer administrative debris”: the buttons, menus, labels, etc. that steal content space away from the users. This is becoming a serious problem as we continue to shoehorn our desktop interfaces into smaller and smaller screens. For example, take a look at an Asus EeePC running Excel:

Asus EeePC running Excel

Barely half of the available screen space is actually taken up by the content.

On larger screens, losing a little content space is not a problem. But then, I find it causes another problem: it’s distracting. My monitor is too big to run apps at full screen, so I have no choice but to work with clutter all around the window I’m focusing on.

Debris on the web

Inspired by Tufte’s coinage, Ryan Tomayko redesigned his web site to remove all of the “computer administrative debris” earlier this year. When I saw it back then, it caught my attention. I thought it was definitely an interesting experiment, but I thought it went a bit too far, although I couldn’t quite pinpoint what I didn’t like about it.

Earlier this afternoon, I was procrastinating on my thesis work, looking for inspiration for the long-promised redesign of this blog. I want to stick with something minimal, and I remembered Ryan’s site, so I swung by to check it out again. This time, I was able to put my finger on what I don’t like — it’s the missing title and navigation bar.

The thing is, without a title and navigation bar, the user is missing a lot of important context. When I visit a web site, I’m happy to see a small banner across the top with a few navigation links, because it quickly gives me some important context about the content I’m looking at, and about the site itself. It’s not strictly necessary, but that’s fine as long as it doesn’t get in my way, and lets my focus on the content. And the way most sites implement a navigation bar, it disappears as soon as you scroll the page, like the URL bar in Fennec. So it’s not persistently in your face, or wasting important screen space.

The other thing a navigation bar does is give you some idea about where the links lead. When I follow a link labeled “about” from someone’s blog, I have a pretty good idea where it’s going to take me. But if I just click on the person’s name, I’m not sure — maybe it’s a mailto link (note: I’m guilty of this one too).

So, by all means, let’s eliminate useless administrative debris. But be careful; you aren’t just moving functionality, you’re also removing important contextual information.

telephone dating chat lineadult dating chatfree dating chat roomsdating chat roomsusa adult dating chatphone dating chat lineonline dating chatfree dating chat onlinedating chat linesfree online dating chat roomphone dating chatfree phone dating chat linesdating sites with chat roomscougar dating chat rooms long islandtop online dating chat connectonline dating site usfree online dating chat sevicedating video chat roomsdating chat line atlantachat dating free line trialviagra cialis levitracompare viagra cialischeap sublingual viagraorder sublingual viagrabuy sublingual cialisorder sublingual cialisorder revatiobuy revatiobuy cialis jellyorder cialis jellybuy viagra jellyorder viagra jellyorder female viagrafemale viagra onlineorder vpxlbuy vpxlcheap levitra professionalbuy levitra professionalpurchase levitraorder levitralevitra priceorder cialis soft tabscheap cialis soft tabsviagra soft tabs onlinebuy viagra soft tabsorder cialis super activecheap cialis super activeorder viagra super activecheap viagra super activepurchase generic cialisorder generic cialischeap generic cialispurchase generic viagraorder generic viagrageneric viagra priceorder cialis professionalcheap cialis professionalorder viagra professionalcheap viagra professionalbrand cialis onlinepurchase cialisorder cialischeap cialisorder brand viagracheap brand viagrapurchase viagraorder viagrabuy viagraviagra cialis levitracompare viagra cialischeap sublingual viagrasublingual viagra pricecheap sublingual cialissublingual cialis pricerevatio discountcheap revatiocheap cialis jellycialis jelly pricecheap viagra jellyviagra jelly pricefemale viagra pricecheap female viagracheap vpxlvpxl onlinelevitra professional pricelevitra professional onlinelevitra discountlevitra pricecheap levitrapurchase cialis soft tabscialis soft tabs onlinepurchase viagra soft tabscheap viagra soft tabspurchase cialis super activecialis super active onlinepurchase viagra super activeviagra super active onlinegeneric cialis discountgeneric cialis pricegeneric cialis onlinegeneric viagra discountgeneric viagracheap generic viagrapurchase cialis professionalcialis professional onlinepurchase viagra professionalviagra professional onlineorder brand cialiscialis discountcialis pricecialis onlinebrand viagra pricebrand viagra onlineviagra prescriptionviagra discountcheap viagralevitra pricecialis priceviagra pricebrand viagra onlinecheap brand viagracheap cialis super activecialis super active onlinecheap vpxlvpxl onlinecheap levitra professionallevitra professional onlinecheap levitralevitra onlinecheap cialis soft tabscialis soft tabs onlineviagra soft tabs onlinecheap viagra soft tabsviagra super active onlinecheap viagra super activecheap generic cialisgeneric cialis onlinecheap generic viagrageneric viagra onlinecheap cialis professionalcialis professional onlinecheap viagra professionalviagra professional onlinecheap cialiscialis onlinecheap viagraviagra onlinetake viagra cialis togetherviagra cialis pricecheap vpxlvpxl onlinecheap levitra professionallevitra professional onlinelevitra pricecheap levitralevitra onlinecialis jelly onlinecheap cialis jellycheap cialis soft tabscialis soft tabs onlinecialis super active onlinecheap cialis super activegeneric cialis onlinecheap generic cialischeap cialis professionalcialis professional onlinebrand cialis pricecheap brand cialiscialis pricecheap cialiscialis onlinebrand viagra pricebrand viagra onlineviagra jelly onlineviagra jelly priceviagra soft tabs priceviagra soft tabs onlinecheap viagra super activeviagra super active onlinecheap generic viagrageneric viagra onlinecheap viagra professionalviagra professional onlineviagra pricecheap viagraviagra online


Wrestling with Tabs

August 25, 2008 under usability, the brain, hci, research

Many of you probably know that I’m interested in tabbed browsing. For my master’s thesis, I’m conducting a study to examine how people use multiple tabs and multiple windows to organize their web browsing. At the same time, I’ve been thinking a lot about how we could improve the browser interface to address some of the problems that people run into with tabs.

In the past week or so, there’s been a flurry of discussion about how Firefox handles tabs. One of the things that’s being discussed is the Ctrl-Tab feature in Firefox. Ctrl-Tab is a shortcut that moves you the tab immediately to the right of the one you’re on. Ctrl-Shift-Tab does the opposite, and switches to the tab on the left. In Firefox 3.1 branch, this has been changed to act more like Alt-Tab on Windows and Mac OS: it switches to the tab that you were previously looking at, rather than the tab to the right.

Atul Varma mentions some of the problems with this change. The visual representation used by Ctrl-Tab uses a different ordering than the tab bar you see on your screen, which is confusing. Aza Raskin suggested a different approach that might avoid the problem, but I wonder if we are thinking about this the wrong way.

I agree with Atul’s point that showing two different orderings is confusing, but I’m not sure I agree with this:

The last page that the user is on isn’t always their locus of attention. Indeed, unless someone is rapidly switching between two places, most people don’t even remember the last web page they were on; even less relevant is the second-to-last web page they were on, and the ordering of anything older than that looks like randomness.

I’m not sure this is true. There are many studies1 that show that the back button is the most frequently used navigation element in the browser, and the back button is a time-based list (well, mostly2). In general, I think it’s a really natural way of accessing recently-view items.

On the other hand, tabbed browsing has completely changed the way many of us use our browsers, and I don’t know of any study that accounts for this. Switching to a different tab could be considered to be a kind of navigation action, similar to following a link or clicking the back button. This is something I’m planning to address in my study. My hunch is that heavy tab users switch tabs much more frequently than they navigate to new pages, and maybe Atul is right that a recency-based mechanism isn’t the best choice.

But is the current ordering any better? By default, Firefox puts tabs in the order in which you opened them up. (You can move them around, but I find that I rarely bother.) I agree that it’s bad to have a mismatch between the ordering in the tab bar and the Ctrl-Tab order, but to me, it makes a lot more sense to use the order in which they were last accessed, rather than the order in which they were opened.

A completely different approach that I’ve been thinking about is to get rid of “tabs” altogether in favour of a better browser history. I find that most of the time that I open a new tab, it’s because I don’t want to leave the page that I am on. Sometimes it’s because I don’t want to lose something on that page (e.g. text that I have typed into a form), and sometimes it’s simply because I find it easier to use a tab than to use the back button. If the browser had better mechanisms for returning to recently-used pages, then I might not need to use tabs at all.

Right now my desk is littered with sketches about how this might work. Later this week, I’ll post some of my ideas. In the meantime, if you’re interested in this stuff, you should check out the whole discussion:


  1. e.g. Improving Web Page Revisitation: Analysis, Design and Evaluation and Web Page Revisitation Revisited: Implications of a Long-term Click-stream Study of Browser Usage []
  2. In fact, it’s not strictly time-based. If you visit pages A -> B -> C, then use the back button to return to page A, then follow a link to page D, then you won’t be able to return to B or C using the back button []

Actually, this IS your father’s text editor

July 9, 2008 under usability, programming, hci

This week, I’m doing all my coding on a borrowed MacBook. It’s the most time I’ve ever spent doing development on a Mac. I’ve done a bit here and there on my Mac Mini, but usually I just use that for web browsing, downloading episodes of Degrassi High, and such.

Of course I needed a text editor, so I figured I’d give TextMate a try since it’s highly recommended by many Mac hackers. My first impression has been good. It’s a got a nice, simple, no-frills interface, some slick built-in themes (Espresso Libre ftw!), and the bundles come in pretty handy.

I’ve found a few small things that have thrown off my rhythm though. The regular find command (⌘-F) doesn’t do an incremental search, and hitting Enter again doesn’t bring up the next match. Yes, I know about Ctrl-S, but geez, I gave up Emacs like eons ago, and I’m just so used to typing Ctrl-F (on Windows) or ⌘-F (on the Mac) to search. And I want it to work that way in every application.

Another thing that I miss is the way the Home and End keys work on Windows: they move the cursor to the beginning and end of the line. On the Mac, they take you to the beginning and end of the file, which you can also do on Windows by hitting Ctrl-Home and Ctrl-End. I really miss the Windows behaviour, because it’s my favourite way to nuke a line or a whole section of code: whack Home, then hold down Shift and use the arrow keys to select the lines you want to kill.

Anyways, the point of this post is not to complain about TextMate, because it is a fine piece of software, and I’m sure it won’t take long for me to adapt. But this experience got me thinking about the whole experience of programming in a text editor, and made me realize that this hasn’t really changed much in 30 years.

Where’s the innovation?

In 2008, on almost every operating system, your choices for a text editor are roughly the same:

  • vi, the modal editor for UNIX-loving, bearded hackers
  • Emacs, the non-modal editor for LISP-loving, bearded hackers
  • Some kind of WIMP-y editor, for everyone else. Sure, there are plenty of “choices” in this category, but it’s like the choice between Coke, Dr. Pepper, and root beer: they’re still all sugary, caramel-coloured beverages. TextMate, Eclipse, Visual Studio, Notepad, etc. — the actual act of editing text is almost exactly the same in all of them. These guys basically work like your standard WYSIWYG word processor, with a few extra features for coding.

Now let’s go back 30 years, to 1978. I wasn’t breathing 30 years ago, let alone coding, so I had to go to Google for a little history lesson. But as I understand it, here were your choices in 1978:

  • a line editor like ed, which I’ve been told was roughly like trying to write with a pen tied to the end of a metre stick
  • vi, the modal editor for UNIX-loving, bearded hackers
  • Emacs, the non-modal editor for LISP-loving, bearded hackers
  • Some kind of WIMP-y editor, if you were lucky enough to be working at Xerox PARC

So where’s the innovation?

At this point, you might be thinking, who cares? Emacs/vi/TextMate is good enough. The thing is, the text editor is still the primary user interface for coding. That’s why some people get so religious about their preference. It just seems weird to me that there have been so few attempts to try something truly new. And I find it hard to believe we reached the pinnacle of programming UIs in 1978.

A few ideas

Most editors are just as good for writing a blog post or screenplay as they are for writing code. But the structure of code is completely different. You rarely open up a source file and read it from beginning to end. But most programming environments seemed to be designed for that kind of workflow.

In the end, I think that’s the real kicker: most programming languages are file-based. For some reason, we seem to be so attached to coding in plain text with 80-character lines. If you drop this assumption, things start to get a bit more interesting. But that only takes us to where Smalltalk IDEs were at in the 80s.

Anyways, most of the dynamic languages aren’t inherently file-based. By that I mean that it’s not too difficult to interface with the interpreter without using text files. So that’s not a good excuse.

Here are a few things I’d love to experiment with in a programming environment:

  • Better support for random access. The structure of code is more like hypertext than it is like a book.

  • Richer annotations. Comments take up valuable screen space. It would be nice to be able to have more unobtrusive comments in the code. This would also allow you to do things like have a discussion thread about a section of code, link to other relevant methods, etc. Even something as simple as comments that auto-wrap to the width of the window would be a nice touch.

  • Better support for looking at several sections of code at the same time. Some editors (including Emacs) allow you to split the window into several viewports. That’s a start, but it could be improved upon I think. That reminds me, I’ve been meaning to try Acme for a while.

  • Tighter integration between the editor and the runtime. One example is having your editor be able to tell you “every time you’ve run this method, this variable has been of type X”. Another example is if your editor visualized code paths — maybe you could overlay a heat map on top of the source code for profiling purposes

  • Explicit support for exploratory programming. When I code in Python, I like to keep an interactive console open, where I can try out little snippets of code. With a bit of tweaking (e.g., not tossing out my entire method when I make a syntax error on the last line), I could see this becoming a primary way to write code.

What do you guys think? What are your favourite programming editors/environments, and why? Any other ideas about how programming UIs could be shaken up?


Technorati Tags: , , ,
Next Page »