Chandler 0.6 Sidebar Specification

Authors: John Anderson, Sheila Mooney, Mimi Yin Last edited: July 13, 2005 Creation date: May 18, 2005
Reviewers: Philippe Bossut

Overview

Goals and Objectives

In 0.6, our primary objective is to ensure that we support the basic calendaring use cases well. This includes managing a single personal calendar, managing multiple personal calendars, sharing a personal calendar and subscribing to either someone else's personal calendar or a group calendar. As of 0.5, the Chandler sidebar was unable to elegantly transition from managing a personal calendar to subscribing to shared calendars. There were also concerns as to whether the sidebar was even usable enough just for personal calendaring. We aim to address these concerns in 0.6 while maintaining the virtuality model that was esablished in 0.5.

Sheila Mooney
Spec owner
Mimi Yin
Spec contributor
John Anderson
Implementor


Background

   

As of 0.5, Chandler had a functioning faceted sidebar, albeit with two important caveats:

There was also no way to differentiate between personal and non-personal information. If a user subscribed to somebody else's personal calendar, their own personal calendar would get polluted with shared events. The transition from using Chandler as a personal information manager to using Chandler as a shared information manager was awkward at best and unusable at worst.

High Level Use Cases

These are the basic high-level use cases we will focus on supporting for 0.6.

1. Manage a single personal calendar

2. Manage multiple personal calendars

3. Share personal calendar(s).

4. Subscribe to someone else's personal calendar.

5. Subscribe to a group calendar.

6. Set up and share a group calendar.


Definitions

Requirements

To be filled in by Sheila.

Assumptions

To be filled in by Sheila.

High-level Decisions


Terminology


Date range
   The date range in view in the maincal.

Month range
   The month range in view in the minical.

Library collection

Rule-based, out-of-the-box collections designed to provide users with a definitive set of collections they can refer to to find all any in their repository (that has not been trashed), regardless of what collections it's been added to or removed from. The library collections for 0.6 are: My items, My mail, My tasks, My calendar, In and Out (See the "Item removal and deletion spec" for more details about Library collections.)

Not-mine collection

A user designation assigned to user-defined collections containing items that the user doesn't want automatically picked up by their Library collections.

Mine collection

All of the user's Library collections + user-defined collections that have NOT been designated as "Not mine" collections

Appbar

Left-most toolbar above the sidebar that houses the 4 kind-based application areas: All (all kinds), Mail, Tasks, and Calendar.

Collection

Groupings of items that appear in the sidebar. Collections have names and will eventually be attached to specific attributes in the Detail view. Chandler will provide 4 out of the box collections in 0.6: My items, In, Out and Trash.

Faceted Sidebar

Formerly known as the orthogonal sidebar. Chandler's sidebar is a very simple faceted classification UI comprised of 2 facets: App area (or Kind) and Collection. Traditionally, PIMs completely separate sidebars, separate navigation experiences and separate organizational affordances for each application area. Chandler on the other hand, seeks to provide integrated organization and navigation experience across all application areas. There is a single notion organizational affordance: the collection and it spans all application areas. Each application is simply a filter or a lense on the sidebar collections and the data being displayed in the summary pane. For more: see: http://wiki.osafoundation.org/bin/view/Journal/SidebarDesign


User Interface/Interactions

High-level usability goals

To meet the high standards required of a usable calendaring application, we are proposing the following high-level changes to sidebar virtuality in 0.6:

Anatomy of the sidebar


1. Navigating between collections and across app areas


Sidebar collection settings across App areas

View settings across App areas

 View settings per collection in the All, Mail and Tasks app areas

View settings across collections in the Calendar app area

View settings per collections in the Calendar app area

View settings that persist per App area

[Sheila] We have column sort as a bug in 0.6 but since we are focussing on the calendar view it is NOT essential that this be fixed for 0.6. There are some dependencies on another bug getting fixed (assigned to Andi) so we will wait until after M5 to re-triage this.

View settings wrt Minical

User runs Chandler for the first time.

2. Navigating between collections in different app areas


The next set of requirements address what item is selected as we navigate across app areas for a specific collection. Please see the notes in red below.

[Sheila] So there has been some discussion regarding our ability to handle all the scenarios above in 0.6. Apparently this is difficult to make work correctly and the introduction of multi-selecting items causes problems. There are 2 proposals for 0.6. A) We don't worry about this at all. If we assume that the user doesn't leave the calendar app area this will be a lower priority use case. We could default to whatever is easiest. B) John indicated that handling single selection is doable for 0.6. I think that we should wait until we have implemented all other aspects of the 0.6 sidebar virtuality before we discuss the appropriate solution for 0.6...depending on bugs, schedule and resources etc.

