A more complete understanding of an example embodiment may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.
The following detailed description is merely illustrative in nature and is not intended to limit the embodiments described herein or the application and uses of such embodiments.
Example embodiments may be described herein in terms of functional and/or logical block components and various processing steps. It should be appreciated that such block components may be realized by any number of hardware, software, and/or firmware components configured to perform the specified functions. For example, an embodiment may employ various integrated circuit components, e.g., memory elements, digital signal processing elements, logic elements, look-up tables, or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices. In addition, those skilled in the art will appreciate that practical embodiments may be practiced in conjunction with any number of data transmission protocols and that the system described herein is merely one example embodiment.
For the sake of brevity, conventional techniques related to computer devices, collaborative communication applications, data transmission, network control, computer operating systems, graphical user interface controls, and other functional aspects of the systems (and the individual operating components of the systems) may not be described in detail herein. Furthermore, the connecting lines shown in the various figures contained herein are intended to represent example functional relationships and/or physical couplings between the various elements. It should be noted that many alternative or additional functional relationships or physical connections may be present in an example embodiment.
The following description may refer to elements or nodes or features being “connected” or “coupled” together. As used herein, unless expressly stated otherwise, “connected” means that one element/node/feature is directly joined to (or directly communicates with) another element/node/feature, and not necessarily mechanically. Likewise, unless expressly stated otherwise, “coupled” means that one element/node/feature is directly or indirectly joined to (or directly or indirectly communicates with) another element/node/feature, and not necessarily mechanically. Thus, although the schematics shown in
As used herein, “user identity information” is data or information associated with a user's name, appearance, personality, presence, status, activity, location, etc., particularly with respect to an application running on one or more client devices. One person may have more than one identity (for example, corresponding to multiple network usernames) and, therefore, more than one set of user identity information. Such user identity information can be utilized to populate a graphical element that is rendered in connection with one or more applications running on a client device. For example, user identity information may include, without limitation: a display name; a personal status or activity message; a display image, picture, or avatar; a real-time user presence or status indicator; and/or other information related to the user. In the example embodiments described herein, the remote network storage of the real-time user identity information allows a user to roam from application to application, location to location, machine to machine, and device to device, while preserving a consistently displayed user representation. In example embodiments, network updating of user identity information and client device processing of user identity information can be achieved without the use of peer-to-peer technologies.
Server architecture 102 may include one or more computing devices having the processing logic and functional capacities described in more detail below. Briefly, server architecture 102 maintains user identity information, manages access to the user identity information by client devices 104, and communicates with user devices 104 to update the user identity information in real-time. The operation of an example server architecture 102 is described in more detail below.
Data communication network 106 may utilize any suitable data communication, telecommunication, wireless, wired/cabled, or other technology. In practical deployments, data communication network 106 can be realized using any number of devices, systems, or components, and data communication network 106 may utilize any number of communication links. For example, data communication network 106 may include or be realized as a LAN, a WAN, a WLAN, the Internet, a cellular service network, a paging service network, a PBX, or the like. In practice, network server architecture 102 may be coupled to data communication network 106 using any suitable communication link, which may be a wired link, a wireless link, or a link that combines wired and wireless technologies. Each client device 104 may also be coupled to data communication network 106 using a wired communication link, a wireless communication link, or a communication link that combines wired and wireless technologies.
Each client device 104 may be a computing device having a particular configuration and platform, and each client device 104 can host one or more collaborative applications having real-time features. For example, network environment 100 may include, without limitation, any number of the following client devices 104: a personal computer 104a; a mobile telephone 104b; a portable computer 104c, such as a personal digital assistant, a pocket personal computer, a tablet computer, or a laptop computer; a video game device, such as a portable video game device or a video game console; or the like. The particular physical configuration of a client device 104, the applications hosted by a client device 104, and the manner in which a client device 104 communicates with network server architecture 102 can be selected to suit the needs of the individual user and/or to accommodate the particular system deployment. A client device 104 is generally configured to access or receive real-time user identity information maintained by network server architecture 102, process that information, and present that information for a collaborative application of the client device 104. The information may be presented by generating a graphical representation of the information for rendering at the client device 104. In example embodiments, the presentation of the user identity information is performed in a consistent manner across different applications and across different client device types. The operation of an example client device 104 is described in more detail below.
Computing device 200 and certain aspects of the example embodiments may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and/or other elements that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
Computing device 200 typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by computing device 200 and/or by applications executed by computing device 200. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile, nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computing device 200. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
Referring again to
Depending upon the particular embodiment, processing unit 202 may be implemented or performed with a general purpose processor, a content addressable memory, a digital signal processor, an application specific integrated circuit, a field programmable gate array, any suitable programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof, designed to perform the functions described herein. A processor may be realized as a microprocessor, a controller, a microcontroller, or a state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a digital signal processor and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a digital signal processor core, or any other such configuration.
The steps of a method or algorithm described in connection with the embodiments disclosed herein may be embodied in hardware, in firmware, in a software module executed by a processor, or in any practical combination thereof. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. In this regard, memory 204 can be coupled to processing unit 202 such that processing unit 202 can read information from, and write information to, memory 204. In the alternative, memory 204 may be integral to processing unit 202. As an example, processing unit 202 and memory 204 may reside in an ASIC.
Computing device 200 may also contain communications connection(s) 212 that allow the system to communicate with other devices. Communications connection(s) 212 may be associated with the handling of communication media as defined above. As explained in more detail below, communication connection(s) 212 may be utilized to facilitate the exchange of user presence information, real-time user identity information, update data indicative of a change in current user identity status, and/or other data, information, or signals between computing device 200 and a data communication network.
Computing device 200 may also include or communicate with input device(s) 214 such as a keyboard, a mouse or other cursor pointing device, a pen, a voice input device, a touch input device, a webcam device, a microphone, etc. Although the example embodiment described herein utilizes a mouse device, embodiments can be equivalently configured to support a trackball device, a joystick device, a touchpad device, or any type of general purpose pointing device. Computing device 200 may also include or communicate with output device(s) 216 such as a display monitor, speakers, a printer, or the like. All of these devices are well known in the art and need not be discussed at length here.
For this example embodiment, first real-time collaborative application 304 and second real-time collaborative application 306 are two different applications installed on, hosted by, or deployed on client device 300. In this regard, a real-time collaborative communication application may be installed on client device 300, or it may be accessed remotely by client device 300 for purposes of virtual presentation to the user of client device 300. In this example, the current user of client device 300 is considered the “first person” user of a collaborative application, and “third person” users of a collaborative application are potentially able to communicate or otherwise interact in real-time with the first person user. Such real-time interaction may be carried out using any suitable technologies, techniques, or protocols. In practice, a collaborative application may be an instant messaging application, an email application, a telecommunication application, a calendar application, a scheduling application, an interactive video game application, an online chat room application, an online marketplace, a shared or personal blog/website/webspace, an online review system, or the like.
In connection with the operation of first real-time collaborative application 304, client device 300 can generate a first graphical representation of real-time user identity information for rendering on display element 310. Examples of such graphical displays are described below with reference to
The collaborative applications supported by client device 300 may receive, manage, process, or otherwise handle real-time user identity information for users of the collaborative applications. The user identity information may be updated in response to changes in user availability status, in response to user interaction with the collaborative applications and/or with the graphical representations of the user identity information, or in response to other criteria. For example, the user identity information may include user presence information that indicates whether a given user of a collaborative application is currently: available; unavailable; online; offline; on vacation; out of the office; in a meeting; etc. The number of different user presence status types and the specific labels or descriptors for the user presence status types may be determined by the particular collaborative application. In one example embodiment, user presence information is shared by multiple applications such that a change in user status initiated by collaborative application 304 is reflected in collaborative application 306. Such an embodiment ensures a consistent user presence status across multiple platforms and domains.
Identity information GUI control 302 is a logical element that may be incorporated into the operating system of client device 300. In alternate embodiments, identity information GUI control 302 may be incorporated into first real-time collaborative application 304 and/or into second real-time collaborative application 306. Identity information GUI control 302 is suitably configured to obtain user identity information and process that information in a manner that results in a graphical representation of the information on client device 300. In practice, the user identity information may be processed differently depending upon the client device type (e.g., personal computer, cellular telephone, video game console) and depending upon the functionality of the collaborative application (e.g., email, instant messenger, chat room, video game). In this example, collaborative application 304 and collaborative application 306 may be configured to accommodate the graphical element controlled by identity information GUI control 302. In other words, collaborative application 304 and collaborative application 306 may reserve some GUI space for a respective graphical element such that identity information GUI control 302 can populate the graphical elements.
User interface 308 may be suitably configured to enable the user of client device 300 to interact with the real-time collaborative applications and the graphical representations of the user identity information. In example embodiments, user interface 308 may include a keyboard, a cursor pointing device, and/or any of the input devices 214 mentioned above (see
Memory element 408 is configured and controlled to maintain real-time user identity information for users of a service that supports at least one collaborative application that can be hosted by client devices that communicate with network server architecture 400. In this context, the service may be a network-based service that enables users to log in or authenticate themselves for access to certain features, benefits, applications, data, etc., which may be provided by the service. For example, the service may be related to one or more of the following, without limitation: an online communication community; an online interactive video game environment; a real-time instant messaging application; an Internet service provider or portal that gives access to multiple applications, features, or services to authenticated users; or any network-based community driven application. Network server architecture 400 is suitably configured to create, maintain, and update the user identity information in memory element 408 such that real-time changes to the user identity information are made available to any number of users of the service. In practice, memory element 408 may include a list of authorized users of the service, and corresponding data fields for the identity information for each authorized user. Centralized maintenance of the user identity information in this manner makes it easy for a system embodiment to roam a consistent graphical representation of each user's identity information across different device platforms and/or across different client applications.
Network server architecture 400 may include an identity information manager 406 that manages, controls, and processes the current user identity information for the users of the network service and/or for the users of the various client-based collaborative applications. In example embodiments, identity information manager 406 represents processing logic that facilitates updating of the user identity information. In addition, identity information manager 406 may be configured to manage and provide access to the real-time user identity information to at least one client device for graphical rendering of the real-time user identity information in the context of at least one collaborative application hosted by the at least one client device. Thus, identity information manager 406 may be responsible for handling the creation of new user identity information, updating existing user identity information, and deleting user identity information. Moreover, identity information manager 406 may be responsible for other data management, control, and configuration functions described herein.
Communication interface 404 is configured to communicate with one or more remote computing devices, such as client devices 104 (see
User authentication module 402, which may be realized as hardware, software, and/or firmware, is suitably configured to manage user authentication to the service or services provided or facilitated by network server architecture 400. User authentication module 402 may also be configured to manage user authentication to individual applications provided or facilitated by network service architecture 400. In example embodiments, user authentication module 402 may be incorporated into a general security module, which performs any number of the following functions, without limitation: establishment of secure communication channels with network server architecture 400; management of usernames and passwords; data encryption/decryption; or the like.
Network server architecture 502 maintains user identity information 508, which is accessible to both client devices. This example assumes that the same user identity (typically corresponding to one username and one password) is able to access network server architecture 502 from both client devices. Thus, the same user identity information 508 for this particular user can be shared by both client devices, whether or not the user is concurrently using both client devices.
In this example, first client device 504 includes an identity information GUI control 510 (as described above for client device 300) and at least one real-time collaborative application 512. The application 512 cooperates with identity information GUI control 510 to obtain user identity information 508 from network server architecture 502, and to present a graphical representation of user identity information 508 at first client device 504. As mentioned above, identity information GUI control 510 is configured in accordance with the specific hardware, software, firmware, and/or operating characteristics of first client device 504. In this example, second client device 506 includes an identity information GUI control 514 and at least one real-time collaborative application 516. The application 516, which may or may not provide the same functionality as application 512, cooperates with identity information GUI control 514 to obtain user identity information 508 from network server architecture 502, and to present a graphical representation of the same user identity information 508 at second client device 506. In this example embodiment, the displayed characteristics, format, and appearance of user identity information 508 are identical (or nearly identical) on both client devices. In other words, the display of user identity information 508 consistently appears on both client devices. This provides an association of the user's experience with a single displayed identity and status, and a consistent representation of the user's self that can be separated from any particular computing device.
The graphical representation of the user identity information can be displayed in any desired location on a client device in the context of an application running on that client device. This graphical representation may be provided in an “identity area” on the display element of the client device. In one example embodiment, the identity area is displayed throughout the user experience (i.e., regardless of the application or applications that are currently running, and regardless of the content that is currently displayed on the client device) as long as the user remains logged in to the service. For example, the identity area may be displayed in a corner of each page or screen, thus providing the user with a “mirror image” of how she is being represented to others across the network service.
Display name 702 can be any character string that identifies the user identity. If the user has not yet established a display name, then the field for display name 702 may be left blank or it may be populated with a prompt such as “Add Your Name.” The prompt may be realized as an active link that enables the user to enter a display name character string via an inline text entry field. An inline text entry field may also be utilized to enable editing of display name 702. As mentioned above, the user-entered data is transferred to the network server architecture for storage and maintenance.
Personal message 704 can be any character string that can be entered and edited by the user. Identity area 700 may be configured to display different personal messages corresponding to different user presence status. For example, if the status of the user is “Busy,” then personal message 704 may read “Please try again later,” and if the status of the user is “On Vacation,” then personal message 704 may read “Wish you were here.” If the user has not yet established a personal message, then the field for personal message 704 may be left blank or it may be populated with a prompt such as “Type Your Personal Message.” The prompt may be realized as an active link that enables the user to enter a character string via an inline text entry field. An inline text entry field may also be utilized to enable editing of personal message 704. As mentioned above, the user-entered data is transferred to the network server architecture for storage and maintenance.
Personal message 704 (or another field in identity area 700) may include dynamic user status information that corresponds to a dynamic condition or state of the client device. For example, the dynamic status information may indicate the title of a song, movie, or video clip that is currently being played (or one that has been recently played), it may indicate the name of a web page that is currently being viewed (or one that has been recently viewed), or the like.
Presence status indicator 706 displays the current real-time status of the user, as maintained by the network server architecture. For example, presence status indicator 706 may indicate that the user is currently online as depicted in
Sign in/out control 708 may be realized as a dropdown menu and/or an active link that allows the user to sign in/out of the network service. Sign in/out control 708 depicted in
Display image 710 may include a picture of the user, an avatar, or any graphic. Different display images may be displayed, depending upon the current user presence status. In one example embodiment, the user is allowed to add, select, or change the display image 710, using a menu, a link, or any suitable control mechanism for identity area 700. As mentioned above, changes to display image 710 can be transferred to the network server architecture for storage and maintenance.
An identity area as described above can be roamed for synchronized rendering on different devices and different collaborative applications using a network server architecture as a centralized location for the user identity information.
The various tasks performed in connection with information roaming process 800 and information roaming process 900 may be performed by software, hardware, firmware, or any combination thereof. For illustrative purposes, the following descriptions of these processes may refer to elements mentioned above in connection with
Referring to
Depending upon the system configuration and settings, an identity area can be displayed (concurrently or otherwise) in connection with multiple client devices. For simplicity, process 800 depicts a scenario where two client devices display a consistent identity area. Before providing access to the real-time user identity information to a first client device, process 800 may authenticate a user of the first client device. If the user is authenticated on the first client device (query task 804), then process 800 may proceed to a task 806 to provide access to the user identity information to the first client device. Otherwise, process 800 may exit or be re-entered at an appropriate point, such as task 802. In example embodiments, process 800 performs a network authentication routine to provide access to the user identity information maintained at the network level. Such access is given to enable the presentation of the identity area on the first client device in the context of one or more collaborative applications. In this example, the user identity information is transmitted (task 808) from the network server architecture to the first client device for appropriate handling and processing. In alternate embodiments, the user identity information may be transmitted from the network server architecture to the first client device in conjunction with an HTML or other file.
Eventually the first client device will generate (task 810) a first graphical representation of the user identity information (i.e., a first identity area). The first identity area is therefore rendered in response to the real-time user identity information maintained by the network server architecture. The user of the first client device may be able to modify, add, delete, update, or otherwise change the current user identity information via, for example, one or more of the mechanisms described above in the context of
The right “branch” depicted in
Referring to
Depending upon the system configuration and settings, an identity area can be displayed (concurrently or otherwise) in connection with multiple applications on a single client device, where those applications are supported by the particular network service. For simplicity, information roaming process 900 depicts a scenario where one client device supports a consistent identity area across two applications. Before providing access to the real-time user identity information, process 900 may authenticate a user of the first application. If the user is authenticated for the first application (query task 904), then process 900 may proceed to a task 906 to provide access to the user identity information for the first application. Otherwise, process 900 may exit or be re-entered at an appropriate point, such as task 902. In example embodiments, process 900 provides authorized access to the user identity information maintained at the network level to enable the presentation of the identity area on the client device in the context of the first application. In this example, the user identity information is transmitted (task 908) from the network server architecture to the client device for appropriate handling and processing. In alternate embodiments, the user identity information may be transmitted from the network server architecture to the first client device in conjunction with an HTML or other file.
Eventually the client device will generate (task 910) a first graphical representation of the user identity information for the first application. The user of the first application may be able to modify, add, delete, update, or otherwise change the current user identity information via, for example, one or more of the mechanisms described above in the context of
The right “branch” depicted in
While at least one example embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the example embodiment or embodiments described herein are not intended to limit the scope, applicability, or configuration of the systems, methods, or devices in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the described embodiment or embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope defined by the claims, which includes known equivalents and foreseeable equivalents at the time of filing this patent application.