U.S. patent application number 13/527285 was filed with the patent office on 2012-10-25 for application-specific group listing.
This patent application is currently assigned to APPLE INC.. Invention is credited to Michael Stochosky.
Application Number | 20120272163 13/527285 |
Document ID | / |
Family ID | 46272988 |
Filed Date | 2012-10-25 |
United States Patent
Application |
20120272163 |
Kind Code |
A1 |
Stochosky; Michael |
October 25, 2012 |
Application-Specific Group Listing
Abstract
A method, apparatus, and system for providing active contents
between applications activated by a plurality of computer systems
are provided. A list of one or more remote users is created. A
determination is made whether a first application and a second
application are being executed by the at least one or more remote
users. The list is updated in response to determining a change in a
status of the second application being executed by the one or more
remote users using at least one communications feature associated
with the first application.
Inventors: |
Stochosky; Michael; (San
Francisco, CA) |
Assignee: |
APPLE INC.
Cupertino
CA
|
Family ID: |
46272988 |
Appl. No.: |
13/527285 |
Filed: |
June 19, 2012 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10840783 |
May 6, 2004 |
8209376 |
|
|
13527285 |
|
|
|
|
Current U.S.
Class: |
715/753 |
Current CPC
Class: |
G06F 9/54 20130101; H04L
67/10 20130101 |
Class at
Publication: |
715/753 |
International
Class: |
G06F 3/01 20060101
G06F003/01; G06F 15/16 20060101 G06F015/16 |
Claims
1.-45. (canceled)
46. A method, comprising: creating a first list of one or more
remote users; determining whether a first application and a second
application are being executed by the at least one or more remote
users; creating a second list of the one or more remote users based
at least upon the second application; and updating the second list
in response to determining a change in a status of said second
application being executed by the one or more remote users using at
least one communications feature associated with said first
application.
47. The method of claim 46, wherein determining whether said first
application is being executed further comprises determining whether
an instant messaging application is being executed.
48. The method of claim 46, wherein determining whether said second
application is being executed further comprises determining whether
at least one of a word processing application, a graphics
application, a photo-editing application, a game application, a
database application, a presentation application, an organizer
application, and a drawing application, is being executed.
49. The method of claim 46, wherein creating at least one of the
first list or the second list of one or more remote users further
comprises creating a buddy list of one or more remote users logged
onto a computer network comprising at least one of a sever centric
system or a peer to peer system.
50. The method of claim 46, wherein determining whether said first
and second applications are being executed further comprises
providing communications between said second application associated
with a first user and said second application associated with a
second user through said first application.
51. The method of claim 50, wherein determining whether said first
and second applications are being executed further comprises
informing said first user of a status associated with said second
application associated with said second user.
52. The method of claim 50, wherein providing communications
between said second application associated with said first user and
said second application associated with said second user through
said first application further comprises providing said
communications through an instant messaging program.
53. The method of claim 46, wherein updating said second list in
response to determining said change in said status of one of said
second application being executed by the one or more remote users
further comprises updating a buddy list associated with an instant
messaging program.
54. The method of claim 53, wherein updating said second list in
response to determining said change in said status of said second
application being executed by the one or more remote users further
comprises indicating at least one of an activation, deactivation,
exit, and termination of said application, on said buddy list.
55. The method of claim 50, further comprising: determining if an
activation of said first application by said first user is to be
published; informing said second user of said activation of said
first application by said first user in response to said
determination that said activation of said application is to be
published; monitoring for data relating to said activation of said
second application by said second user, said second application
being similar to said first application; updating said second list
based upon said activation of at least one of said first and second
applications by at least one of said first user and said second
user; and providing communications between said first user and said
second user in the context of said first and second applications
through an instant messaging program.
56. The method of claim 55, wherein determining if said activation
of said first application by said first user is to be published
further comprises determining if said activation is to be published
based upon at least one of a predetermined setting in said instant
messaging program or a predetermined setting within said
application.
57. The method of claim 55, wherein providing communications
between said first user and said second user in the context of said
application through an instant messaging program further comprising
providing communications relating to an active content relating to
said application, between said first and second users.
58. A computer readable program storage device encoded with
instructions that, when executed by a processing device, perform a
method, the method comprising: creating a first list of one or more
remote users; determining whether a first application and a second
application are being executed by the at least one or more remote
users; creating a second list of the one or more remote users based
at least upon the second application; and updating the second list
in response to determining a change in a status of said second
application being executed by the one or more remote users using at
least one communications feature associated with said first
application.
59. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 58, wherein determining whether said first application is
being executed further comprises determining whether an instant
messaging application is being executed.
60. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 58, wherein determining whether said second application is
being executed further comprises determining whether at least one
of a word processing application, a graphics application, a
photo-editing application, a game application, a database
application, a presentation application, an organizer application,
and a drawing application, is being executed.
61. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 58, wherein creating at least one of the first list or the
second list of one or more remote users further comprises creating
a buddy list of one or more remote users logged onto a computer
network comprising at least one of a sever centric system or a peer
to peer system.
62. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 60, wherein determining whether said first and second
applications are being executed further comprises providing
communications between said second application associated with a
first user and said second application associated with a second
user through said first application.
63. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 62, wherein determining whether said first and second
applications are being executed further comprises informing said
first user of a status associated with said second application
associated with said second user.
64. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 62, wherein providing communications between said second
application associated with said first user and said second
application associated with said second user through said first
application further comprises providing said communications through
an instant messaging program.
65. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 60, wherein updating said second list in response to
determining said change in said status of one of said second
application being executed by the one or more remote users further
comprises updating a buddy list associated with an instant
messaging program.
66. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 65, wherein updating said second list in response to
determining said change in said status of said second application
being executed by the one or more remote users further comprises
indicating at least one of an activation, deactivation, exit, and
termination of said application, on said buddy list.
67. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 62, further comprising: determining if an activation of
said first application by said first user is to be published;
informing said second user of said activation of said first
application by said first user in response to said determination
that said activation of said application is to be published;
monitoring for data relating to said activation of said second
application by said second user, said second application being
similar to said first application; updating said second list based
upon said activation of at least one of said first and second
applications by at least one of said first user and said second
user; and providing communications between said first user and said
second user in the context of said first and second applications
through an instant messaging program.
68. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 67, wherein determining if said activation of said first
application by said first user is to be published further comprises
determining if said activation is to be published based upon at
least one of a predetermined setting in said instant messaging
program or a predetermined setting within said application.
69. The computer readable program storage device encoded with
instructions that, when executed by a computer, perform the method
of claim 67, wherein providing communications between said first
user and said second user in the context of said application
through an instant messaging program further comprising providing
communications relating to an active content relating to said
application, between said first and second users.
70. An apparatus, comprising: a storage unit for storing a list of
one or more remote users; a determination unit for determining
whether a first application and a second application are being
executed by the at least one or more remote users; a communication
unit for transmitting data between the one or more remote users;
and an updating unit for updating the list in response to
determining a change in a status of said second application being
executed by the one or more remote users using at least one
communications feature associated with said first application.
71. The apparatus of claim 70, wherein said storage unit, said
determination unit, said communication unit and said updating unit
comprise a server computer.
72. The apparatus of claim 71, wherein said server computer is part
of a network system.
73. The apparatus of claim 70, wherein said communication unit is
adapted to transmitting data between two or more remote users.
74. The apparatus of claim 73, wherein said communication unit is
adapted to transmitting data between said two or more remote users
using an instant messaging application.
75. The apparatus of claim 70, wherein said communication unit is
adapted to transmitting data between said one or more remote users
in at least one of real-time or near real-time.
Description
BACKGROUND OF THE INVENTION
[0001] 1. Field of the Invention
[0002] This invention relates generally to a user interface for
sharing content, and, more particularly, to a method, apparatus and
system for providing utilization of an intermediary module to share
content relating to a particular application.
[0003] 2. Description of the Related Art
[0004] Networks, such as the Internet, intranets, or other private
or public networks, are ubiquitous. In fact, many computers are
connected to one or more networks at the same time. For example, a
business may have hundreds or even thousands of computers coupled
to its own private network, which was, at least initially, used
primarily for storage and exchange of computer files. At least some
of these same business computers may also be coupled to the
internet. Further, with the development of wireless devices, ad hoc
networks may also be formed with properly configured portable
devices. Even telephonic devices, such as cellular phones, pagers
and the like, may be coupled to one or more of these networks.
Small businesses and homes are also often connected in similar
arrangements.
[0005] All of this connectivity has naturally led to communications
between various users over these networks. For example, electronic
mail (e-mail), because of its usefulness, is now commonplace.
E-mail is now widely used by businesses and individuals, and in at
least some instances has replaced more traditional forms of
communications, such as mailed letters, facsimiles, telexes, and
the like. However, e-mail has proven to be somewhat awkward when
used to carry on an ongoing interaction.
[0006] Instant messaging, on the other hand, allows two or more
users connected through these networks to carry on an interactive
conversation. Exemplary instant messaging systems include Apple
iChat.RTM., AOL Instant Messenger.RTM., Microsoft MSN
Messenger.RTM., Yahoo.RTM. and the like. Typically, two or more
users type in messages or select icons, which they send to one
another. The receiving party(ies) may immediately respond with an
appropriate message or icon. These instant messages are commonly
displayed on a participant's monitor in serial fashion, usually
scrolling the user's screen from top to bottom.
[0007] Each user typically maintains a listing of other people or
parties with whom they routinely communicate. Various instant
messaging systems use different terminology to identify these other
parties, but commonly they are referred to as users, contacts,
buddies, or the like. The buddies list allows the user to initiate
a conversation with a person on the list by simply selecting them
from the list. Additionally, the user can readily determine which
of his/her buddies are available by checking a status flag. For
example, the listing can be configured to display the status of
each buddy. Thus, when a buddy is on-line or available to receive
an instant message his/her status is indicated as being on-line or
available.
[0008] Among the problems associated with the state of the art
includes the fact that there is a lack of ability among various
users to interact efficiently in the context of an application.
Generally, in order to share active contents of a particular
application, the user generally has to terminate the activation of
an application and separately send various contents to another user
who may be on the buddy list of the first user. For example, if a
first user is executing a first application, a second user who may
be on the buddy list of the first user generally cannot efficiently
receive or interact with the first application being executed by
the first user. Generally, applications executed by various users
are standalone type applications where interactivity between
various users in a real-time fashion is generally not possible.
[0009] Since various applications are standalone entities,
communicating using another module such as instant messaging or
e-mailing features, may require actually moving from one platform
to another on a multi-tasking-type computer. This requires leaving
one application to be able to communicate using another
application. For example, one user may have an instant messaging
application running concurrently with various other applications,
such as word processors, graphics applications, multi-media
applications, and the like. In order to communicate with another
user on the buddy list, a user would have to leave a particular
active application and enter a communications application, such as
an email application. In other words, the user would have to leave
particular active applications (e.g., word processing application,
graphics application, multi-media application, etc.) and enter the
communications application in order to perform communications
described above. Again, this would compromise the real-time
interaction between various users within the context of a
particular application.
[0010] Furthermore, in order to provide for access of active
applications between various users, developers of various
applications would have to build client server functionality for
each application to provide a collaborative embodiment.
Additionally, in order to provide the ability to share content and
other aspects of particular applications among various users, a
significant amount of work to build connectivity relationships,
such as peer-to-peer relationships between various environments,
would likely be required. This would call for generating a new
class of interaction between various users instead of the
traditional client/server relationship.
[0011] E-mailing various portions of an application for sharing
with another user would be difficult to implement in real-time.
Generally, a user may have to close a particular application,
extract a file, and e-mail that file to a second user, wherein the
second user will have to open that particular file after leaving an
active application to do so. Meanwhile, the real-time interaction
would be lost in such a situation. Additionally, various
applications are developed such that e-mailing various files
associated with these applications may be difficult. One such
example would be multimedia files because, generally, multimedia
files tend to be large size files. E-mailing such large files may
be problematic among various users.
[0012] The present invention is directed to overcoming or at least
reducing one or more of the problems set forth above.
SUMMARY OF THE INVENTION
[0013] In one aspect of the present invention, a method is provided
for providing active contents between applications activated by a
plurality of computer systems. A list of one or more remote users
is created. A determination is made whether a first application and
a second application are being executed by the at least one or more
remote users. The list is updated in response to determining a
change in a status of the second application being executed by the
one or more remote users using at least one communications feature
associated with the first application.
[0014] In another aspect of the present invention, a system is
provided for providing active contents between applications
activated by a plurality of computer systems. The system of the
present invention includes a first terminal that is capable of
activating a first application, a second terminal capable of
activating a second application, and a network system to
operatively interconnect the first terminal to the second terminal.
The system also includes an application interface that is adapted
to create a list of users relating to the first and second
terminals. The application interface is capable of determining
whether at least one of the first and second applications is being
executed by at least one of the first and second terminals. The
application interface is also capable of updating the list in
response to determining a change in a status of at least one of the
first and second applications being executed by at least one of the
first and second terminals.
[0015] In still another aspect of the present invention, a chat
module is provided for providing active contents between
applications activated by a plurality of computer systems. The chat
module includes a communications unit to provide for log in of a
first remote terminal into a network system and provide for
communications with a second remote terminal operatively coupled to
the network system. The chat module also includes a graphical user
interface (GUI) module operatively coupled to the communications
unit. The GUI module is adapted to receive a command to provide
active content relating to at least one of a first application
being executed by the first remote terminal and a second
application being executed by the second remote terminal. The chat
module is capable of creating a list of users relating to the first
and second remote terminals. The chat module is also capable of
determining whether at least one of the first and second
applications are being executed by at least one of the first and
second remote terminals. The chat module is also capable of
updating the list in response to determining a change in a status
of at least one of the first and second applications being executed
by at least one of the first and second remote terminals.
[0016] In yet another aspect of the present invention, a computer
readable program storage device encoded with instructions is
provided for providing active contents between applications
activated by a plurality of computer systems. The computer readable
program storage device encoded with instructions that, when
executed by a computer, performs a method, which comprises:
creating a list of one or more remote users; determining whether a
first application and a second application are being executed by
the at least one or more remote users; and updating the list in
response to determining a change in a status of the second
application being executed by the one or more remote users using at
least one communications feature associated with the first
application.
BRIEF DESCRIPTION OF THE DRAWINGS
[0017] The invention may be understood by reference to the
following description taken in conjunction with the accompanying
drawings, in which like reference numerals identify like elements,
and in which:
[0018] FIG. 1 illustrates a stylized computer network system, in
accordance with one illustrative embodiment of the present
invention;
[0019] FIG. 2 illustrates a client/server network system, in
accordance with one illustrative embodiment of the present
invention;
[0020] FIG. 3A illustrates a more detailed block diagram
illustration of a first and second users associated with the
client/server network system, in accordance with one illustrative
embodiment of the present invention;
[0021] FIG. 3B illustrates an alternative embodiment of the first
and second users associated with the client/server network system
of FIG. 3A;
[0022] FIG. 4 illustrates a peer-to-peer system, in accordance with
one illustrative embodiment of the present invention;
[0023] FIG. 5 illustrates a more detailed block diagram depiction
of an application interface of FIGS. 2 and 4, in accordance with
one illustrative embodiment of the present invention;
[0024] FIG. 6 illustrates a block diagram depiction of an
interaction between an application being executed by a first and
second user;
[0025] FIG. 7 illustrates a more detailed block diagram depiction
of a client module of FIG. 5, in accordance with one illustrative
embodiment of the present invention;
[0026] FIG. 8 illustrates a flowchart depicting a method in
accordance with one illustrative embodiment of the present
invention; and
[0027] FIG. 9 illustrates a more detailed illustration of an
application interface function of FIG. 8, in accordance with one
illustrative embodiment of the present invention.
[0028] While the invention is susceptible to various modifications
and alternative forms, specific embodiments thereof have been shown
by way of example in the drawings and are herein described in
detail. It should be understood, however, that the description
herein of specific embodiments is not intended to limit the
invention to the particular forms disclosed, but on the contrary,
the intention is to cover all modifications, equivalents, and
alternatives falling within the spirit and scope of the invention
as defined by the appended claims.
DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS
[0029] Illustrative embodiments of the invention are described
below. In the interest of clarity, not all features of an actual
implementation are described in this specification. It will of
course be appreciated that in the development of any such actual
embodiment, numerous implementation-specific decisions must be made
to achieve the developers' specific goals, such as compliance with
system-related and business-related constraints, which will vary
from one implementation to another. Moreover, it will be
appreciated that such a development effort might be complex and
time-consuming, but would nevertheless be a routine undertaking for
those of ordinary skill in the art having the benefit of this
disclosure.
[0030] Embodiments of the present invention provide for real-time
or near real-time interaction between various computer users in the
context of a particular application. Utilizing embodiments of the
present invention, a first user may be able to execute a particular
application and communicate with a second user and provide various
active contents relating to various aspects of the application to
the second user based upon a communication platform, such as an
instant messaging platform. For example, a contact list, such as a
buddy list relating to an instant messaging platform, may be
generated among various users and utilizing embodiments of the
present invention, users may share various contents of particular
applications via the application running the contact list. For
example, a user executing a word processing application may
communicate and send various aspects of the word processing
application, such as a text document, to another user via a
communication platform, such as an instant messaging platform. The
contact list may be application specific, wherein each application
may have a corresponding contact list. Other examples of
applications that may be used in conjunction with embodiments of
the present invention may include, but is not limited to, a
graphics application, a photo-editing application, a game
application, a database application, a presentation application, a
organizer application, and/or a drawing application
[0031] Utilizing embodiments of the present invention, a first user
may recognize, based upon the updating of a contact list, when a
second user is active within a similar application as the one being
executed by the first user. The first user may then interface with
the second user within the context of the application. Embodiments
of the present invention may also provide status updates of various
users becoming active or inactive in the application on their
respective terminals/computers, thereby providing a real-time
status of various users utilizing a particular application.
Therefore, utilizing embodiments of the present invention,
real-time and/or near real-time content sharing of a particular
application or multiple applications may be performed utilizing an
independent communication platform such as an instant messaging
platform, e.g., the iChat.RTM. platform offered by Apple Computer,
Inc. of Cupertino, Calif.
[0032] Turning now to FIG. 1, a block diagram depicting a system
100, in accordance with embodiments of the present invention, is
illustrated. The system 100 includes a plurality of computing
devices coupled together through one or more network connections.
For example, a plurality of devices may be coupled together via a
private or public network, such as a local area network (LAN) or
the Internet 102. In an alternative embodiment, the plurality of
devices may be coupled together via an Intranet system. The actual
connection between the devices and the Internet 102 may take on one
or more of any of a variety of forms, such as a network interface
card (NIC), a modem, a digital subscriber line (DSL), a cable
modem, a wireless connection, and the like. The devices coupled to
the Internet 102 may include, for example, desktop computers or
servers, such as an Apple Macintosh.RTM. 104, a classic Apple
Mac.RTM. 106, a Power Mac G4.RTM., a Power Mac G5.RTM., an
iMac.RTM., an IBM compatible personal computer (PC) 108, and the
like. Further, these desktop computers, such as the Apple
Macintosh.RTM. 104, may be coupled together via a smaller sub-LAN
110, with the sub-LAN 110 being coupled to the Internet 102.
Portable devices, such as the Apple PowerBook.RTM. or iBook.RTM.
112, may also be coupled to the Internet 102, either directly or as
part of the sub-LAN 110. Further, other consumer devices, such as
cell phones, personal data assistants (PDAs), network appliances,
and other embedded devices may be connected to the Internet 102 to
employ aspects of the present invention.
[0033] The system 100 includes a plurality of servers 114, 116
associated with a plurality of instant messaging providers. The
servers 114, 116 are each capable of hosting one or more programs
designed to facilitate an instant messaging session between two or
more of the computing devices. For example, the server 114 may host
programs designed to facilitate communications via iChat.RTM. or
Microsoft MSN Messenger.RTM.. Likewise, the server 116 may host
programs designed to facilitate communications via AOL Instant
Messenger.RTM. or Yahoo.RTM.. In other embodiments of the present
invention, additional servers may be present in the system 100 to
host programs designed to facilitate communications via a plurality
of other instant messaging systems. Using the communications
application, such as iChat.RTM., the server 116 may facilitate
communications relating to active contents of various applications
executed by users of the desktop or portable computers illustrated
in FIG. 1.
[0034] While the invention has been illustrated herein as being
useful in a network environment, it also has application in other
connected environments. For example, two or more of the devices
described above may be coupled together via device-to-device
connections, such as by hard cabling, radio frequency signals
(e.g., 802.11(a), 802.11(b), 802.11(g), Bluetooth, or the like),
infrared coupling, telephone lines and modems, or the like. The
present invention may have application in any environment where two
or more users are interconnected and capable of communicating with
one another.
[0035] Those skilled in the art will appreciate that network
connections may include a variety of other equipment, such as
routers, switches, telephone modems, wireless devices, cable
modems, digital subscriber lines, and the like. This type of
equipment is not illustrated or discussed in detail herein so as to
avoid unnecessarily obfuscating the present invention. For purposes
of understanding the present invention, it is sufficient to
recognize that additional conventional equipment of this type may
be useful in establishing and maintaining communications between
the various users.
[0036] At least two of the devices in the system 100 have software,
such as an application program or a software client, installed
thereon to allow an instant messaging session to be initiated and
conducted. Generally, operation of an instant messaging system also
involves, at least initially, the servers 114, 116. The following
description of the operation of an instant messaging system assumes
that a user has previously obtained a copy of a software client for
his/her computing device, and installed the software client. Thus,
the instant messaging session begins when a local user runs or
opens the software client. The software client tries to connect to
the associated server 114,116 using a predefined protocol. Once the
client is connected to the server 114, 116, a log-on procedure is
followed to access or create an account. The log-on procedure may
be manual or automatic, but generally involves entry of a name and
password to log on to the server 114, 116. If this is the first
time that the local user has logged on, he/she may be prompted to
sign up for an account and begin using it. When the server 114, 116
verifies the entered name and password, the local user is logged
onto his/her account.
[0037] The software client sends the server 114, 116 information
regarding the connection, such as an IP address and a number of the
port assigned to the client. The server 114, 116 accesses a
database contained therein and provides the user with his/her
contact list or buddy list associated with the account. Initially,
the buddy list may be empty, but over time, a user may enter a
large number of buddies with which he/she routinely communicates.
The contact list or buddy list may be integrated into a particular
independent application (e.g., a word processor application, a
multi-media application, etc.) being executed by users of the
desktop or portable computers illustrated in FIG. 1. The server
114, 116 creates a temporary file and stores connection information
regarding the user and the list of buddies/contacts. The server
114, 116 then checks the status of each of the remote users in the
local user's buddy list to determine which, if any, are currently
logged in/active/on-line.
[0038] If the server 114, 116 finds any of the buddies logged on,
it sends a message back to the software client on his/her computing
device with the connection information for those buddies. The
server 114, 116 also sends his/her connection information to the
other users in the local user's contact list that are signed (or
logged) on to their respective accounts. When the client software
gets the connection information for a remote user in the local
user's buddy list, it changes the "status" of that person to
"Online."
[0039] An instant messaging session can be initiated with any of
these "online" buddies by selecting their name in the buddy list. A
graphical user interface (GUI) opens, allowing the user to enter
messages, manage the instant messaging session, and/or exchange
active content relating to applications being executed by various
users of the desktop or portable computers illustrated in FIG. 1.
The remote user receives the local user's "instant message" and may
respond. The GUI that each user sees on his/her respective computer
display expands to include a scrolling dialog of the conversation.
Thereafter, each user's instant messages appear in the GUI on both
computing devices.
[0040] When the conversation is completed, or a user exits a
particular application, the users close the GUI, go offline from
the application, and/or exit the software client. When this
happens, the software client sends a message to the server 114, 116
to terminate the session. The server 114, 116 sends a message to
the software client of each user on the local user's buddy list
that is currently online to indicate that the local user has logged
off a particular application. Finally, the server deletes the log
in the temporary file that contains the connection information for
the local user's software client or the local user's active status
in an application. Thus, in the buddy lists of the local user's
contacts that are online, the local user's name moves to the
"Offline" status section for a particular application.
[0041] Turning now to FIG. 2, a client/server based system, in
accordance with embodiments of the present invention, is
illustrated. The system illustrated in FIG. 2 may comprise a
plurality of users that may operate from various remote
terminals/computers, such as the terminals described in FIG. 1. A
network system 260 may host various users. The network system 260
may comprise a server 280 that is capable of providing for
communications between various users. The network system 260 may be
linked to a first user 210, a second user 220, a third user 230,
and a fourth user 240, to an N.sup.th user 250. In one embodiment,
the first through N.sup.th users 210-250 may be of various types of
computing devices, physical or virtual, such as a computer, a
telephone, a settop box, a network appliance, or any device capable
of connecting to the network system 260 and receiving active
content.
[0042] Each of the users 210-250 may comprise an application
interface (AI) 270 that is capable of providing a communication
interface between an application executed by a first user 210, for
example, to other users, for example a second user 220, via the
network system 260. This communication interface may be facilitated
by a communication application, such as an instant messaging
application (e.g., iChat.RTM.). Utilizing embodiments of the
present invention, a first user 210 may execute a particular
application via the application interface 270, and may communicate
within the context of the application to exchange active content
with a second user 220, who is also executing a similar
application. This communication may be performed at a real-time
and/or a near real-time fashion. A more detailed illustration of
the application interface 270 is provided in various figures and
accompanying descriptions below.
[0043] Turning now to FIG. 3A, a more detailed illustration of
various applications being executed by the first user 210 and the
second user 220 is illustrated. This illustration of the execution
of various applications is for illustrative purposes and those
skilled in the art would appreciate that alternate execution of
applications may be performed and remain within the spirit and
scope of the present invention. As illustrated in FIG. 3A, the
first user 210 may execute one or more e.g., first application 310
as well as a second application 320, and/or more applications. For
example, the first application 310 may be a non-communications
application, such as a word processing program and the second
application 320 may be a another non-communications application
such as a photo-editing program. The term non-communications
application may include various types of applications that are not
exclusively dedicated to providing communications, such as a chat
application or an email application. Similarly, the second user 220
may execute the second application 320 and a third application 340.
Utilizing embodiments of the present invention, the first user 210
may be able to view a contact list or a buddy list 350, which may
provide an indication of the status of other users who are
executing similar applications and are part of the contact list 350
implemented by the first user 210. For example, the contact list
350a associated with the first application 310 may indicate that
the third user 230 and the N.sup.th user 250 are also active in the
first application 310 on their respective remote terminals.
[0044] Similarly, for example, a second contact list 350b
associated with the second application 320 may indicate that the
second user 220, the third user 230, as well as the fourth user 240
are active in the second application 320 on their respective remote
terminals. Likewise as indicated in FIG. 3A, the second user 220
may view a third contact list 350c associated with the second
application 320 that may indicate that the first user 210, third
user 230 and the fourth user 240 are active in the second
application 320. Furthermore, the second user 220 may recognize
that a fourth contact list 350d associated with the third
application 340 indicates that the N.sup.th user 250 is active in
the third application 340 being executed on a remote terminal
associated with the N.sup.th user 250.
[0045] The users appearing on the various contact lists 350a-d,
associated with particular applications being executed by the first
user 210, generally belong to a contact list or a buddy list
350(a-d) created by the first user 210. In one embodiment, only
preferred users 210-250, which are selected by the first user 210,
will appear on the first and second contact lists 350a, 350b. A
particular user may register interest to be part of a buddy list.
In one embodiment, a user may register interest in being part of a
buddy list for a particular group of people. In one embodiment, the
group of people to which a user is registering interest, may
include a group of people who are active in a particular
application. In an alternative embodiment, any one of the 1.sup.st
through Nth user 210-250, or any one of the 1.sup.st through Nth
piers 410-440, may perform a polling function to determine if a
particular user is to be added to a buddy list, or determine if a
particular user is active and available for communications via an
active application. The first application 310 and the second
application 320 will generally communicate via the application
interface 270.
[0046] In one embodiment, the application interface 270 may
comprise sub-application interfaces AI(1) 360 and AI(2) 370, which
are respectively associated with the first application 310 and the
second application 320. Similarly, the second user 220 may also
comprise an application interface 270 that comprises an AI(2) 370
and an AI(3) 380 associated respectively with the second
application 320 and third application 340. The application
interface 270 is utilized by the first user 210 and the second user
220 to provide for a communications interface between the
applications 310, 320, 340. Therefore, an intermediate module, such
as a chat program or an instant messaging program, such as
iChat.RTM. offered by Apple Computer, Inc. of Cupertino, Calif.,
may be utilized to facilitate active contact transactions and other
communications between the applications being executed by the first
user 210 and other users associated with the network system 260.
Further details relating to the type of communications facilitated
by the application interface 270 are provided below.
[0047] Turning now to FIG. 3B, a more detailed illustration of an
alternative embodiment of the first user 210 and the second user
220 executing various applications is illustrated. The embodiment
illustrated in FIG. 3B provide for a general buddy list that may
encompass a buddy list (communications list) for a plurality of
applications. As illustrated in FIG. 3B, the first user 210 may
execute one or more applications, e.g., first application 310 and
the second application 320. For example, the first application 310
may be a word processing program and the second application 320 may
be a photo editing program. Similarly, the second user 220 may
execute one or more applications, e.g., the second application 320
and a third application 340. The first user 210 may comprise a
buddy list 390, which may list various users, such as the second
user 220, a third user 330, and a fourth user 340.
[0048] The buddy list 390 may indicate the particular applications
that are being executed by the users listed in the buddy list 390.
For example, the buddy list 390 of the first user 210 may indicate
that the second user 220 is executing the second and third
applications 320, 340. Likewise, a buddy list 395 in the second
user 220 will list various users and any particular applications
executed by the user. For example, the buddy list 395 of the second
user 220 may indicate that the first user 210 is executing the
first and second applications 310, 320. The listing of the
applications and the users in the buddy lists 390, 395 may
generally be based upon a registration of various users that the
first user 210 may register into the buddy list 390.
[0049] Additionally, the fact that the various applications
executed by the second user 220 appear in the buddy list may be a
result of the second user 220 having registered the fact that the
second user is publicizing the execution of the second and third
applications 320, 340. In other words, the information appearing on
the buddy lists 390, 395, in one embodiment, is based upon
volunteer registration performed by each of the users and the type
of applications that each user is executing. The buddy lists 390,
395 provide information relating to other users that may be logged
in on a network system 260, and who have registered their interest
in publicizing their status of executing various applications.
[0050] Furthermore, the embodiments illustrated in FIG. 3B provide
for exchanging status of various applications being executed by the
other users, as well as, active content relating to the particular
applications being executed by various users. For example, an
exchange of a photo file may be exchanged between the first and
second users who are both executing the second application 320,
which in one embodiment, may be a photo editing application. Since
the first user 210 can see that in its buddy list 390 that the
second user 220 is executing the second application 320, and also
because the second user 220 can view in its buddy list 395 that the
first user 210 is executing the second application 320, an exchange
of active content may be initiated by the first user 210 or the
second user 220.
[0051] Turning now to FIG. 4, another implementation of a
peer-to-peer configuration in accordance with embodiments of the
present invention is illustrated. FIG. 4 illustrates a first peer
410, a second peer 420, and a third peer 430 through an Nth peer
440, being interconnected for facilitating peer-to-peer
communications via a network 450. In one embodiment, the
peer-to-peer connections may be provided by the network 450, which
in one embodiment may be a peer-to-peer network. The first through
N.sup.th peers 410-440 may each comprise an application interface
270 that is capable of interfacing with one or more applications
being executed by each of the peer stations or terminals. The
application interface 270 is capable of interfacing with other
peers via their respective application interfaces 270 through the
peer cloud 450. Utilizing the application interface 270, active
content relating to particular applications may be transferred to
and from various peer-to-peer connections.
[0052] In one embodiment, the first peer 410 may be a sender peer
and the second peer 420 may be a recipient peer. However, those
skilled in the art would appreciate that the designation of a peer
as a sender or receiver is not fixed and that in practice, a peer
is sometimes sending data and sometimes receiving data. Active
content, as used by embodiments of the present invention, may refer
to a variety of data, such as, for example, data files in current
use at a peer or a user station. The data file may be text data, or
media content, such as an audio or video file being played in a
media player, text, graphics, or numeric content, such as a
document, spreadsheet, code file, graphics file, or any other file
having data representing content that is capable of perception by a
user or a peer. In one embodiment, the first peer 410 may activate
various contents within the context of an application being
executed by the first peer 410. The content(s) may then be
synchronized into an active content stream and transmitted to other
peers on the network 450. In one embodiment, the peers 410-440 may
be of various types of computing devices, physical or virtual, such
as a computer, a telephone, a settop box, a network appliance, or
any device capable of connecting to the network 450 and receiving
active content.
[0053] The second peer 420 may receive the active content from the
first peer 410 and may be displayed in a graphic user interface
(GUI). The active content transmitted by the first peer 410 to the
second peer 420 may be based upon communications enabled by the
application interface 270, which may include an intermediary
module, such as a chat or instant messaging program (e.g.,
iChat.RTM.). Other applications may include the first peer 410
providing multimedia active content, such as music audio files that
may be received and executed by the second peer 420, such as music
files utilized by music programs, such as iTunes.RTM. offered by
Apple Computer, Inc. of Cupertino, Calif. This type of
communication may be used to perform file exchanges and other
commerce activities, such as the first peer 410 providing a music
file to the second peer 420 for purchase.
[0054] The network 450 may be public or private, including both
wired and wireless portions. The network 450 may facilitate
transmission and reception of data in packets or through circuits
and use communications protocols such as Internet Protocol (IP) or
Asynchronous Transfer Mechanism (ATM). Combinations of the previous
variations of network communication are within the scope of the
present invention since it is transport independent.
[0055] Whether embodiments of the present invention are implemented
in a client server communication protocol, such as the system
illustrated in FIG. 2, or in a peer-to-peer communication protocol,
such as the system illustrated in FIG. 4, these embodiments may be
used to achieve a real-time communication and updating of content
or contact lists in the context of various applications executed by
users of the systems. Embodiments of the present invention also
provide for a non-polled system where a user or a peer may register
for interest, either passively or actively, an inclusion in a
contact list or a buddy list, which may be updated automatically.
This allows for the creation of work-groups of people using similar
applications on a real-time or a near real-time basis. Utilizing
embodiments of the present invention, the applications utilized by
various users 210-250 may be integrated into a work-group such that
these applications or contents from these applications may be
shared. In one such example, a user executing a word processing
application may be able to communicate with another user in a
remote location that is using similar word processing applications,
and exchange files and various contents between each other via the
application interface 270. The fact that one user has activated a
similar application may automatically update another user's contact
list or buddy list 350. Therefore, the contact/buddy list 350
provides a particular user with the status of other interested
users utilizing the same application.
[0056] Turning now to FIG. 5, a block diagram depiction of the
application interface 270 in accordance with one embodiment of the
present invention is illustrated. In one embodiment, the
application interface 270 comprises a chat module 520 and an
application programming interface 510. The application programming
interface (API) 510 provides for programming an interface for a
particular application such that a desired type of communication in
the context of the application may be facilitated. Developers may
customize interfacing of a particular application by programming
various aspects of the interface using the API 510. Utilizing the
chat module 520, updating of the contact/buddy list 350 and/or
transfer of active content may be facilitated by the application
interface 270. Therefore, the application interface 270 is able to
communicate between a particular application being used by a user
and to the network 450 for communication with other users. A more
detailed description of the application interface 270 is
illustrated in FIG. 7 and accompanying description below.
[0057] Turning now to FIG. 6, a block diagram depicting a
communications flow relating to the application interface 270, in
accordance with one embodiment of the present invention, is
illustrated. The second application 320 being run on the first user
210, for example, communicates with the application interface 270.
The application interface 270 then in turn, communicates with a
server 280 or a peer cloud 450. The server 280 then communicates
with another application interface 270, which in turn provides for
communications with the second application 320 being executed on
the second user 220. Therefore, the application interface 270
provides for data transactions via the server 280 or the peer cloud
450, between the first user 210 and the second user 220. Therefore,
the second application 320 being run on the first user 210 will
update a contact list or a buddy list 350 associated with that
particular application, indicating to the first user 210 that the
second application 320 is also being executed on the second user
220. Hence, updating of the contact list 350 may be facilitated;
similarly, transfer of active contents relating to the second
application 320 between the first user 210 and the second user 220
is also facilitated.
[0058] Turning now to FIG. 7, a block diagram depiction of the chat
module 520, in accordance with one embodiment of the present
invention, is illustrated. In one embodiment, the chat module 520
comprises a communications unit 710, a server/client unit 720, a
content information database 730, and a GUI module 740. In one
embodiment, the communications unit 710 provides a communications
pathway for the chat module 520 to transmit and receive messages
and to share active content through a server/client network and/or
a peer-to-peer network. The communications unit 710, in one
embodiment, may log into a centralized chat server and establish a
point-to-point communication between other users and/or peers by
exchanging network addresses, such as IP addresses. The
communications unit 710 may also comprise a network interface,
appropriate protocol stack, an operating system or port control, a
client server network software, a peer network software, or an
application software.
[0059] The server/client unit 720 may send and receive active
content information for output and input to and from other clients
or peers. The server/client unit 720 may perform synchronized data
streaming of active content. Synchronization of data, however, may
include substantially synchronizing data, since the operation is
dependent on network load, streaming parameters, and/or various
other conditions. In one embodiment, the server/client unit 720 may
be an FTP, desktop sharing software, an audio video server, or any
other device capable of sending and receiving active content via a
network. The content information database 730 may store information
regarding active content shared among various clients and/or peers.
Active content information may include, but is not limited to,
meta-data about data files, such as its size, and auxiliary data
files related to data files, such as a unique identifier, related
image file, content file, content source, or any other information
directly or indirectly related to the content. The content
information database 730 may be queried by an identifier, such as
an MP3 ID tag received by the chat module 520. In response, the
content information database 730 may make matching information
available, such as the MP3 content title. This information may be
displayed by a client or a peer, or may be sent to another client
or peer.
[0060] In one embodiment, the unique identifier may comprise an
active content fingerprint, such as a hash key or wavelet. The hash
key may be determined by an algorithm implementing a computational
transform on binary data such as a SHA-1 or CRC32. The unique
identifier may be used by a client or a peer to retrieve locally
stored, active content information associated with a particular
application being executed.
[0061] The GUI module 740 may provide user interface of the chat
module 520 and receive user commands related to various contents
associated with applications being executed by various clients or
peers. In one embodiment, the GUI module 740 may integrate active
content information relating to a particular application into the
chat module 520 and provide for communications with other clients
or peers via the communication unit 710. The GUI module 740 may
also receive commands to initiate various synchronized data streams
or initiate and execute a transaction. The GUI module 740 may
include a graphical engine, an audio/video CODEC, a processor, an
operating system, graphics software, and other graphic enhancing
devices or software. The chat module 520 allows for updating
various content lists associated with particular applications
utilized by users and/or providing for active content relating to
particular applications being executed by various clients or
peers.
[0062] Turning now to FIG. 8, a block diagram for implementing the
methods associated with embodiments of the present invention is
illustrated. The peer-to-peer and/or the client/server systems
illustrated in the present disclosure may provide for a particular
user, such as the first user 210, to log into a centralized network
or server (block 810). A peer station may log into a network or
peer cloud 450, similarly, a first user 210 may log into a client
server network system 260. Embodiments of the present invention may
be implemented into a server centric model and/or into a
peer-to-peer model. Upon logging into a centralized system or into
a peer-to-peer system, a user, by implementing embodiments of the
present invention, may be able to detect whether another user
involved with the system may be interested and/or had activated a
similar application as one that is being run by the original
user.
[0063] A user may receive notification from the server centric or
peer-to-peer system that the implementation of a particular
application has changed state in some interesting manner, such as
quitting, launching, sleeping, crashing, or various other status
updates. The server centric or peer-to-peer system may then perform
an application interface function to provide for communication of
contact lists or buddy lists 350 and/or active contents between
various users of the system(s) (block 820). A more detailed
description of the application interface function described in
block 820 is provided in FIG. 9 and accompanying description
below.
[0064] Upon performing the application interface function, the
server centric system or the peer-to-peer system may then allow for
application spaced transactions, such as updating of contact lists
or buddy lists 350, providing transactions of active contents of
various applications between various users in the system, and the
like (block 830).
[0065] Turning now to FIG. 9, a more detailed block diagram
depiction of performing the application interface function
described in block 820 of FIG. 8, is illustrated. In one
embodiment, the user of a user centric system or a peer of a
peer-to-peer system may activate a particular application (block
910). Examples of the application may include a word processing
software, a graphic software, a music software, a photo editing
software, and/or other applications. The user may determine whether
the use of this particular application is to be publicized or not
(block 920). In some cases, for uses of a particular application,
it may be desirable not to publicize the activation of the
application for various security reasons or privacy reasons. For
example, a user may decide that the application of activating a
music program is not to be published to a server centric or a
peer-to-peer system. Additionally, applications relating to access
to private intranet or Internet access may not be published to
preserve security integrity.
[0066] There are various methods of determining whether a
particular application is to be published. One option is to have an
intermediary program in the application interface 270, such as
iChat.RTM., maintain a list of particular applications that are to
be excluded or included for publication to the server centric or
the peer-to-peer system. In an alternative embodiment, the
particular applications themselves may have a preference setting
that can be set or reset to indicate whether the activation of the
application may be published. If such an activation is to be
published, this status may be communicated via the application
interface 270 (e.g., iChat.RTM.).
[0067] If it is determined that implementation of the application
is not to be published to a server centric or a peer-to-peer model,
the application interface function may not be performed and is
terminated (block 930). If it is determined that the activation of
the application is to be published, the remote terminal of the user
then activates the chat module 520 (block 940). Activation of the
chat module 520, as described above, provides for communications
between various applications being executed by various users on a
server centric system or a peer-to-peer system in the context of
the particular application. Upon activation of the chat module 520,
other entities, such as other users or peers, are informed of the
activation of the application by the user (block 950). Informing
other users and/or peers of the activation of the application may
include transferring contents that includes information such that
contacts lists or buddy lists 350 may be updated. Therefore, for
example, a second user 220 may receive an update on its third
contact list 350c associated with the second application 320, which
is also being executed by the first user 210.
[0068] Once the users/peers are aware of activation of a particular
application, i.e., the contact lists or buddy lists 350 are
updated, a particular user may monitor for information relating to
activation of the application by other entities for status updates.
This monitoring may be handled in a variety of manners, such as by
the use of a polling system or a non-polling system, upon which an
update of an activation of an application is detected by the
application interface 270 (block 960).
[0069] Monitoring for information related to the activation of a
particular application may be performed by identifying a particular
identifier relating to a particular application. One such option
may be to implement a typing creator, which may be two to four
character codes relating to a particular application and monitoring
the activation or de-activation of that particular code. In an
alternative embodiment, a mine type arrangement may be made where
the signature of the application may be detected to determine
whether a particular application is being executed by a remote
entity. In yet another alternative embodiment, a URL access or URL
description may be detected to determine whether a particular
application is being executed by a remote entity.
[0070] The embodiments of the present invention may be applied such
that a particular application will only see information relating to
the status of other people that are utilizing that particular
application who are selected to be on contact list or buddy list
350. The application interface 270, which may employ programs, such
as iChat.RTM., may itself maintain a list of how many users are
using different applications. However, the particular application,
such as the first application 310, will only see information
relating to other users that are also executing the first
application 310 on their remote terminal. An updating of the
execution of a particular application may be performed by the
application directly communicating with the network, or
alternatively, the application communicating through an
intermediary module such as iChat.RTM. via the application
interface 270.
[0071] While monitoring the activation or de-activation of
applications by other entities, a determination is made whether an
activation status change has occurred (block 970). If no status
change has occurred, the monitoring of status of the activation or
de-activation of applications continues as illustrated in FIG.
9.
[0072] Upon a detection that an activation has occurred, an
updating and displaying of the active list is provided (block 980).
In other words, the contact list or buddy list 350 associated with
a particular application is updated to reflect the new status
relating various entities executing the particular application. A
determination is then made regarding the routing information
relating to communication with other entities. This routing
information may include determining the IP address and other
routing information that may be used to facilitate communications
from one application to another via the intermediary programs, such
as iChat.RTM. (block 990). Upon determining the routing
information, the application interface 270 may monitor requests for
transactions relating to a particular application and facilitate
transactions responsive to request(s) for transmission or reception
of active contents relating to a particular application (block
995).
[0073] Utilizing the methods described above, a contact list or
buddy list may be maintained and updated in real-time or near
real-time relating as to which other users of a server centric
system or peers of a peer-to-peer model system is active in a
particular application of interest. Furthermore, communication
within the context of transmitting and receiving contents of a
particular application may be facilitated utilizing the methods
described above. Utilizing embodiments of the present invention,
various users on a client/server system or various peers in a
peer-to-peer system may communicate and send and receive active
contents relating to a particular application among various users.
A contact list or a buddy list may be maintained to update a list
when a particular user activates or de-activates a particular
application. This provides for efficient communication with other
users relating to particular applications, which in turn may
increase efficiency, creativity, and productivity among various
work-groups.
[0074] The particular embodiments disclosed above are illustrative
only, as the invention may be modified and practiced in different
but equivalent manners apparent to those skilled in the art having
the benefit of the teachings herein. Furthermore, no limitations
are intended to the details of construction or design herein shown,
other than as described in the claims below. It is therefore
evident that the particular embodiments disclosed above may be
altered or modified and all such variations are considered within
the scope and spirit of the invention. Accordingly, the protection
sought herein is as set forth in the claims below.
* * * * *