3. Sidebar interaction


Creating new collections

Deleting collections

This section is also described in the 0.6 Item Deletion and Removal Spec.

Drag and drop
Calendar overlays

4. Sidebar icons


Sharing icons for Mine items (items appear in the All Collection)

Sharing icons for Not Mine items (items do not appear in the All collection

Other sharing states

5. Designating a collection as "Not mine"


In 0.6 will will support the preliminary notion of user spheres with the Mine and Not Mine affordance for collections. By default all user-collections created in Chander will be designated as Mine, meaning that all the items will exist in the base All collection. By default, all collections created by  subscribing to a share will be designated as Not Mine, meaning that these items do not automatically appear in the All collection. The user can change this default behavior for these collections but using a menu item under the Collection menu. Keep in mind that Mine and Not Mine for an item is based on it's inclusion for that state as it applies to a collection. It we change the state from Not Mine to Mine for the selected collection, all the items in that collection will appear in the All collection.

Since it's possible in Chandler to drag an item from one collection to another, we can drag and event from a Not Mine collection to a Mine collection. In this case, since the item is included in one Mine collection, it will appear in the All collection as well.


There is a new item under the Collection menu to modify the "Mine" or "Not Mine" status of a particular collection. This means that all the items in this collection will also be part of the All collection (Mine) or excluded (Not Mine). The menu item behavior is described below.



 Designating an empty collection as "Not mine"
Designating a collection as "Not mine" after the fact
Designating an Inbound share as "Not mine"

UN-designating a collection as "Not mine"

6. Importing calendars


7. Sharing a collection


See Sharing spec for more details


8. Focus

[Sheila] For 0.6 we have decided that it's ok for the sidebar to have focus when you single click. We will revisit this behavior in 0.7.

9. Editing the item in the detail view and summary pane


10. Stamping and Unstamping items


11. Menus


The collection menu contains the following items:




Assume that the blanks above indicate separators.

So, I don't think we really spec'd out the behavior for duplicate (ie: copy) for a collection. Maybe this is very easy but I think if we don't have it for 0.6 that's fine. I will leave in in the spec for now and we can revisit on our next walk-through.

OOTB collections cannot be

... = name of collection selected in the sidebar

For more details on which menu items are active v. greyed, see Context menu spec and the Sharing spec.

12. Visual polish


13. Updating items in a collection (Stretch)


13. Search collections (Stretch)

  1. When users search within a collection, we should display the # of results in the sidebar next to the collection. The # of search results should update in real time as items are found. (John said this fell out naturally.)
  2. It would also be nice if we could simultaneously search across all collections in the sidebar and display the # of search results found in each collection next to each collection name in the sidebar. The # of search results should update in real time as items are found.
  3. When we have email, we will need to be able to display the # of unread messages in each collection. This should be updated in real time
  4. As well as Mail is synced
  5. As rules are fired
  6. When users add and/or remove unread items from collections
  7. [OI] TedLeung How much search is in scope for 0.6

Usability Test considerations

  
  1. Do users want selection and overlays to persist across application areas? or would they prefer each application area to have it's own persisted set of selections and overlays.

QA/Test

GUI Testing: Ad-hoc

 

14. Implementation

One big design choice, was whether the sidebar should be implemented as three separate wxGrid tables, one for each kind filter, or a single wxGrid. This was a difficult choice because the design calls for some features to act as if there were three separate wxGrids and some features to act as if there were a single wxGrid. For the 0.6 release we chose to implement the sidebar as a single wxGrid.

The decision of how to handle the mapping between different Views (also known as trees of blocks) and Sets (also known as the ItemCollections) will be handled by the sidebar's TrunkParentBlock, not the sidebar itself. The idiosyncratic behavior of each of the different ItemCollections will not be hardwired in code, but specified in data so that it will be easy to apply the behavior to different ItemCollections in the future. As much as possible, all of the display specific information of particular Sets of data, e.g. color will be separated from the data itself.

Some aspects of the design require not just a View (user-interface) and a Set (list of items), but also another piece of View-specific information that needs to be remembered and associated with the View and the Set. An example of this is the selection. It doesn't belong to the View, nor does it belong to the Set, and it needs to be persisted and wired up to the View and the Set when they are displayed together. For 0.6 there are no plans to implement this separate View-specific information.

One important dependency of the sidebar is the change from ItemCollections to Sets. This change is a prerequisite for a number of features, e.g. color in the icons and bugs in the sidebar, e.g. notification bugs.

 

Comments

Philippe's Comments - May 19th, 2005

Usage of "My" (as in My items / My calendar / etc...)

This is my pet rant but I really must insist: I do not believe that violating basic grammar rules makes software easier to use.

This "My" fad started with Yahoo back in the days and made sense in the (then new) context of a web app so that users could identify "their" stuff from the rest of the public Yahoo properties.

Still, even there, it makes basic discussion painful ("I think this is in your my contacts list...") but, in the context of a desktop app, it makes no sense at all: after all, this is your computer. Who else's items, calendar, etc... could that be? Furthermore, if the computer is used by several people, it makes the possibility of confusion even higher (everything is named "My items" so you don't know if it's really you or someone else...). And if you want to have several identities, forget it...

I really think that the main ex "All" collection should have a user defined identity name. That will also make sharing less confusing since this name will be used on the server.

I think this is something that needs to be tested with real users while doing usability testing, especially in "multiple identities" context.

Mine - not Mine

Looks to me that we are introducing one level of hierarchy in the collection list. Should we make that more clear? e.g.: visualize it as a real hierarchy? Or create a separation between "mine" and "not mine"? I know there's an icon for it but I found it confusing... (see below).

Deletion

I see that collection can be selectable (good) though it does not have focus (bad).

Warning dialog: Can't we "Undo" a deletion (and then avoid the dialog)? How many levels of undo do we support? (that's really an architecture question for devs)

