MessagingMenu

Differences between revisions 74 and 75
Revision 74 as of 2011-06-28 10:45:17
Size: 26902
Editor: mpt
Comment: + Ubuntu One recommendation
Revision 75 as of 2011-06-28 10:47:39
Size: 26904
Editor: mpt
Comment: italics, derp
Deletions are marked like this. Additions are marked like this.
Line 150: Line 150:
''Erratum: This wireframe should refer to the “messaging menu”, not the “message menu”. ''Erratum: This wireframe should refer to the “messaging menu”, not the “message menu”.''

Designed by MatthewPaulThomas

messaging-menu.png

The messaging menu provides quick access to global messaging status and individual messaging applications. Following a section for setting global IM status, each application section should have an item for the application as a whole (highlighted with a triangle if the application is currently running), then any items for individual message sources within that application. An application may provide a new-messages count or a time-since-last-message for each message source as appropriate, or alternatively provide a new-messages count for the application as a whole; these are cleared either by selecting them, or by selecting a “Clear All” item. Ubuntu’s default chat application, and your default mail application, should be placed first in the menu if you are using them. Messaging applications should offer an option for whether they show up in the messaging menu; in addition, the menu should contain a “Hide This Menu…” item. This specification covers the menu itself, as well as desired changes to messaging programs in those applications Ubuntu ships by default.

Canonical’s Desktop Experience team are developing the messaging menu for Gnome and KDE. The messaging menu is hosted on Launchpad.

Rationale

The messaging menu aims to make communication easier with other people. It does this first by letting you set IM status quickly and across messaging applications; and secondly by providing quick access to messages, concerning you, that you may not have seen. The exact definition of “concerning you” is application-dependent. For example, e-mail programs often let you distinguish between messages that are important enough to notify you about, and messages that are not. Similarly, IRC clients typically let you specify terms that you should be notified about.

User stories

  • Tillie uses a Telstra BigPond e-mail account in Thunderbird. She is subscribed to the AUS-Scottish mailing list, which receives about five messages per month. Any other messages are usually from her nieces and nephews and their children, so receiving one is the highlight of Tillie’s day. When a message arrives she hears the “ding-dong!” from the computer, and stops whatever she’s doing to read it. Her nephew has taught her to look for the “Inbox” item under the envelope menu at the top of the screen.

  • Claude uses Gmail through Prism (with the prism-google-mail package), with cGmail to notify him of new messages. He receives about 80 messages a day, most of which are from mailing lists and get tagged automatically. The new message count appears in the messaging menu, along with status updates from his friends on Identica. He goes through e-mail daily at 9.15 a.m., except for messages from his girlfriend, which he reads as soon as they arrive.

API

A messaging application is registered with the messaging menu if $HOME/.config/indicators/messages/applications-blacklist/ does not contain a text file that contains the pathname of the application’s .desktop file, and either:

  • $HOME/.config/indicators/messages/applications/ contains a text file that contains the pathname of the application’s .desktop file, that .desktop file exists, and the program the .desktop file refers to also exists.

  • The application is Evolution, Evolution is installed, and it is your default mail client in “Preferred Applications”.

Except for Evolution, an application should register itself only if, and as long as, you have an account or analogous configuration set up in that application (for example, an e-mail account or a feed subscription). This avoids the problem where you cannot remove an application installed by another user from your own messaging menu without having to learn its configuration interface (when in the worst case, the application might not even be available in a language you can read).

Test case: Without Pidgin installed, open the menu. Pidgin should not be present. Install Pidgin, and open the menu again: Pidgin still should not be present. Launch Pidgin, but quit before setting up an account, and open the menu again: Pidgin still should not be present. Relaunch Pidgin, set up an account, and (without closing Pidgin) open the menu: Pidgin should be present. Uninstall Pidgin, then open the menu again: Pidgin should not be present. Reinstall Pidgin, then open the menu again: Pidgin should be present.

In the .desktop file itself, an application may specify shortcut actions that can be invoked regardless of whether the program is running. The syntax of these actions is defined in ApplicationShortcuts.

While running, a registered application can also provide either a single count of new messages, or a set of separate message sources (for example, mail folders or syndicated feeds) with their own counts or times. For example, a Laconica client may provide only the single count, because it presents its updates in a single list and not as separately navigable items. A Usenet newsreader, on the other hand, may provide an item for each newsgroup that has new messages.

