# Patent

## Title
People lists

## Abstract

Enabling management of contacts includes passively recognizing a set of contacts that are, as a group, repeatedly sent communications by a member, bringing the member's attention to the recognized set of contacts, enabling the member to name the set of contacts, and enabling the member to address future communications to the set of contacts through use of the name associated by the member with the set of contacts.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
This is a continuation of application Ser. No. 13/048,312, filed on Mar. 15, 2011 now U.S. Pat. No. 8,224,916 (now allowed), which is a continuation of application Ser. No. 10/715,215, filed Nov. 18, 2003 (now U.S. Pat. No. 7,908,327), which claims the benefit of U.S. Provisional Application No. 60/426,812, filed Nov. 18, 2002, and titled “People Sharing: Groups/Lists/Rostering,” and claims the benefit of U.S. Provisional Application No. 60/426,806, filed Nov. 18, 2002, and titled “Software Enabling and Enhancing Communications and Functionality At A Client Computer,” and claims the benefit of U.S. Provisional Application No. 60/477,333, filed Jun. 11, 2003, and titled “People Lists,” all of which are incorporated by reference in their entireties.


TECHNICAL FIELD
This document relates to the identification and creation of lists of contacts to which electronic messages may be sent from one or more communications applications.
BACKGROUND
Many activities that leverage the Internet involve communicating and sharing messages (a.k.a., sending messages). Multiple communications programs may be used to send messages over the Internet. For example, separate applications exist for sending e-mail messages, instant messages, digital pictures, and electronic calendar information. These different applications may be used to send messages to common people or common groups of people. However, conventionally, each application typically stores a separate list of people or groups of people with whom communication using that application regularly occurs. For example, an e-mail application has an address book, and an instant messaging application has a buddy list.
SUMMARY
In one general aspect, enabling management of contacts includes passively recognizing a set of contacts that are, as a group, repeatedly sent communications by a member, bringing the member's attention to the recognized set of contacts, enabling the member to name the set of contacts, and enabling the member to address future communications to the set of contacts through use of the name associated by the member with the set of contacts.
Implementation may include one or more of the following features. For example, in one implementation, passively recognizing the set of contacts may include storing communications sent by the member during a period of time, examining the communications sent by the member during the period of time, and identifying a set of contacts that was sent at least a minimum number of communications by the member during the period of time.
In another implementation, passively recognizing the set of contacts may include storing a predetermined number of communications sent by the member, examining the predetermined number of communications sent by the member, and identifying a set of contacts that was sent at least a minimum number of communications out of the predetermined number of communications by the member.
The member may be enabled to accept or to reject the recognized set of contacts brought to the member's attention. The member may be enabled to delay a rejected set of contacts from being brought to the member's attention. The member may be enabled to assign a unique identifier to the set of contacts.
In one implementation, the communications sent to the set of contacts and the future communications may be sent from multiple applications.
The multiple applications may include communications applications. The communications applications may include an e-mail application and at least one application other than an e-mail application. The communications applications may include an instant messaging application and at least one application other than an instant messaging application. The communications applications may include a digital image sharing application and at least one application other than a digital image sharing application. The communications applications may include an alerting application that sends alerts and reminders to users and at least one application other than an alerting application that sends alerts and reminders to users. The communications applications may include an application for sharing and exchanging contact information and at least one application other than an application for sharing and exchanging contact information.
The multiple applications may include other sharing applications. The other sharing applications may include an electronic journal application and at least one application other than an electronic journal application. The other sharing applications may include an e-mail filtering application and at least one application other than an e-mail filtering application. The other sharing applications may include an application that enables the specification of parental controls over a child account and at least one application other than an application that enables the specification of parental controls over a child account.
These general and specific aspects may be implemented using a system, a method, or a computer program, or any combination of systems, methods, and computer programs.
Other features will be apparent from the description and drawings, and from the claims.



DESCRIPTION OF DRAWINGS
FIG. 1 is a block diagram of a communications system.
FIGS. 2 and 3 are expansions of the block diagram of FIG. 1.
FIGS. 4 and 7 are flow charts of processes for automatically creating and storing a people list.
FIG. 5 is an illustration of an interface for selecting people or groups of people to whom a message is sent.
FIG. 6 is a flow chart of specifying, sharing, and using people lists.