Warning dialog in deleting an outbound share: We need a "do not show this dialog again" check box in this dialog.

Sharing icon status

Hard to decipher without a legend though I understand the need and I don't have a really better idea : this is not easy to design for sure...

May be should not superpose link and not mine status? (I know: real estate)

May be we should separate visually mine and not mine collections?

Anyhow, we definitely need a really good tooltip on hover on those things... :)

Missing Section : Navigation

User should be able to navigate the list of collections with the arrow keys and rename, move, delete, show (and select) contextual menu all without using the mouse.

Actually, users should be able to navigate across the whole app using only keyboard. For instance tab should move to the next list and shift-tab to the previous, i.e. moving the focus from the collection list to the summary view. See Thunderbird for good (though not perfect) navigation.

This is an Accessibility requirement (see Section 508 for the federal Rehabilitation Act law and UAAG 1.0 for a good W3C spec on how a software should implement it.)

Menu

Can the user choose the collection icon? (not in 0.6 though...)

John's Comments - July 7th, 2005

Implementation

Philippe suggested that I moved this paragraph to comments and label it as a rant. However I'm hoping that even though it sounds like a rant, that we learn lessons from our sidebar experience and incorporate more knowledge of our the available widgets at our disposal into our design process. I think this would improve our design and simplify the implementation.

By far the most important consequence to the implementation of the proposed design was the decision not to take advantage of the vast set of existing widgets at our disposal. This leaves few choices for the implementation and increases the development time by more than an order of magnitude. The proposed design can't be implemented using any standard widget from any UI toolkit on any of the platforms. Outside of implementing a complete custom widget, which is a potentially enormous task, the only obvious choice, other than considering a design that takes better advantage of existing widgets, is to use wxWidget's wxGrid, which is powerful enough for us to completely control all of the drawing code and doesn't use any native widgets, so we can completely control the behavior by overriding or rewriting portions of it. wxGrid is a fairly large and sophisticated piece of code, at around 15,000 lines and at least a man year's effort, so starting with it saves considerable time, but at the same time imposes a steep learning curve. It also has the downside of not being able to automatically track changes to each platform's UI toolkit updates.

Even with the wxGrid code, all the user-interface of the buttons, rollovers, mouse interactions, and drawing of rows in the sidebar are all completely handcrafted and written mostly from scratch. The idiosyncratic behavior of the sidebar as it relates to the kind filters, summary view, and how different items in the sidebar have different behaviors makes the sidebar not useful in any context outside Chandler, so for this reason the sidebar has been removed from CPIA.

History

Author Edit date Description
Philippe Bossut
May 20, 2005
Added comments pre review
Mimi Yin
May 18, 2005
First Draft
Sheila Mooney
July 13, 2005
Edits for clarifying mine/not mine behavior and icons. Added comments regarding issues.