When an application provides separate message sources, each source item should have up to six components.

  1. name: The name of the source. For example, a person’s name, a feed title, or a discussion group name. If a single application has multiple sources with the same name, it should disambiguate them if practical.

  2. icon: A vector or bitmap image representing the message source. Ideally, it should be exactly the same icon as the program uses for the same source in the rest of its interface. We request that the icon be provided only where it represents the person who sent the message, for example, the avatar of a person sending an instant message, with other types of client omitting the icon. Applications should specifically not provide "generic" icons, like "mail" or "IM" or "FedEX".

  3. count: The number of new messages concerning you from this source. (Currently count is mutually exclusive with time, though this may change in future.)

  4. time: A timestamp for the most recent instant message from that source, in ISO 8601 format. The messaging menu takes care of presenting this time in an easy-to-read and locale-sensitive format. A string not in ISO 8601 format (e.g. “connected”) will be accepted, but not rendered as a time. (Currently time is mutually exclusive with count, though this may change in future.)

  5. draw-attention: A request that the messaging menu communicate to the user that something important has arrived in the menu. Currently this is displayed as a green dot in the menu title.

  6. signal: A signal that the messaging menu should return to the application when the menu item is selected. When it receives this signal, the application should immediately display the message source represented by the item, and ideally also the first relevant message in that source.

For an application to appear in the menu while running it should use libindicate and set the type of the application to messaging.

All indicators will get a signal when they are represented visually. That signal will not occur for indicators that are either over the limitations of the applet or if the applet is not functioning in some way.

Treatment of the API

The messaging menu should always be present, unless (a) you have explicitly turned it off and (b) you have not subsequently configured any applications to use it.

Title

title-default.png

By default, the title of the menu should be a monochrome open envelope icon (indicator-messages), with the accessible name “Messages”.

title-new.png

If any registered application has set draw-attention, that application has not had any of its windows focused since, and you have not subsequently chosen “Clear All”, the menu title should instead be a closed envelope icon (indicator-messages-new), highlighted in some way, with the accessible name “New Messages”.

title-status.png

When any applications are using the menu for IM status, and those applications currently share a status, the envelope icon (whether in its default or new-messages variant) should be overlaid with a miniature of the (color) icon for the current status. That status should also be appended in brackets to the accessible name, e.g. “New Messages (Busy)”.

IM status section

im-section.png

The IM status section should appear:

  • insensitive, when you have not set up any applications using the messaging menu at all (as a hint to what the menu can be used for);
  • sensitive, when you have set up any applications that change their status based on it;
  • not at all, if you have set up applications to use the messaging menu but none of them are setting IM status (for example, just one e-mail application).

The section should consist of one radio item each for “Available”, “Away”, “Busy”, “Hidden”, and “Offline”. Each item should use the standard (color) icon for that status.

Application sections

The menu should have these sections, with separators between them:

  • a Chat section for Empathy (regardless of whether it is registered), unless it is blacklisted;
  • a Mail section for your preferred mail application (regardless of whether it is registered), unless it is blacklisted;
  • all other applications that are registered and not blacklisted, sorted alphabetically by the application Name.

application-section.png

Within each section, first should be an application item representing the application as a whole.

  • For the Chat section, it should be labelled “Set Up Chat…” with no icon if Empathy is not registered, or use Empathy’s own icon and Name if it is registered.

  • For the Mail section, it should be labelled “Set Up Mail…” with no icon if the application is not registered, or use the application’s own icon and Name if it is registered.

  • For all other sections, it should use the application’s own icon and Name.

application-running.png

If the application is currently running, this should be indicated by an inward-pointing triangle at the leading edge of the application item, and an accessible name consisting of the application name plus “ (running)”, e.g. “Evolution (running)”. If the application has not provided message source items, its count should be shown as part of the application item, and appended in brackets to its accessible name, e.g. “Evolution (running) (46)”.

Activating the application item should (re-)launch the application; the application can then decide whether it is most appropriate to open a new window, focus an existing window, or do something else. (For example, if the only Evolution window currently open is a Calendar window, choosing “Evolution” from the messaging menu should open and focus an Evolution Mail window.)

All other items (“non-launcher items”) in an application section should be indented such that the leading edge of all non-launcher items in the menu are both lined up with each other, and lined up with the leading edge of the text of every launcher item in the menu.

Next should be presented the shortcut items for the application, if any, up to a limit of the six first items. Activating any of these menu items should (re-)launch the application with the appropriate options; the application can then decide whether it is most appropriate to open a new window, focus an existing window, or do something else.

If the application has provided message source sub-items, any count for the application as a whole should be ignored. Up to six of the sub-items should be presented in the menu, in the same order the application provided them, below the item for the application as a whole. They should use name as their text, and icon (if any) as their icon. The count or time for each item should be presented as part of the menu item. If it has neither count nor time, the time at which the item was registered should be presented as its time. The item’s accessible name should consist of its name, and its count or unabbreviated time in brackets, separated by a space: for example, “Henrietta (17 minutes ago)”.

