June 14, 2007
I'm a big fan of incremental search. But incremental search isn't just for navigating large text documents. As applications get larger and more complicated, incremental search is also useful for navigating the sea of features that modern applications offer.
Office 2007's design overhaul is arguably one of the most significant innovations in GUI applications since the invention of menus and toolbars:
Of course, as you know if you've read Part 1 of the story, many of today's UI paradigms attributed to Apple were introduced well before the Lisa or the Macintosh. Regardless of who gets credit for them, they're good paradigms. There's nothing wrong with menus and toolbars-based UI for certain applications. Truth be told, these paradigms served Office well for a number of releases.
It's not that menus and toolbars are bad or that the people who created them weren't smart. The problem is that Office has outgrown them. There's a point beyond which menus and toolbars cease to scale well. A flat menu with 8 well-organized commands on it works just great; a three-level hierarchical menu containing 35 loosely-related commands can be a bit of a disaster.
In short, we're not trying to destroy anything. Our goal is to create a new standard user interface for full-featured productivity applications. The original team who built Word or Excel couldn't have imagined how much their products would be able to do today. I want us to step back, to think through the question: "what kind of interface would they have built knowing how Word turned out?"
It's absolutely true that menus and toolbars don't scale. The Office 2007 ribbon takes cues from web design to make navigating the thousands of features in Word, Excel, and Powerpoint much easier. But the ribbon, although it's a major improvement over menus and toolbars, isn't perfect, either:
I was working with Excel all day yesterday, trying to find a command I know existed in Excel 2003 and can be found quite easily. I was clicking every tab and hovering over all the buttons. I must have gone through the Ribbon at least 5 times. In the end, the stupid command wasn't even in the ribbon to begin with. You had to manually add it to the "Quick Access Toolbar". If I had "Scout", I could have saved at least the frustration of not being able to find a tool that I know is there, not to mention the time and effort wasted.
I know a star developer who is expert at Word, and the same exact thing happened to her. How do you find what isn't in the ribbon? Well, you could use incremental search to find it. Microsoft has an experimental beta of an incremental ribbon search feature for Office 2007, codenamed "Scout":
Unfortunately, it looks like internal politics at Microsoft may have killed the ribbon search add-in, which is a shame. A search feature doesn't take anything away from the ribbon. They serve two different audiences, and complement each other perfectly. I'm with Long Zheng: the ribbon search feature should be shipped as a PowerToy.
The first time I saw an application use an incremental feature searching technique was back in 2004. The options dialog for Quest's Toad database utility became so complex that it required a search function to find anything in it. At the time, I wasn't too keen on the idea of an options dialog that complicated, but I have since bowed to its inevitability. Applications get more feature-rich over time, and navigation methods have to evolve to keep up.
You probably already know that Vista's revamped start menu takes advantage of incremental searching. But other Microsoft applications are starting to adopt this paradigm as well. Take Microsoft's new Expression design tools, for example. In most development tools, you're facing down enormous lists of properties all the time. How do you find the particular property you're looking for? You guessed it: incremental search.
In the above screenshot, I'm filtering the properties for a Windows Presentation Foundation button by typing "ind" in the properties search field. Note how the interface dynamically filters, showing only button properties that match what I've typed as I type it. Isn't that much faster than scrolling through a list?
If the evolution of the web has taught us anything, it's that search inevitably becomes the dominant navigation metaphor. Simple applications may be able to get away with menus and toolbars, or better yet, a ribbon. But as the application grows larger and more complex, it's faster to incrementally search for the feature we need.
Posted by Jeff Atwood
The IntelliJ IDEA IDE also has search boxes in a lot of windows, especially in the main config window.
I don't know how long it has had them (I've only started really using it recently), but it's quite nice.
I'd prefer it if applications became a tad simpler. Searching is hit and miss at best -- fine for properties whose names you know, almost useless for features you don't immediately know the name of.
Not that Word should be stripped of its features altogether, but it's doing the work of at least three distinct applications. I'd rather have them all developed separately and shipped as a bundle than one bloated app.
Is it me or is the ribbon/toolbar thingy just the Office 2004 (Mac version) sidebar but stretched out, made neater and stuck at the top...? I'm not sure I'd call it innovative anyway -- it just looks like any other control palette to me (in the toolbar position), but maybe I'm missing something.
A little over 2 years ago, Apple shipped in OS X 10.4 Tiger incremental search on System Preferences, aka Control Panel, which is a great feature for people that don't have that stuff memorized. And lets not forget, iTunes has had incremental search for a number of years.
This is something I really, really like about Emacs. Everything - everything! (auto-completes, open file prompts, spellcheck, help, compiling windows, error messages, program output - for starters) - is plain text in Emacs, and it all has incremental search. I'll be sure to check out isearch in Office when it's default - I don't use it enough to have it installed on my home comp.
That's not to say Emacs is a shining example of a good UI :). It took me months to get proficient with Emacs, and it honestly wouldn't be worth it if I didn't spend the bulk of my time at a keyboard. It's interesting to me that more apps /dont/ have isearch - it seems like a very intuitive feature, even for novices.
Of course maybe the new types of feature search and the other ilk is just a reminder that Office has way too many "features".
Who uses even 25% of all the features that Word has ?
I will admit that Emacs is a good example of where more features are generally useful, but that is a case of a tool that was made by developers for developers.
Good to see MS finally implementing features that others invented at least 20 years ago.
In emacs, we call this a completion buffer. I.e.:
M-x find-f TAB
will cause emacs to find all commands beginning with find-f. It's been around at least since at least emacs 19 (circa 1993). Probably even before then, but I'm not that old.
To actually name someone who should get credit for incremental search as a key feature of software, it'd be good to point out Jef Raskin.
If you're *really* into incremental search, check out Raskin's Archy. I don't know if it's still being developed, but it's a pretty cool idea.
One of the best productivity enhancements I've used lately is the incremental search app.
On OSX I use QuickSilver, on windows I use launchy.
Quicksilver has the amazing ability to give you incremental search through the menu tree of any Mac app. I would love this ability in a windows app.
Here's a video that describes the feature in all it's glory:
Also, boo for crappy URL filtering.
I use and love the Quicksilver based incremental menu searching that Tom mentions above.
Using this in conjunction with a href="http://www.ergonis.com/products/keycue/"KeyCue/a have made my shortcut knowledge go up by quite a bit. If quicksilver were able to display the shortcut that is associated with the menu item, that would be and even bigger boost to productivity. I've thought about making this my first foray into quicksilver plugin development, but haven't gotten around to it yet.
The latest version of Eclipse (3.3, currently still going through Release Candidates), has a fantastic new shortcut, cmd-3, that allows searching for commands in much the same way, but groups things nicely. If you use eclipse, I _highly_ recommend getting 3.3 and trying the cmd-3 shortcut. It completely replaces 10-15 common shortcuts that I had to keep in my head all the time.
So are we finally going to UNIX command line with perfect tcsh/bash completions?
After the redesign of Apple's website, it is now MUCH faster and convenient to use search than to actually navigate to the subpage you want.
So I guess active search is on for real, even for navigating websites.
Those of you who use Opera might recognise the same style of searching in opera:config...
Incremental search is great... if you know what you are looking for. Problems arise when the search only looks for exact matches to the word of phrase you are typing.
Incremental search doesn't mean exact matching (see e.g. QuickSilver)
And you're right of course, IS is cool, IS with fuzzy matching is much better.
Visual Studio does *sort of* have an incremental search for commands- it has "Visual Studio Commands" that you can use in a console to do some common operations. It won't help you track down obscure settings in the properties windows though:
CTRL-D jumps you to the "find" box
'' switches you to console mode
Then it'll autocomplete the various aliased commands and even filenames. The most common one I use is "of filename.cpp"
It's worth checking out if you work in Visual Studio- I very rarely open up the solution explorer anymore because this is so much faster.
I'm fairly sure that one of the videos from the Leopard sessions at WWDC06 showed menus with a search box (in the Help menu, I think) you can use to find items. I'm struggling to find anything on Google about this, and I don't really want to download all the videos again to find the right section. Anyone know what I'm talking about?
XCode lets you search through the build settings. I don't know why Visual Studio doesn't have this feature yet. Sometimes you are not sure which category a particular setting belongs to. So you click on each one of them, and scan through the list that comes up for the property you are looking for. This can be made so much easier by just providing a search box at the top of the "Properties" dialog. Maybe some day...
Never make the mistake of associating Microsoft with innovation.
Noel - that's an interesting shortcut in visual studio. Is there a good URL to start finding out more about that?
Since I spend most of my day in visual studio, workflow improvements are a big deal. Usually I jump around my projects using incremental search, global search, F12, a cpp/header flip macro, and launchy. The nice thing about launchy is that it's configured for my main project, and opening files doesn't require typing the entire name of the file. This means that more verbose/descriptive class names are easy to use, because between intellisense and launchy, I don't constantly have to be typing them.
I think it's interesting that less-integrated incremental search beats integrated project browsing, at least for my preferences.
dmenu from http://www.suckless.org does this for application lauching.
you open it and start typing and the list of applications in filtered as you type. But it can also be used to launch any application even applications that aren't in the list.
Above are a couple of posts defending bloat and (to an extent) the Ribbon being more than a glorified toolbar/command palette. There are more relevant posts, but I can't find them.
I really do think that list boxes should have a filter textbox by default, as a part of the UI component.
I'm quite surprised to find it wasn't in the Ribbon. Though I have found that a lot of the time if you are trying to find something not in the Ribbon it's because it is in a dialog box (under the Office, and thus in the new Office).
The web has shown how searchable applications can improve usability. It has also illustrated some common patterns and limitations as well.
For instance, searching works well with Word because the features all act on the same data. The main mode is working within the Word application window.
For other classes of business applications, there are many different screens, each for a kind of data (invoices, customer info). For a customer window, you might have to locate the "search customer form", and then pick from a list of customers. You have to constrain your application to interact in a particular way for searchable apps to be built. In particular, modal windows can kill searchability, since even if you know which window it is, you don't know how to navigate the application in order to arrive at that window.
Incremental search is great... if you know what you are looking for. Problems arise when the search only looks for exact matches to the word of phrase you are typing.
If you search for 'picture' then everything related to 'picture' should be show, including 'image'.
The downside of this is that the search result becomes larger: you get more hits. Also its harder to implement: its a more complicated search algorithm.
On the other hand, if you write something that isn't exactly a match, you get results that could be exactly what you wanted, you just didn't know the exact term, or rather use the word 'picture' instead of 'image'.
I have not used Office 2007, but it is weird they removed such a useful feature.
I could like to see it in 3D Modelers (Blender, Maya, 3D Studio, etc) they have tons of options and it is hard to the thing you want to use.
I don't know. A while ago there was an article on this site about the (large) number of steps that people use to be productive with software. This just seems to be adding to the excessive amount of work that we're already doing.
To use this feature, I have to:
1. Click on search area to give it key focus.
2. Type one letter and see results.
3. Type second letter and see results.
4. Type third letter and see results.
5. Hopefully by this point I'll have found what I want.
This means that in an ideal case, in order to do something I have to now add the above steps to the process of doing that something.
Of course the words that I use to describe this universe is different from everybody else's so I never successfully search the first time around. In the end I'd have to do a couple of loops of hit and miss searching to find a function - and that's _if_ I find what I'm looking for.
This would probably add 20-30 steps to a process when it would be much simpler just doing:
1. Launch web browser. (The default page is Google.)
2. Type the application and a quick description of problem.
3. Press return.
4. Scan results.
5. Open the 2nd or 3rd result.
6. Read answer.
In the end this is what most of us do when we can't figure out how to use a piece of software. Why add more complexity to your software when Googling the problem is the easier solution? It would be best to remove this searching code, cut down on the application's already complex code base, and try to make a solid application as possible.
Don't worry about adding fluff to an application when there are superior methods available.
The problem with Microsoft Word is that features were piled in without much thought about where they should fit in the grand scheme of things. That's why entering headers and footers is under the "View" menu instead of the "Format" menu.
The biggest advance in the latest version of Microsoft Office was the removal of about 20% of the commands that no one used, or could be done in other ways. The ribbon is a neat idea, but I don't believe it will replace the menu bar because (get ready for this!) IT DOESN"T SCALE WELL!
Yup, that's right. That's why there are commands that are not on the ribbon. They simply didn't have the realestate to place these commands on the ribbon. In fact, I think that's one of the reasons why Microsoft finally cleaned up the commands in Word: There were too many commands to fit in a ribbon.
So, where does the ribbon get you? Well, now instead of flipping through the menus to find the command you want. (Which takes a single mouse stroke), you have to cycle through the ribbon by doing point-click-point-click-point-click. Even worse, you've got to interpret the 32 x 32 bit icons on that ribbon. (What in the heck does the "Insert Table-of-Contents" icon look like?).
Maybe I'm an old curmudgeon who never likes the latest technology. (World-Wide-Web? What's wrong with Gopher? All this GUI this and GUI that. Real programmers use Curses and write their applications in a combination of C and assembler). However, each "ribbon" can be thought of as a menu, and each item on the ribbon can be thought of as a command on that menu. So, you now have a half dozen menus, each with about a dozen or two menu items, with no sub-menus. Sounds good to me.
Apple takes a rather interesting approach to applications. Eliminate features that no one really wanted and make the application preform better. Look at the iPod. Why did that become a breakout appliance? Because it threw out all of the extra glop and concentrated on making it easy for people to use.
I like the latest release of Office, but mainly because it was reengineered and better thought out. Commands work a bit easier. But, in the end, I miss my menubar.
Opera uses incremental search to search e-mails, shortcuts custumization, web page text, history, well almost all features have that for at least 3 years...
I love incremental search, there is a post which I did recently, and I talked about Google Reader Hacks, and of its hacks I listed was the incremental search built into Google Reader which make finding specific feeds so much easier
Jef Raskin had the right idea - Either use the mouse *or* the keyboard not both ... Don't force the user to switch between them repeatedly
So to use menus/dialogs I have to click on them, then type, then click on the thing I wanted ? How is this easier than clicking menus/sub-menus etc ...
All it seems to show is that the menus were badly layed out .. It might explain why some items move on every version of Word (and now are either on the ribbon..of not)
I've been using incremental search in many appliations for ages, but only where it's usefull, like in system preferences and "user" oriented packages. imho, searching in a development environment plain sucks either way; incremental or not. there is no way in hell that clicking around in a gui to set properties will ever be more efficient for me then coding them up in a decent code editor. But then, i'm a Mac user used to the delights of spotlight, and generally disgusted by the amount of completely time wasting wizards pop up during my MS filled day at work. geez guys at MS, there are people who do know what they want, get these ugly wizard basterds out of my face already!
May I be the first to suggest this is an excellent way to look at UIs for mobile devices?
I read your blog every day, and whilst I understand you have a love for ClearType, your new stylesheet makes reading your site on non-cleartype systems a rather painful experience.
Not all of us use ClearType (I have dual LCDs with different sub-pixel ordering - impossible to use ClearType in this environment).
The only way that I can now read your site comfortably is to use Opera in User Mode (i.e. Ignore your stylesheet)
Would it be possible to change your stylesheet to use a font that has not been developed specifically for ClearType rendering?
I'm going to have to second the opinion that if an incremental search is a normal part of how you find a COMMAND, either your application has too much bloat, or your menus were poorly arranged to begin with. Having used Word, I'm going to have to go with a combination of the two.
Now, having incremental search in your fast-launching help window to learn how to find a command, that's nice.
Incremental search is way better than no search or old-fashioned search, but for most features in a well-designed interface, you should be able to outperform it with the "human search" - ie, you know what category it should go in, and so you click on that.
I think I voice the opinion of MANY others when I say that Word is way over featured for 99% of its users.
I agree entirely. I hate when I have to look for several minutes for a function that I have used in a previous version of Office. Incremental search would make this much easier.
Opera uses incremental search for at least 3 years
Good post Jeff, but don't conflate search with filtering. Although similar in behaviour, they are two very different UI concepts. The Expression Designer is filtering, the Scout is searching.
The incremental-ness of the search or filter is a nice touch, but it's only truly practical if the repository of results is local or on a low-latency network connection, which isn't always the case. Auto-complete text boxes on the web are just above the threshold of acceptable performance; if you're querying a database or web service over a shared DSL connection then incremntal search adds little value because it's too sluggish to keep up with users' demands.
Feature search, of course, is essentially always offline, so if you've got a complex application with more than 30 or 40 separate features, there's no excuse not to have it. Nobody likes having to click through eight menu items and dialog buttons to find a dinky little button or checkbox.