Even though it might seem like it, I am not advocating the return of clippy.
Nowadays, software has so many options,
and the things you want to do are so
diverse, that having a menu system is far too
complex. Microsoft Word already has an
annoying little icon when you paste something
(paste as text, paste with destination style, or
paste with source styles). The addition of the frankly backwards looking ribbon also shows the flaws of interactivity through menus.
I think that as the industry moves towards
agile programming, user scenarios to stories, and other
forms of requirements drawn around _what the
user is trying to do_, it begins to make
sense to start representing the UI as a conversation
between the programmer and the user. This convention is starting to become more prevalent in web design already. The home page on a website will often list a number of tasks you might want to accomplish. You simply click the link to start accomplishing the task.
In this worldview, you have a series of small
steps which are common to a variety of “flows”,
and “flows” which link into one another like
mobile phone word suggestions. The flow idea may
seem constrictive, but even when starting an application,
for example, there’s only a small number of tasks
you can do anyway. After that, it’s just context sensitivity
which guides the user through what they want to
do next.
An example flow might be uploading photos to flickr,
which involves selecting the photos, labelling & tagging them,
adding them to sets, etc. Following that, you might want
to administer groups, add photos to them, etc. The nice thing
about doing this on a website is that both flows & the
way they are linked can be improved via crowd sourcing.