Like reference symbols in the various drawings may indicate like elements.
DETAILED DESCRIPTION
People lists are lists of contacts, for example, with each contact stored in a people list as a single identifier. The single identifier may be an e-mail address, a screen name, a cell phone number, or any other identifier capable of uniquely identifying the corresponding contact. A people list may be accessed from a central people list repository by multiple applications to address messages. For example, an e-mail application may use a people list to specify the recipients of an e-mail message and a digital image sharing application may use the same people list to specify the recipients of a shared digital image.
People lists may be actively created through the specification of a single identifier for each of the contacts to be included in the people list. People lists also may be created passively through automatic detection of a set of contacts that are repeatedly specified as the recipients of messages, where the set of contacts repeatedly receiving messages include the members of a passively created people list. People lists also may be created through the integration of existing lists from within the multiple applications into the set of people lists. For example, distinct people lists may be created based on each of the named groups within a buddy list of an instant messaging application.
Once created, people lists may be shared to prevent the need for duplicate creation of a people list for use by multiple people. The person who originally creates the people list shares the people list by sending copies to each of the people with whom the list is to be shared. If any of the people holding a copy of the people list makes any changes to the people list, the changes may be automatically propagated to the other copies of the people list.
For illustrative purposes, FIGS. 1-3 show an example of a communications system for implementing techniques for transferring electronic data. People lists may be used to address communications sent using the communications system illustrated in FIGS. 1-3. For brevity, several elements in the figures described below are represented as monolithic entities. However, as would be understood by one skilled in the art, these elements each may include numerous interconnected computers and components designed to perform a set of specified operations and/or may be dedicated to a particular geographical region.
Referring to FIG. 1, a communications system 100 is capable of delivering and exchanging data between a requestor system 105 and a provider system 110 through a communications link 115. The requestor system 105 may include a client system and the provider system 110 may include a host system. The requestor system 105 typically includes one or more requestor devices 120 and/or requestor controllers 125, and the provider system 110 typically includes one or more provider devices 135 and/or provider controllers 140. For example, the requestor system 105 or the provider system 110 may include one or more general-purpose computers (e.g., personal computers), one or more special-purpose computers (e.g., devices specifically programmed to communicate with each other and/or the requestor system 105 or the provider system 110), or a combination of one or more general-purpose computers and one or more special-purpose computers. The requestor system 105 and the provider system 110 may be arranged to operate within or in concert with one or more other systems, such as, for example, one or more Local Area Networks (“LANs”) and/or one or more Wide Area Networks (“WANs”).
The provider system 110 may include a communication interface such as an electronic mail gateway. For instance, the provider system 110 may include a dedicated mailing system that is implemented by specialized hardware or executed by a general purpose processor capable of running various applications, such as electronic mailer programs, and capable of employing various file transfer protocols, such as the Simple Mail Transfer Protocol (“SMTP”). The communications interface of provider system 110 enables communications between the provider system 110 and other systems through, for example, communications link 115.
The requestor device 120 (or the provider device 135) is generally capable of executing instructions under the command of a requestor controller 125 (or a provider controller 140). The requestor device 120 (or the provider device 135) is connected to the requestor controller 125 (or the provider controller 140) by a wired or wireless data pathway 130 or 145 capable of delivering data.
The requestor device 120, the requestor controller 125, the provider device 135, and the provider controller 140 each typically include one or more hardware components and/or software components. An example of a requestor device 120 or a provider device 135 is a general-purpose computer (e.g., a personal computer) capable of responding to and executing instructions in a defined manner. Other examples include a special-purpose computer, a workstation, a server, a device, a component, other physical or virtual equipment or some combination thereof capable of responding to and executing instructions. The requestor device 120 and the provider device 135 may include devices that are capable of peer-to-peer communications.
An example of a requestor controller 125 or a provider controller 140 is a software application loaded on the requestor device 120 or the provider device 135 for commanding and directing communications enabled by the requestor device 120 or the provider device 135. Other examples include a program, a piece of code, an instruction, a device, a computer, a computer system, or a combination thereof, for independently or collectively instructing the requestor device 120 or the provider device 135 to interact and operate as described. The requestor controller 125 and the provider controller 140 may be embodied permanently or temporarily in any type of machine, component, physical or virtual equipment, storage medium, or propagated signal capable of providing instructions to the requestor device 120 or the provider device 135.
The communications link 115 typically includes a delivery network 160 making a direct or indirect communication between the requestor system 105 and the provider system 110, irrespective of physical separation. Examples of a delivery network 160 include the Internet, the World Wide Web, WANs, LANs, analog or digital wired and wireless telephone networks (e.g., PSTN, ISDN, and xDSL), radio, television, cable, satellite, and/or any other delivery mechanism for carrying data. The communications link 115 may include communication pathways 150 and 155 that enable communications through the one or more delivery networks 160 described above. Each of the communication pathways 150 and 155 may include, for example, a wired, wireless, cable or satellite communication pathway.
An electronic information store 180 may be connected to the provider system 110, included as a component of the provider system 110, and/or connected to the delivery network 160. The electronic information store 180 may be a repository for electronic information that may be in an indexed and/or searchable format.
FIG. 2 illustrates a communications system 200 including a requestor system 205 communicating with a provider system 210 through a communications link 215. Requestor system 205 typically includes one or more requestor devices 220 and one or more requestor controllers 225 for controlling the requestor devices 220. Provider system 210 typically includes one or more provider devices 235 and one or more provider controllers 240 for controlling the provider devices 235. The communications link 215 may include communication pathways 250 and 255 that enable communications through the one or more delivery networks 260.
Examples of each element within the communications system of FIG. 2 are broadly described above with respect to FIG. 1. In particular, the provider system 210 and communications link 215 typically have attributes comparable to those described with respect to the provider system 110 and the communications link 115 of FIG. 1. Likewise, the requestor system 205 of FIG. 2 typically has attributes comparable to and illustrates one possible implementation of the requestor system 105 of FIG. 1.
The requestor device 220 typically includes a general-purpose computer 270 having an internal or external storage 272 for storing data and programs such as an operating system 274 (e.g., DOS, WindowsTM, Windows 95TM, Windows 98TM, Windows 2000TM, Windows MeTM, Windows XPTM, Windows NTTM, OS/2, or Linux) and one or more application programs. Examples of application programs include authoring applications 276 (e.g., word processing programs, database programs, spreadsheet programs, calendar programs, or graphics programs) capable of generating documents or other electronic content; client applications 278 (e.g., stand alone e-mail client or AOL client, CompuServe client, AIM client, AOL TV client, or ISP client, all of which may include a built-in or embedded e-mail and/or instant messaging client) capable of communicating with other computer users, accessing various computer resources, and viewing, creating, or otherwise manipulating electronic content; browser applications 280 (e.g., Netscape's Navigator or Microsoft's Internet Explorer) capable of rendering standard Internet content and also capable of supporting a web-based e-mail and/or instant messaging client; and other applications such as a digital image sharing application.
The general-purpose computer 270 also includes a central processing unit 282 (CPU) for executing instructions in response to commands from the requestor controller 225. In one implementation, the requestor controller 225 includes one or more of the application programs installed on the internal or external storage 272 of the general-purpose computer 270. In another implementation, the requestor controller 225 includes application programs stored in and performed by one or more device(s) external to the general-purpose computer 270.
The general-purpose computer also includes a communication device 284 for sending and receiving data. One example of the communication device 284 is a modem. Other examples include a transceiver, a set-top box, a communication card, a satellite dish, an antenna, or another network adapter capable of transmitting and receiving data over the communications link 215 through a wired or wireless data pathway 250. The general-purpose computer 270 also may include a TV tuner 286 for receiving television programming in the form of broadcast, satellite, and/or cable TV signals. As a result, the requestor device 220 can selectively and/or simultaneously display network content received by communications device 284 and television programming content received by the TV tuner 286.
The general-purpose computer 270 typically includes an input/output interface 288 for wired or wireless connection to various peripheral devices 290. Examples of peripheral devices 290 include, but are not limited to, a mouse 291, a mobile phone 292, a personal digital assistant 293 (PDA), a MP3 player (not shown), a keyboard 294, a display monitor 295 with or without a touch screen input, a TV remote control 296 for receiving information from and rendering information to subscribers, and an audiovisual input device 298.
Although FIG. 2 illustrates devices such as a mobile telephone 292, a PDA 293, and a TV remote control 296 as being peripheral with respect to the general-purpose computer 270, in another implementation, such devices may themselves include the functionality of the general-purpose computer 270 and operate as the requestor device 220. For example, the mobile phone 292 or the PDA 293 may include computing and networking capabilities and function as a requestor device 220 by accessing the delivery network 260 and communicating with the provider system 210. Furthermore, the requestor system 205 may include one, some or all of the components and devices described above.
FIG. 3 illustrates a communications system 300 including a requestor system 305 communicating with a provider system 310 through a communications link 315. The requestor system 305 typically includes one or more requestor devices 320 and one or more requestor controllers 325 for controlling the requestor devices 320. Provider system 310 typically includes one or more provider devices 335 and one or more provider controllers 340 for controlling the provider devices 335. The communications link 315 may include communication pathways 350 and 355 that enable communications through the one or more delivery networks 360.
Examples of each element within the communications system of FIG. 3 are broadly described above with respect to FIG. 1. In particular, the requestor system 305 and communications link 315 typically have attributes comparable to those described with respect to the requestor system 110 and the communications link 115 of FIG. 1. Likewise, the provider system 310 of FIG. 3 typically has attributes comparable to and illustrates one possible implementation of the provider system 110 of FIG. 1.
The provider device 335 typically includes or enables access to one or more applications. The applications may be used to deliver or control messages sent and received by users of the requestor devices 320. The applications may be categorized into two groups: communications applications used to send and receive messages and other sharing applications. Examples of communications applications include an e-mail application, an instant messaging application, a digital image sharing application, an application for sharing contact information, and an application for sending alerts and reminders. Examples of other sharing applications include an e-mail filtering application, an application for specifying parental controls over a parental account, and an electronic journal application. Other applications capable of controlling communications also may be included in the provider device 335. The users of the requestor system 305 use the requestor devices 320 to create messages, and the created messages are given to the applications included in the provider device 335 for delivery.
The applications included in the provider device 335 are capable of executing instructions in response to commands from the provider controller 340. In one implementation, the provider controller 340 includes one or more of the application programs installed on the provider device 335. In another implementation, the provider controller 340 includes application programs stored in and performed by one or more device(s) external to the provider device 335.
An address book server and database 380 may be connected to the provider system 310, included as a component of the provider system 310, and/or connected to the delivery network 360. The address book server and database 380 is broadly described above with respect to FIG. 1. The address book server and database 380 typically has attributes comparable to and illustrates one possible implementation of the electronic information store 180 of FIG. 1. The address book server and database 380 may be a repository for contact information that may be in an indexed and/or searchable format. The address book server and database 380 may store pairs of names and identifiers for individual contacts as well as for people lists. The identifiers stored by the address book server and database 380 may be used to address messages delivered by the applications included in the provider device 385, where the identifiers to be used may be selected through selection of the corresponding names stored in the address book server and database 380.
In one exemplary implementation, a selection interface 385 is included in the provider system 310 to facilitate the selection of names and, consequently, identifiers from the address book server and database 380. The selection interface 385 enables the selection of names from the address book. The message to be delivered is thereby addressed to the identifiers corresponding to the names selected in the selection interface 385. After the message is addressed, it is delivered to the specified recipients by the appropriate application from the provider device 335.
Alternatively or additionally, the selection interface 385 and the applications may be included in the requestor system 305 so that the recipients of the message to be sent may be specified before the message is given to the applications included in the provider device 335 for delivery. When the selection interface 385 is included in the requestor system 305, the contents of the address book server 380 may be accessed and/or transferred over the communications link 315 to the requestor system 305, where the contents are displayed by the selection interface 385. The applications included in the provider device 335 may immediately deliver a message to the recipients that have been specified through the selection interface 385 included in the requestor system 305. In addition or alternatively, the address book server and database 380 and the selection interface 385 may be included in the requestor system 305.
The majority of the activity of the communications system illustrated in FIGS. 1-3 involves the communication and sharing of messages and information. The users of the communications system 100, 200, or 300 may send various kinds of information to one another, including e-mail messages, instant messages, digital images, address information, and alerts or reminders. Typically, a different application exists for using the communications system 100, 200, or 300 to send each type of message. Within each application, a user may actively specify a list of people with which communications regularly occur using that application.
People lists are lists of identifiers of people to whom messages may be sent. People lists represent filtered versions of a single list of contacts with whom a user communicates. The identifiers included in a people list are used to address messages to the people corresponding to the identifiers when the people list that includes the identifiers is chosen. People lists may be stored in an address book or in some other central repository that may be accessed by multiple applications.
Each of the applications may access the central repository of people lists when addressing a message. One or more people lists may be chosen as a recipient of the message, and the message is sent to the people corresponding to the identifiers in the people list. In this way, people lists function in the same way as e-mail addresses or screen names in that people lists are used to specify the recipients of a message. Several applications access the same central repository of people lists, so specification of people lists only needs to occur in one place at one time. Additionally or alternatively, all or a portion of the central repository of people lists may be communicated to a local device (e.g., requestor device 120, 220, or 320) for access and use by the applications on the local device. In one exemplary implementation, the people lists may be transferred to the local device for a temporary duration. Any changes to the people lists while on the local device including any additions, deletions, and edits, may be communicated to the central repository of people lists such that the central repository of people lists is updated.
In some applications, people lists may be used to specify the recipients of a message or some other form of shared information. For example, a people list may be used in an e-mail application to specify the direct recipients, the carbon copied recipients, or the blind carbon copied recipients of an e-mail message. A people list may be used by an instant messaging application to address an instant message that is broadcast simultaneously to multiple people. A people list may specify the recipients of images shared through use of a digital image sharing application. A people list may specify the contacts that receive address information and updates to the address information that are sent by an address sharing application. Finally, people lists may indicate the contacts that are sent alerts and reminders from an alerting application.
In addition, people lists may be used as access control lists. For example, a people list may be used by an e-mail filtering application to specify the contacts from which e-mail messages are accepted. Messages from contacts included in the people list may be accepted, while messages from people not included in the people list may be blocked. On the other hand, a people list may be used by the e-mail filtering application to specify the contacts from which e-mail messages are blocked. In this case, messages from contacts included in the people list may be blocked while messages from contacts not included in the people list may be accepted. A similar behavior may be implemented by an application through which parental controls over a child account are specified. People lists may be used to specify contacts from which communications are accepted or rejected by the child account, as the case may be. Similarly, people lists may be used by an electronic journal application to specify the contacts that are allowed or disallowed access to the electronic journal.
A single people list may be used by multiple applications to address multiple kinds of messages. For example, a single people list may be used to address an instant message sent by an instant messaging application, as well as specify the recipients of a set of shared images from a digital image sharing application. In addition, a single people list may be used to address an e-mail as well as an instant message that is sent to the people contained in the single people list. Moreover, a single people list may be used by a mail filtering application to specify contacts from which e-mails accepted or blocked and also by an application enabling the specification of parental controls over a child account to specify the contacts from which communications are accepted or blocked by the child account. A single people list may be used by any number of communications applications after only a single specification. For example, a single people list may be populated with contacts from whom spam e-mail messages were received in an e-mail application. The list may be used by an e-mail filtering application as well as an application for specifying parental controls to block communications from contacts included in the list.
If an identifier contained in a people list may not be used by a particular application, then the user that chose the people list may be prompted to enter an identifier that may be used by the application. For example, the user may be prompted for an e-mail address of a contact whose cellular phone number is stored in the people list when the people list is being used by an e-mail application. When the user is not prompted for a usable identifier, then the unusable identifier is omitted, and the corresponding contact is not included in the action taken on the people list. Continuing the above example, if the user is not prompted for an e-mail address, then the message being created by the e-mail application is not sent to the contact whose cellular phone number is stored in the people list.
A people list is identified and selected by a name that is unique among the names of the other people lists stored in the central repository. In the event that multiple non-identical people lists are stored within the central repository with the same name, then the names of the conflicting people lists are automatically modified.
People lists may be created manually or automatically. When creating a list manually, a user must specify a name for the people list as well as the identifiers of the people to be included in the people lists. When created automatically, a system may automatically detect a set of people that could include a people list. The system may prompt the user for a name of the automatically detected set of people.
Referring to FIG. 4, a process 400 for automatically recognizing a set of recipients that have been repeatedly specified as recipients of messages enables the automatic specification of a people list. After a set of contacts are identified as repeated recipients of messages, the set is given a name, and that set becomes a people list that can be used to quickly specify the set of contacts as the recipients of a message in the future. The process 400 monitors the communications sent from at least one application before suggesting that a set of contacts should be formalized into a people list.
The process 400 begins with the monitoring of the messages sent by the various applications. It is identified when a message is sent (405), and the message is stored for later analysis (410). A determination is made as to whether to keep storing messages (415). Messages may be detected and stored for a certain amount of time or until a certain number of messages have been stored. If more messages are to be stored, more messages are identified when sent (405) and stored (410) until no more messages are to be stored (415).
After identifying and storing sent messages, the set of stored messages is analyzed (420). The analysis attempts to identify a sender-specified set of contacts from which a people list may be created (425). The set of contacts typically are identified from the recipients of the stored messages. A variety of criteria may be used to determine if a people list should be created out of a set of contacts grouped by a sender that have repeatedly received messages. For example, one criterion may dictate that a certain percentage of the total messages sent be addressed to the set of contacts before the sender-specified set of contacts is identified as a candidate for a people list. Alternatively, a certain number of messages may need to be sent to the set of recipients within a certain amount of time before the set of contacts is made into a people list. The application that sent the messages may influence whether a set of contacts is made into a people list. For example, if a set of contacts is sent two e-mail messages, then the set of contacts may be made into a people list, but if a set of contacts is sent two images from a digital image sharing application, then the set of contacts may not be made into a people list. Other criteria are possible, and combinations of criteria may be used to determine if the set of contacts should be made into a people list. For example, a certain percentage of e-mail messages and a certain frequency of instant messages sent to the set of contacts may be required before the set of contacts is made into a people list. In these cases, the sets of contacts from which a people list may be generated are created by the sender of the stored messages and are not created as a result of the analysis of the stored messages.
For example, consider that the e-mail messages sent and digital images shared by a user are stored for a two-week period. The analysis of the stored e-mail messages reveals that the user addressed five e-mail messages to a specific set of contacts during the two-week period. The analysis may suggest that the set of contacts is converted into a people list. The analysis also may reveal that the user specified a group of contacts with which ten digital images were shared, which may lead to the suggestion that the group of contacts be converted into a people list. Similarly, if two e-mail messages and six digital images are sent to a user-specified group of contacts, the group of contacts may be identified as a candidate for a people list.
When a set of contacts is identified for conversion into a people list, the user is prompted to give a name to the set of contacts to formally create a people list including the set of contacts (430). The user also may choose to reject the conversion of the identified set of contacts into a people list. In doing so, the user also may choose to delay the later suggestion that the identified set of contacts be converted into a people list. When a set of contacts is identified for conversion into a people list, the set of contacts has been used a requisite amount. The next time the set of contacts is used, the set of contacts still will have been used the requisite amount. In one implementation, delaying the later suggestion that the set of contacts be converted into a people list may include removing from memory all previous uses of the set of contacts. In another implementation, delaying the later suggestion may include increasing the requisite amount of use of the set of contacts that triggers the suggestion to the user that the set of contacts be converted to a people list.
People lists also may be created automatically through integration from other applications. For example, the groups within a buddy list from an instant messaging application may be used to specify people lists within the central repository. Similarly, e-mail address lists stored within an e-mail application may be integrated into the central repository as people lists. After integration, the lists in the applications from which the people lists were created may be connected to the people lists such that any changes made to the people lists are automatically reflected in the applications, and vice versa. For example, any changes made to a group in a buddy list of an instant messaging application may be reflected in the corresponding people list, and vice versa. Options also may exist for importing people lists from the central repository into, for example, the buddy list, as new groups.
After creation, people lists may be shared with others. A copy of the people list to be shared is sent to each of the people with whom the list is to be shared. Whenever a change is made to the people list, the shared copies of the people list are updated to reflect the change. People lists may be changed through use of an interface that displays the members of the people lists contained within the central repository and enables the addition and deletion of identifiers from the people lists.
Once specified, people lists also may be used to address messages sent by the communications applications. When creating a message within a communications application, an interface for selecting people lists as recipients of the message may be displayed. The interface includes a list of available people lists and contacts to whom the message may be sent. Selecting the people lists or contacts in the lists addresses the message to the selected people lists or contacts. People lists also may be modified within the selection interface. People lists also may be suggested automatically as recipients of the message based on a determination that the identifiers included in the people list may be the intended recipients of the message.
Referring to FIG. 5, a selection interface 500 enables the selection of people lists as recipients of messages sent by multiple applications. Each of the applications displays the selection interface 500 to enable specification of the recipients of a message sent by the particular application. For example, an e-mail application accesses the selection interface 500 to allow the user to specify the recipients of an e-mail message. The selection interface 500 also may be used to create new and modify existing people lists. The new or modified people lists may be selected as recipients of the message for which the selection interface 500 was displayed.
The selection interface 500 includes a contact list 505 that includes the possible recipients of a message for which the selection interface 500 was displayed. The possible recipients may be single contacts or people lists that include multiple contacts. Each of the contacts or people lists is listed in the contact list 505 by a name 510. The name 510 may be the name of a single contact or the name of a people list. Beside each name 510 is an icon 515 that indicates what is referred to by the corresponding name 510. For example, a particular icon 515 may be placed next to the name of a people list, while a different icon may be placed next to the name of a single contact. The icons 515 allow the user of the selection interface 500 to visually distinguish between the types of contacts included in the contact list 515.
After a contact has been selected from the contact list 505, information about the selected contact is placed within the details text field 520. The details text field 520 displays the information that will be entered on the message for which the selection interface 500 was displayed. If a single contact is selected, then a single identifier of the selected contact is listed in the details text field 520. For example, in the illustrated selection interface 500, the single contact named “Leacock, Matt” has been selected, and the identifier “MattLeacock” is listed in the details text field 520. If a people list is selected, then identifiers of all of the contacts included in the people list are listed in the details text field 520. If an identifier or identifiers is missing for a selected contact or people list, the details text field 520 is left empty. If more than one contact or people list is selected from the contact list 505, then the details text field 520 is left empty.
Selecting a select button 525 after one or more contacts or people lists have been selected enters the identifiers of the selected contacts or people lists in the message. The application determines where the recipient information is located within the message. After to the select button 525 is selected, any selected names in the contact list 505 are deselected. Alternatively or additionally, pressing the enter key on the keyboard may enter the identifiers of the selected contacts of people lists in the message and deselect the selected names.
Selected contacts and people lists also may be edited using the selection interface 500. Selecting on an edit button 530 creates an interface for modifying a selected contact or people list. If a contact is selected, an interface for modifying the identifier associated with the contact is displayed. If a people list is selected, an interface for adding, deleting, or modifying identifiers in the selected people list is presented. If more than one contact or people list is selected, then a message indicating that only one contact or people list may be edited at a time is displayed.
Similarly, contacts and people lists may be created using a creation button 535. Pressing the creation button 535 displays an interface for creating a new contact or people list. In either case, a name may be entered for the new contact or people list. If a new contact is being specified, then a single identifier is entered on the interface to correspond to the entered name. If a people list is being specified, then multiple identifiers are entered on the interface. The new contact or people list is added to the contact list 505 after full specification in the interface for creating a new contact or people list.
In one exemplary implementation, selected contacts and people lists may be edited by mousing-over a particular contact or people list causing an interface to be presented for adding, deleting, or modifying identifiers.
The contact list 505 may be filtered to include only a subset of the available contacts or people lists using a filter selection box 540. The name of a category of contacts or people lists may be selected from the filter selection box 540. Only those contacts or people lists belonging to the category selected in the filter selection box 540 are included in the contact list 505. For example, in the illustrated selection interface 500, the default category “All” is selected in the filter selection box 540, so all of the available contacts are listed in the contact list 505. The listed contacts or people lists may then be selected as recipients of the message corresponding to the selection interface 500.
A user may search the contact list 505 using a search text field 545. Any contacts or people lists in the category selected in the filter selection box 540 with a name that matches the text entered into the search text field 545 is listed in the contact list 505. The listed contacts or people lists may then be selected as recipients of the message corresponding to the selection interface 500. After all recipients of the message have been selected and all changes to the set of contacts and people lists have been made, the selection interface 500 may be dismissed through use of a close button 550.
People lists may be acted upon in ways other than selection as recipients of messages created by applications. For example, people lists may be printed. When a people list is printed, the identifiers included in the people lists are printed.
The permissions of all contacts within a people list are automatically set to be the same, and setting permissions for a people list sets permissions for each of the contacts included in the people list. For example, all the contacts within a people list have the same level of access (i.e., read only or read and write) to an electronic journal to which the people list was given access. Moreover, when contacts are added to a people list, the permissions for the newly added contacts are set to be the same as the existing permissions of the other contacts included in the people list.
The central repository may store multiple people lists, and a particular identifier of a person may appear in multiple people lists stored within the central repository. The central repository also may include empty people lists that do not include any identifiers of people. However, a people list may not include another people list (i.e., nested people lists are not permitted). Limits may be placed on the maximum number of identifiers that may be placed within a single people list, as well as the maximum number of people lists that may be stored within the repository.
Referring to FIG. 6, a process 600 is performed to specify, share and use a people list. The process 600 enables the specification of a group of contacts to be used to address communications sent from multiple applications. Sharing the group enables multiple users to use the group of contacts to address communications sent from multiple applications.
The process 600 begins with the specification of a people list. An identifier of a contact is added to the people list (605). A check is made as to whether more contacts are to be added to the people list (610). If so, then an identifier of another contact is added to the people list (605). In this manner, an identifier for each of the contacts to be included in the people list is added to the people list. Once a determination is made that no more contacts are to be added to the group (610), the group is given a name (615), thus completing the specification of the people list.
After the people list has been specified, it may be used or shared. Branch 620 illustrates a sub-process for sharing a people list, while branch 625 illustrates a sub-process for using a people list. The sub-processes illustrated by branches 620 and 625 are not mutually exclusive in that both may occur. In addition, the sub-processes illustrated by branches 620 and 625 may be performed in any order. Moreover, the sub-processes illustrated by branches 620 and 625 may be repeated any number of times after the people list has been specified.
To share the people list, a sub-process illustrated by branch 620 is performed. A set of recipients with whom the people list is to be shared is chosen (630). A copy of the people list is sent to each of the recipients (635). Each of the recipients stores the people list and may then use the people list to address messages sent by multiple applications without having to specify the people list themselves. The people list may be modified by adding one or more contacts to the list, deleting one or more contacts from the list, or modifying the identifier of one or more of the contacts already contained in the list (640). Making changes to the people list locally causes the same changes to be made automatically to the copies of the people lists that are stored by the set of recipients. Each of the recipients optionally may be notified that each copy of the people list has been updated to reflect the changes made to the original copy of the people list (645). If one of the recipients makes changes to the people list, the changes also may be propagated to the other copies of the people list, including the original copy.
To use the people list, a sub-process illustrated by branch 625 is performed. A message is created using one of the applications (650). In order to specify the recipients of the message, an interface for selecting contacts or people lists, such as the selection interface 500 from FIG. 5, is accessed (655). The name of the people list is selected using the interface (660), and the identifiers corresponding to the selected people picker are used to address the message (665).
The identifiers corresponding to the people list may not be able to be used by the application to address the message. For example, the people list may include an instant messaging screen name as an identifier, which cannot be used to address an e-mail. In this case, an identifier that can be used by the application optionally may be entered for a contact in the list (670). A determination may be made as to whether the people list includes more identifiers that cannot be used to address the message sent by the application. (675). If so, an identifier that can be used by the application for another contact in the group is entered (670). In this way, all of the identifiers included in the people list that cannot be used by the application to address the message may be replaced with identifiers that may be used to address the message. Instead of prompting for usable identifiers, the application may simply omit the contacts included in the people list with an identifier that cannot be used and not send those contacts the message.
After the recipients of the message have been specified as the contacts included in the people list, the message is sent to those contacts (680). The choice of the members of the people list as the recipients of the message was independent of the application to send the message. The people list may be used to address a message sent by any application after a single specification.
Referring to FIG. 7, a passive people list specification process 700 may be used in an environment local to a user of a single application to examine communications sent from the single application. The process 700 may identify groups of contacts specified by the user of the single application from which a people list may be created. The process 700 may be executed on a client device, such as the requestor system 105 from FIG. 1 and may be included as part of the single application. Two copies of messages sent from the single application are made. One copy of each message is stored locally for later analysis, and another copy is forwarded to a host system, such as the provider system 110 from FIG. 1, for delivery (705). A determination is made as to whether more messages should be stored (710). For example, messages may be stored for a certain amount of time or until a certain number have been stored. If enough messages have not been stored, copies of other messages sent by the single application are stored locally (705) until a determination is made that enough messages have been stored (710). At that point, the set of stored messages is examined (715). The analysis of the stored messages attempts to identify one or more user specified sets of contacts from which a people list may be created (720).
A variety of criteria may be used to determine if a people list should be created out of a set of contacts grouped by a sender that have repeatedly received messages. For example, one criterion may dictate that a certain percentage of the total messages sent be addressed to the set of contacts before the sender-specified set of contacts is identified as a candidate for a people list. Alternatively, a certain number of messages may need to be sent to the set of recipients within a certain amount or shifting window of time before the set of contacts is made into a people list. Other criteria also may be used. In these cases, the sets of contacts from which a people list may be generated are created by the sender of the stored messages and are not created as a result of the analysis of the stored messages.
For example, consider that the single application is an e-mail application and that five of the one hundred stored e-mail messages are addressed to the same user specified group of contacts. The analysis of the stored e-mail messages may suggest that the set of contacts is converted into a people list. As another example, consider that the single application is a digital image sharing application and that ten of the two hundred stored digital images were shared with a particular group of contacts. The analysis may suggest that the particular group of contacts be converted into a people list.
As yet another example, consider that the single application is an electronic journal application and that a journal entry was sent to the same user specified group of contacts each day of the period in which the journal entries were stored. The analysis of the stored journal entries may suggest that the set of contacts is converted into a people list. As yet another example, consider that the single application is an instant messaging application and that an instant message was sent to a user specified group of contacts every five hours every day of the period in which the instant messages were stored. The analysis of the stored instant messages may suggest that the set of contacts is converted into a people list.
As another example, consider that the single application is a contact information sharing application and that an update to contact information was sent to the same user specified group of contacts five times during the two-week period in which the updates were stored. The analysis of the stored updates may suggest that the set of contacts is converted into a people list. As another example, consider that the single application is an alerting application and that an alert was sent to the same user specified group of contacts once a week during the period in which the updates were stored. The analysis of the stored alerts may suggest that the set of contacts is converted into a people list.
When a set of contacts is identified for conversion into a people list, the user is made able to use the set of contacts as a people list while using the single application to send messages (725). Enabling the user to use the set of contacts as a people list may include enabling the user to name the people list created from the set of contacts for easy access and use. Enabling the user to use the set of contacts as a people list also may include enabling the user simply to accept the suggestion that the set of contacts be converted into a people list. The user also may choose to reject the conversion of the identified set of contacts into a people list. In doing so, the user also may choose to delay the later suggestion that the identified set of contacts be converted into a people list. When a set of contacts is identified for conversion into a people list, the set of contacts has been used a requisite amount. The next time the set of contacts is used, the set of contacts still will have been used the requisite amount. In one implementation, delaying the later suggestion that the set of contacts be converted into a people list may include removing from memory all previous uses of the set of contacts. In another implementation, delaying the later suggestion may include increasing the requisite amount of use of the set of contacts.
Alternatively, local processes may be invoked to implement the features described with respect to the hosted implementations of FIGS. 4, 5, 6, and 7.
The described systems, methods, and techniques may be implemented in digital electronic circuitry, computer hardware, firmware, software, or in combinations of these elements. Apparatus embodying these techniques may include appropriate input and output devices, a computer processor, and a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor. A process embodying these techniques may be performed by a programmable processor executing a program of instructions to perform desired functions by operating on input data and generating appropriate output. The techniques may be implemented in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language may be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and Compact Disc Read-Only Memory (CD-ROM). Any of the foregoing may be supplemented by, or incorporated in, specially designed ASICs (application-specific integrated circuits).
It will be understood that various modifications may be made without departing from the spirit and scope of the claims. For example, advantageous results still could be achieved if steps of the disclosed techniques were performed in a different order and/or if components in the disclosed systems were combined in a different manner and/or replaced or supplemented by other components.
For example, with respect to the passive people list specification process 700 described above in FIG. 7, instead of storing a copy of a message for later analysis regarding the set of contacts, the process simply may store just the set of contacts for later analysis and not a copy of the entire message. As other sets of contacts from other messages are stored, then a comparison may be performed to identify repeat usage of the same set of contacts in a message to make a suggestion to the user whether a people list may be created for this set of contacts.
Furthermore, people lists may be created/suggested for specific aspects of a user environment or subsets of the sharing applications, or they may be globally created/suggested.
Accordingly, other implementations are within the scope of the following claims.

