r18 - 28 Dec 2007 - 15:15:24 - BenKruskalYou are here: OSAF >  Projects Web  >  UIDesignArchive? > ContactsDesign

Contacts Design

Status Starting up a new page to replace the old ContactsDesign20040727

Motivation To create Chandler Contacts as a resource hub where users can keep all relevant information and items about a contact either in the contact or related to the contact in an ad-hoc collection. Contacts are currently being treated differently from other Chandler PIM items. The main difference being that contacts are not processed and therefore do not appear in the Dashboard view. Contacts are considered to be more persistent, with less of a "life cycle" than the other PIM item kinds and may be presented in an altogether different helper window UI.

Comment: Pardon me for jumping in late in the game. I'd like to raise the question of whether there might be some utility in treating contacts like other PIM items, i.e. something to be processed. For many situations, this wouldn't be true, but I can think of several examples where a contact might represent a one-off task or brief relationship of some sort; for example a teacher with students, a manager with employees needing annual reviews, a health care professional maintaining a time-limited relationship with a client/patient, a sales professional, etc. It may be too late to change how contacts are handled, but I thought this might be a useful point to consider if not. --BenKruskal

Terminology

  • Contact? - A Contact is an item that appears as an entry in a Chandler address book. A Contact typically represents either a person or a company.
    • See Conent Model: Contact.

  • user? - The term user has recently been replaced by the term Principal?. Principal? is a specific Chandler term, with a clear technical meaning. In contrast, the word "user" is now just a fuzzy English language work, with no specific technical meaning in Chandler. A "user" is just a person who uses computer, and uses Chandler.

  • Group - A Group is a named collection of Contacts (and their associated Principals). In many ways groups will look and feel very similar to the more general notion of Item Collection. For example, you can put a group in the Sidebar to make it easy to get to. However, a group is a special kind of collection. A group differs from a collection, because:
    • you can share items with the group, and assign permissions to the group almost as if it were a contact
    • you can go beyond just specifying which contact items are in the group, by also specifying, for each contact, which email address, or sharing address to use for that contact in the context of this group
    • a group can only contain contact items, not any kind of Content Item

  • Contact Section - A Contact Section is a section of contact info in a Contact item. For example, my contact for my mom might have sections like 'home', 'work', 'at studio', and 'vermont house'.
    • See Content Model: Contact Section
    • See Content Model: Contact