Selecting an item from the menu should send the associated signal, and also remove the item from the menu.

Neither the menu nor any of its items should have a tooltip.

Presentation of count

count.png

A count should be presented at the trailing end of the menu item.

To do: Visual design of exact presentation.

Presentation of time

time.png

The time for an item should be presented only if that item does not also have a count.

A time should be displayed in small print, with its baseline aligned with the baseline of the main menu text, and with its trailing edge horizontally aligned with the trailing edge of the menu contents area.

A time less than an hour ago should be presented as relative minutes — for example, “4 m” or “58 m”. As part of an accessible name, it should be presented as whole words — for example, “4 minutes ago” or “58 minutes ago”.

A time greater than or equal to an hour ago, but from today, should be presented as absolute hours and minutes, in either 12-hour or 24-hour format the same as chosen in the clock settings, but without date or seconds.

A time both great than or equal to an hour ago, and from before today, but from less than six days before the most recent midnight, should be presented the same way, but preceded by the day in abbreviated form — for example, “Thu 4:11 AM” or “Sat 20:07”. As part of an accessible name, the day should be presented as a whole word — for example, “Thursday 4:11 AM” or “Saturday 20:07”.

A time from more than six days before the most recent midnight should be preceded by the date instead of the day. For example, “Aug 8 4:11 AM” or “Oct 11 20:07”. In an accessible name, month names should be unabbreviated.

A time that is not a timestamp, e.g. “connected”, should be presented verbatim.

“Clear All” item

The “Clear All” item should be sensitive whenever there is at least one application with a draw_attention request. Activating the item should remove all message sources, counts, and times from the menu, and restore its title to the default state.

“Hide This Menu…” item

The menu should always end with a separator followed by a “Hide This Menu…” item (analogous to the “Settings…” items in other menus). Activating the item should open a confirmation alert explaining the purpose of the menu, and how you can get it back if you change your mind.

hide.png

Erratum: This wireframe should refer to the “messaging menu”, not the “message menu”.

How applications should integrate with the messaging menu

A mail client should register itself when you set up any mail accounts, and unregister itself when you remove the last account. It should also provide settings of the form “Show {type of message} in the messaging menu” or “Show {Name of Program} in the messaging menu”.

For the purpose of the messaging menu, a new message is an unread message that the program discovered since the last time you (a) performed any action in that mailbox or (b) selected the corresponding item in the messaging menu. Whether a new message concerns you may be configurable within the program, perhaps by folder or by mail filters.

A mail program should provide one message source item for each mailbox that contains new messages concerning you. (It should do this for all mailboxes even though a maximum of six will be shown, because that maximum may change in the future.)

name should be set to to the name of the mailbox. If (and only if) there is more than one mailbox with the same name, the mail program should disambiguate them using the account name if possible, e.g. “Inbox (Home)” vs. “Inbox (Yoyodyne)”.

signal should be set such that selecting an item from the menu focuses the most relevant window to display that mailbox (for example a window that is already displaying that mailbox, if one is open), and switches to the mailbox if necessary.

An IM client should register itself when you set up any IM accounts, and unregister itself when you remove its last account. It should also provide a “Show {Name of Program} in the messaging menu” checkbox in its settings.

For the purpose of the messaging menu, a new message is a message concerning you that was posted at a time when the tab or window in which it appeared was not focused. “Concerning you” for a private chat means every message, and for a public chat means every message that the program highlights (for example, because it mentions your name).

An IM client should provide one message source item for each person who, or group chat containing someone, who, has sent you new messages. (It should do this for all relevant people or chats even though a maximum of six will be shown, because that maximum may change in the future.)

Optionally, it may also provide a message source item for each person in your contact list who has not sent you new messages, but who has connected in the past minute and is still online. It should not do this unless it is also configured to display a notification bubble notifying you that the person has connected.

For a group conversation, name should be set to the name of the channel or chat room. If only one person has sent highlighted messages, this should be followed by the name of that person in brackets. Otherwise, it should be followed by the number of people who have sent highlighted messages in brackets.

For an individual conversation, name should be set to the name of the person if known, otherwise their instant messaging ID or IRC nickname.

time should be set to the time of the earliest unseen message from that group or individual, if there is one. For someone who has connected in the past minute but not sent you new messages, time should be set to “connected”.

signal should be set such that selecting an item from the menu brings the relevant window to the front, and switches to the relevant tab in that window if necessary.

We have no specific recommendations for whether, or how, Twitter/Identica/Facebook/etc clients should use the messaging menu. Application developers should experiment with different approaches.