## Claims

1. A method comprising:
maintaining a contacts list that includes a plurality of contacts for a user of a first communication program;
determining one or more contacts from the plurality of contacts included in the contacts list are supported by a second communication program;
creating an additional contacts list that comprises the one or more contacts from the plurality of contacts that are determined as supported by the second communication program;
providing the additional contacts list to the second communication program;
recognizing, by at least one processor and based on detecting user input within the first communication program, a modification to the contacts list that modifies a contact supported by the second communication program;
modifying, by the at least one processor, the additional contacts list based on the recognized modification; and
providing the modified additional contacts list to the second communication program.

2. The method of claim 1, wherein modifying the additional contacts list comprises adding or removing the contact supported by the second communication program to the additional contact list.

3. The method of claim 1, wherein recognizing the modification to the contacts list comprises detecting user input within the first communication program that updates contact information associated with the contact supported by the second communication program.

4. The method of claim 1, wherein recognizing the modification to the contacts list comprises detecting user input within the first communication program that groups together a plurality of contacts within the contacts list.

5. The method of claim 1, wherein the first communication program is associated with a first electronic device and the second communication program is associated with a second electronic device.

6. The method of claim 1, wherein the first communication program and the second communication program are associated with a first electronic device.

7. The method of claim 1, further comprising maintaining the contacts list in a central repository accessible to the first communication program and the second communication program.