Use Cases

  • Basic use cases
  • Shared contacts directory. Users will want to browse each other's contacts directory on an as needed basis. They will not want to be "N"otified of changes, they may not even need to store the contacts locally. This is primarily for contacts that are not particularly close to the users (ie. All people who work in my company, All soccer league parents, National Rotary Club members) where the shared contacts directory functions much like the Yellow Pages.
  • Single user "manages" a set of contacts where one person is a writer (ie. organizational contacts directory)
  • Maintaining and sharing the "Me" contact. Users will want to maintain a "Me" contact that they can easily broadcast to their friends, family members and co-workers when information changes. (ie. Here's my new cellphone number. I just moved, this is my new address and phone number. I changed jobs!)

  • More complex use cases
  • Adding "private" info to a shared "public" contact. (ie. Dan and George are close friends as well as co-workers. Dan would like to add George's personal contact information and the name of his spouse and children to his George contact. However, his George contact is shared with 30 other employees. Dan doesn't want to create a separate contact for George and maintain two contacts for the same person. What does he do?)
  • Sharing different parts of a contact. (ie. Dan would like to share the work portion of George's contact information with a business associate and the home portion of George's contact with a mutual friend.)
  • Expressing spouse, family, business relationships: Are contact groups named collections? or ad-hoc collections?
    • Where are aliases used: Email, Subscribers of a share, Participants of an event, Requestee of a Task
  • Sharing the OSAF group with the OSAF group
  • You share the recurring OSAF staff meeting with the OSAF group. Past staff meetings should reflect ACLs of past OSAF staff, whereas future meetings should include newly hired staff. Newly hired staff should not receive past meetings on their calendar.
  • View all items where "this contact" is in a "Who" field (ie. To, From, Requestor, Requestee, Organizer, Participant, Author, Subscriber)

Approach

  • For now, we don't let people create ad-hoc collections with contacts
  • Sharing different sections of a contact with different people: Approaches
    • Force people to create separate contacts for the same person and relate them through an ad-hoc collection
    • Affordance for adding private fields to a contact: Add private notes
    • Create different "business cards" for the same contact to share with different people
    • Custom detail views?
  • What are groups? Jungle.Use cases: Families, aliases, organizational groups, groups of people related to a project
    • You can use groups as aliases: not dynamic, just equates to whoever was in the group at the time
    • What about for persistent shares? Group membership is evaluated when synchronization happens, if group membership changes, then it is reflected in the ACL of the share?
      • What about for recurring events? Group membership is changed only for future events.
      • What about sent emails? Group membership is not changed for past sent emails.
      • Do we allow for exclusions? ie. Everyone in Foo group except for Mary. No.
  • Sharing OSAF with OSAF
    • If someone is removed from the OSAF group, they are also removed from the subscriber list
    • Same sharing termination policy as removing a single subscriber from an ACL for a share
    • When changing a group, users need to be able to see all the items / collections that are shared with this group
    • [OI?] Can group aliases have exclusions? ie. Everyone in this group except for Jane. No, for now.
  • [OI?] What is the difference between an explicitly created Foo group and a Foo group that is a result of the people involved in Foo project?
      • Users need to explicitly save the Foo project contacts as Foo group for it to work as an alias.
      • Check box to have Foo group dynamically updated by the contents of Foo project.
      • This will be moved to to the ItemCollection design discussion.

Structure

  • Contacts are not content items. Contact Groups are not Collections.

  • Content items and Collections can have related Contacts and Groups and vice versa
  • Item_Coll_Ct_Groups.gif:

  • Contacts are treated differently from all other content items in Chandler. They are almost a mini-app within the Chandler PIM.
  • Contacts that have been communicated via Email or IM will show up in the main content area as a communications content item with the following attribute mappings:
    • Who = From or To
    • About = ContactName
    • Date = Date sent / received
  • Users can edit contacts imbedded in these communications content items
  • Analogy: It would be as if you could DnD an excel spreadsheet into your current email client and edit it from inside the email client.
  • Contact_palette_Content_are.gif:

Workflows

How to create a Contact
  1. File menu: New >> Contact
  2. Toolbar button: New >> Contact
  3. Create a new note -- Drag it into the contacts palette

Connecting contacts and collections: From content item / collection's point of view

  1. Open "See also" section of item / collection's detail view
  2. Click on Related contacts / groups
  3. Auto-generates contacts referenced in collection in the contacts palette
  4. Explicitly DnD contacts in and out of the auto-generated contacts palette
  5. Explicitly "Save as a Group"
  6. Creates a rule-based Group that is auto-populated by contacts referenced in the collection
  • connect_the_dots.gif:

Connecting contacts and collections: From contact / group's point of view

  1. Open "See also" section of contact / group's detail view
  2. Click on list of related collections
  3. Right click on contact in address fields to view contact info in Contacts palette

Sending / Sharing a contact

  1. Click Communications stamp in mark-up bar of contact
  2. From and To fields appear at the top of the detail view
  3. Click send
  4. Spawns "communications item" in Dashboard view which refers to contact in the Contacts Palette
  5. Clicking on the communications item in the Dashboard view brings up Contacts Palette detail view
  6. User can process "communications items" that refer to contacts just like any other item

Receiving Chandler contacts

  1. Arrives in Dashboard view as a communications item that refers to a contact
  2. User can edit contact in place

Searching for contacts

  • Uses the same search bar BUT
  • Contacts search results come up in Contacts palette

Addressing items for Email / IM / Sharing

  • Start typing: Chandler recognizes:
    • ContactName
    • Nickname
    • Email address
  • Auto-complete works like Safari, users get a pulldown of options as soon as they type
  • Audio beep goes off when user has typed a unique combination of characters
  • Jungle.Use up-down keys to select from list of options
  • Hit enter to select an option
  • Address resolves to ContactName with visual cue to show that's it a contact entry (User can set preference to resolve to address)
  • RO contact to display down arrow
  • Click and hold to select from alternate addresses

  • Chandler automatically does the right thing wrt Email / IM / Sharing
    • If user is addressing a collection, Chandler enters the Sharing address
    • If user is addressing a content item, Chandler enters email address
    • If user checks off IM as a transport, Chandler adds IM buddy name
    • If a contact has multiple address, the last address used is the preferred address

Wireframes

  • Proposal for full-blown contacts detail view
  • [OI?] Unlike the stamping affordances in Processing items, users cannot unstamp contact-ness from a contact

  • Mark-up bar
    • Click and hold to select type of Contact: Person, Entity, Account
    • Click to add Communications fields: From, To, CC, BCC
    • Mark as Male, Female
    • Mark as Family, Friend, Business (not mutually exclusive)
    • Mark as private

  • DnD picture OR
  • Click on picture to add picture from dialog

  • Add ContactName
  • Chandler autogenerates Nickname and Initials (user can change it)

  • Filling contact info:
  • Click on grey label
  • Append (h) (w) (o) (c) to designate as home, work, other, cell
  • Hit ", return" to add another attribute of the same kind (ie. another address)
  • OR Click and hold the ADD icon to select from a pulldown list of attributes

  • See also section
  • Groups
  • Related items and collections: Shows all items / collections that "refer" to this item in the:
    • Addressing fields: From, To, CC, BCC
    • Headline
    • Notes field
  • OR this contact / group has been explicitly added to the "Related contacts / groups" Contacts palette that is associated to an item / collection

  • Detail-view_contacts_200407.gif:

  • Contacts Palette
  • 2 columns: Groups and Contacts
  • All group toggles with "All contacts related to selected collection" if contacts palette is launched from the "See also" section of a collection / item
  • Similarly, left column only displays groups that are related to the selected item / collection

  • Mark-up bar and See also section change wrt selection
  • Button to see the detail over the selected group

  • 2 views: Card view or Table view
    • [OI?] do we need Table view?
    • How do you see detail view if you're in Table view?
  • Card view: D-click to see detail view of selected contact in-place

  • Contact cards only displays limited set of attributes
  • Addresses
  • Tel number
  • Email ??

  • Slow D-click to edit attribute
  • Palette_20040726.gif:

Features

# When Feature Description
1 Canoga Create a contact  
1 Canoga Edit a contact  
1 Canoga Delete a contact  
1 Open Issue Nicknames  
1 Open Issue Designated preferred contact info  
1 Canoga Find a contact (free text and attribute-based search)  
1 Canoga Send mail to a contact  
1 Canoga "Send" an item to a contact  
1 Canoga Share something with a contact  
1 Canoga See the IM presence of a contact on your buddy list  
1 Canoga Share and "address book" of contacts  
1 Canoga Share my "me" contact  
1 Canoga Add ad-hoc attributes to a contact  
1 Canoga See all the mail from/to a contact, regardless of email address  
1 Canoga See all the calendar events involving this contact  
1 Canoga See all tasks involving this contact  
1 Canoga See all the items I've shared with this contact  
1 Canoga See all the items this contact has shared with me  
1 Canoga See all the items this contact has shared with me  
1 Canoga detail view A simple default detail view for a single contact.
1 Canoga list view A simple summary list view, showing a list of contacts.
1 Canoga "me" contact Special-case handling for the "me" contact. For example, we might make it impossible to delete "me".
1 Canoga groups Full support for all of the features having to do with groups, as described in UsersAndGroupsDesign2004
1 Canoga contacts are content items Contacts are just another type of content item, so I can take a contact and do with it all the same things that I can do with other content items. I can put contacts in projects, I can put contacts in collections, I can see contacts in mixed viewed, I can bookmark a contact, I can share a contact.
1 Canoga primary attributes If a contact has several phone numbers, I can mark one of them as "primary", so that it's the one that will show up on a phone list. Ditto for other attributes, like "postal address", "email address", "IM address", etc.
1 Canoga unlimited contact sections I am not limited to just having "home" and "work" sections. I can create as many contact sections as I want to, without limit.
1 Canoga incremental search When you type "P", the result set shows the entries that begins with "P". If you add another two character to get "Pat", the result set shows the people named "Pat". (To see examples of this interface, look at SBook or the Mozilla Address Book.)
1 Canoga edit all attributes In detail view, I can edit all the dozens and dozens of attributes that are available in the contacts content model
1 Canoga printing I can print a single contact item or a list of contacts. There are a variety of print formats to choose from: complete contact info (all attributes); phone list (name and phone numbers); summary "cards"; table format; etc.
1 Canoga two detail views I can open two detail views at once, and copy and paste text from fields in one contact to fields in another.
1 Canoga Waitlist templates I can create "templates" for different types of contacts. Each template can define a different set of attributes that are visible by default for this type of contact. For example, I can have "student" type contacts that each have a "mid-term exam grade" attribute and an "attendance record" attribute, as well as well as "university" type contacts that by default have visible attributes for "name", "address", "web page", and "chemistry dept chairperson". When I create a new contact, I can create it based on a template. For example, instead of just having a "New Contact..." menu item, I also have menu items for "New Student..." and "New University..."
1 Canoga Waitlist actions for attributes Jungle.Attributes like "email address", "IM address", "phone number" all represent contact methods. For these attributes, I can click on the attribute and there's some affordance for initiating contact via that contact method. For example, I can click on the email address and get a new email compose window, or I can click on an IM address and launch a chat session.
1 Post-Canoga contact recognizers When I'm in a non-contact view, if I type the name of a contact it will automatically be recognized and a link will be created that points to the contact item. For example, recognizers will be available if I create a calendar event and type "Jane" in the list of invitees, or if I create a new e-mail composition window and type "Smithers" in the "to:" field, or if I compose a Note and type "Edward Teller" anywhere in the body.
1 Westwood LDAP integration LDAP integration
1 Open Issue import/export I can import contacts from other PIMs, like the Mac Address Book, the Mozilla address book, or Outlook. I can export to some format.
1 Open Issue sync I can sync my Chandler contact list with the address list on my PDA.
1 Never free-form detail page I can view and edit a single contact on a "free-form" detail page -- something with just a single text box, similar to the interface offered by SBook.
1 Open Issue Export to vCard  
1 Open Issue Simple import from vCard  
1 Open Issue Import vCards with auto-merging  
1 Open Issue Contacts API available to other parcels  
1 Open Issue sync compatibility  
1 Open Issue IM integration  
1 Open Issue Support for printing labels  
1 Open Issue Support for printing mailing lists  
1 Open Issue Change of address notification  
1 Open Issue Custom attributes and categories  
1 Open Issue Automatic formatting of phone numbers  
1 Open Issue Sync with Microsoft Exchange Servers  
1 Open Issue Speech recognition searching  
1 Open Issue Merge two contact items into a single contact items  

.4 target

  • Summary table view only has list view
  • Summary table view columns
    • Name
    • Email address
    • Sharing account
  • Detail view
    • Mark-up bar: Person or Organization / Private or Not private
    • Name
    • Email address
    • Sharing account

[OI?]

  • Do we want to be able to load the Contacts Palette in the main content area and have the Contacts sidebar take over the generic sidebar? (Like a 3rd party capplet)
  • Rule builder and browser for Contacts?
  • Proposal:
    • Add Contacts kind filter in sidebar
    • Click on it to have the Contacts sidebar take over the generic sidebar and to load Contacts into the main content area
    • Rt-click to load Contacts into floating Contacts palette, which essentially a new window

-- MimiYin - 07 Jul 2004

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r18 < r17 < r16 < r15 < r14 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.