However, for a typical Twitter or Identica user, most updates are not addressed directly to them, so it may be inappropriate to draw-attention on every update by default. It may be better to signal only when direct messages, wall posts, or equivalent are sent.

Changes to default applications

Empathy

Whenever Empathy is launched directly (e.g. from the Applications menu), it should display the contact list, not hide in the messaging menu or a notification area icon.

People who have sent new instant messages (or IRC channels in which people have mentioned you) should appear as individual items in the messaging menu. Selecting an item should switch to that window, switching to the relevant tab inside that window if necessary.

Contacts who have just come online should appear as individual items in the menu (without a time) for 30 seconds, and should then be removed.

Empathy should not use the messaging menu to present incoming calls; that is not what it’s for, and it is not nearly noticable enough.

Evolution

Initial setup

Evolution’s initial setup screen should be altered to include a “Remove From Messaging Menu” button. Activating the button should quit Evolution and blacklist it, thereby removing it from the menu.

evolution-setup-before.png

evolution-setup-after.jpg

Settings

How you are notified of new mail is one of the most important settings for a mail program. So it should be presented prominently in Evolution’s Mail Preferences, instead of being hidden in a plug-in as it is now.

Therefore, the “General” tab of the “Mail” panel of Evolution’s Preferences should be altered:

evolution-preferences-old.png

evolution-new.png

Specifically:

  • A “When new mail arrives in” menu should be added to the top of the “General” panel, containing “Inbox” and “any folder” items. If you have more than one e-mail account, the text of the “Inbox” option should read “any Inbox” rather than just “Inbox”. A colon should be shown after the menu, not before.
  • A “Play a sound” checkbox should be added.
  • A “Show a notification bubble” checkbox should be added.
  • A “Show in the messaging menu” checkbox should be added.

The “General” tab is the densest tab in Evolution’s Preferences, so to make room for these new settings, other settings should be rearranged or removed:

  • The “Message Display” section should be renamed to “When displaying messages:”.
  • The “Message Fonts” section heading should be removed, and its contents moved to the top of the “When displaying messages:” section.
  • The “Use the same font as other applications” checkbox should be removed, and Evolution should assume you always want to use the custom font setting. (Having an interface to share font settings between Yelp, Evolution, and nothing else, is more cluttersome than useful.)
  • To make their purpose clearer in the absence of a font-specific introductory heading or checkbox, “Standard Font:” should be changed to “Use proportional font:”.
  • The “Highlight quotations with [XX] color” checkbox should be moved immediately below the font settings.
  • The “Shrink To/Cc/Bcc headers to x addresses” checkbox should be dropped. (These headers can be expanded by clicking a button in the individual message, and how many addresses are shown by default isn’t nearly interesting enough to be a visible setting.)

  • The “Enable Search Folders” checkbox should be removed, and Evolution should run as if it is always on. (If you don’t want any search folders, don’t create any.)
  • The “Help” button should be moved inside the tab, and the redundant “Close” button should be removed.

(These are only minimal changes to make the Evolution Preferences window, with its extra options, compact enough to fit on standard displays. They should not be confused with design work for making Evolution netbook-compatible.)

evolution-plugin.png

Upgrading to a version of Evolution that implements this specification should uninstall the “Mail Notification” plug-in, if it is installed, while migrating its settings. Specifically:

  • The selection of the “Notify new messages for Inbox only” setting should be mapped to whether the “When new mail arrives in” menu is set to “Inbox” or “any folder”.
  • The “Generate a D-Bus message” setting should be ignored.
  • The “Show icon in notification area” setting should be mapped to the “Indicate unread messages in the panel” setting.
  • The “Blink icon in notification area” setting should be ignored.
  • The “Popup message sound together with the icon” setting should be mapped to the “Display a notification bubble” setting.

Ubuntu One

Ubuntu One should no longer be in the messaging menu. While it does occasionally present file share invitations, most of the time people spend seeing or using Ubuntu One is not related to communicating with people.

Unresolved issues

  • We need to survey messaging applications for (a) what custom items they'd want when not running (ApplicationShortcuts), and (b) what custom items they’d want when running. That way we can work out whether it is necessary to provide a separate API for custom items while running.

  • [from Brian Curtis] How to run programs in the background so they're accessible only from the messaging menu?
  • How to configure appearance, length of display, etc ??
  • Should the menu try to enforce limitations on how draw-attention is used?

  • Should the number of subitems be limited to prevent abuse? How many? And how should the excess case be displayed?

MessagingMenu (last edited 2014-01-07 16:35:50 by mpt)