8. The method of claim 1, wherein the first communication program is associated with one of an email program, an instant messaging program, a digital image sharing program, a contact information sharing program, or a program for sending alerts and reminders.

9. The method of claim 1, wherein the first communication program and the second communication program are associated with instant messaging programs.

10. The method of claim 1, further comprising:
recognizing user input modifying a second contact included in the additional contacts list in the second communication program; and
updating the contacts list within the first communication program to reflect the recognized modified second contact.

11. The method of claim 1, wherein each contact of the plurality of contacts included in the contacts list is identified using an identifier.

12. The method of claim 1, wherein the first communication program is associated with a program located on a mobile device.

13. A non-transitory computer-readable storage medium storing instructions that, when executed by at least one processor, cause a computer system to:
maintain a contacts list that includes a plurality of contacts for a user of a first communication program;
determine one or more contacts from the plurality of contacts included in the contacts list are supported by a second communication program;
create an additional contacts list that comprises the one or more contacts from the plurality of contacts that are determined as supported by the second communication program;
provide the additional contacts list to the second communication program;
recognize, based on detecting user input within the first communication program, a modification to the contacts list that modifies a contact supported by the second communication program;
modify the additional contacts list based on the recognized modification; and
provide the modified additional contacts list to the second communication program.

14. The computer-readable storage medium of claim 13, wherein the instructions, when executed by the at least one processor, cause the computer system to modify the additional contacts list comprises adding or removing the contact supported by the second communication program to the additional contact list.

15. The computer-readable storage medium of claim 13, wherein the instructions, when executed by the at least one processor, cause the computer system to recognize the modification to the contacts list by detecting user input within the first communication program that updates contact information associated with the contact supported by the second communication program.

16. The computer-readable storage medium of claim 13, wherein the instructions, when executed by the at least one processor, cause the computer system to recognize the modification to the contacts list by detecting user input within the first communication program that groups together a plurality of contacts within the contacts list.

17. An apparatus comprising:
at least one processor; and
at least one non-transitory computer readable storage medium storing instructions that, when executed by the at least one processor, cause the apparatus to:
maintain a contacts list that includes a plurality of contacts for a user of a first communication program;
determine one or more contacts from the plurality of contacts included in the contacts list are supported by a second communication program;
create an additional contacts list that comprises the one or more contacts from the plurality of contacts that are determined as supported by the second communication program;
provide the additional contacts list to the second communication program;
recognize, based on detecting user input within the first communication program, a modification to the contacts list that modifies a contact supported by the second communication program;
modify the additional contacts list based on the recognized modification; and
provide the modified additional contacts list to the second communication program.

18. The apparatus of claim 17, wherein the instructions, when executed by the at least one processor, cause the apparatus to modify the additional contacts list comprises adding or removing the contact supported by the second communication program to the additional contact list.

19. The apparatus of claim 17, wherein the instructions, when executed by the at least one processor, cause the apparatus to recognize the modification to the contacts list by detecting user input within the first communication program that updates contact information associated with the contact supported by the second communication program.

20. The apparatus of claim 17, wherein the instructions, when executed by the at least one processor, cause the apparatus to recognize the modification to the contacts list by detecting user input within the first communication program that groups together a plurality of contacts within the contacts list.