Language selection

Search

Patent 2357494 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 2357494
(54) English Title: SYSTEM FOR INTEGRATING AN ON-LINE SERVICE COMMUNITY WITH A FOREIGN SERVICE
(54) French Title: SYSTEME PERMETTANT D'INTEGRER UN SERVICE ETRANGER DANS UNE COMMUNAUTE UTILISANT UN SERVICE EN LIGNE
Status: Expired
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 16/95 (2019.01)
  • G06F 16/9536 (2019.01)
  • G06F 16/9537 (2019.01)
  • H04L 12/16 (2006.01)
  • H04L 12/58 (2006.01)
(72) Inventors :
  • MACNAUGHTON, BRUCE A. (United States of America)
  • TURNER, LEIGH R. (United States of America)
(73) Owners :
  • FACEBOOK, INC. (United States of America)
(71) Applicants :
  • AMERICA ONLINE, INC. (United States of America)
(74) Agent: SMART & BIGGAR LLP
(74) Associate agent:
(45) Issued: 2005-07-12
(22) Filed Date: 1997-11-07
(41) Open to Public Inspection: 1998-05-14
Examination requested: 2001-09-06
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data:
Application No. Country/Territory Date
08/745,294 United States of America 1996-11-08

Abstracts

English Abstract

Methods and systems for integrating a community with a web browser, and for providing Internet-related content accessible by a user's client system, are disclosed. One such method involves receiving a request from the user's client system for foreign content, delivering the foreign content to the user's client system in response to the request, and determining community content that is related to the foreign content. One such system includes a foreign server for receiving a request from the user's client system and delivering foreign content in response to the request, and further includes a community server having community content where the community content is related to the foreign content, and the community server delivers the community content to the client system if the user's client system is a member of a predefined community.


French Abstract

Des méthodes et systèmes permettant d'intégrer un navigateur Web dans une communauté et de fournir un contenu lié à Internet accessible par un système client d'un utilisateur, sont présentés. Une de ces méthodes comprend la réception d'une requête du système client d'un utilisateur demandant un contenu étranger, la fourniture du contenu étranger au système client d'un utilisateur en réponse à la requête, et la détermination du contenu communautaire lié au contenu étranger. Un de ces systèmes comprend un serveur étranger recevant une requête du système client d'un utilisateur et fournissant le contenu étranger en réponse à la requête, et comprend également un serveur communautaire ayant du contenu communautaire, lequel contenu communautaire est lié au contenu étranger, et le serveur communautaire fournit le contenu communautaire au système client si le système client d'un utilisateur est membre d'une communauté prédéfinie.

Claims

Note: Claims are shown in the official language in which they were submitted.



THE EMBODIMENTS OF THE INVENTION IN WHICH AN EXCLUSIVE
PROPERTY OR PRIVILEGE IS CLAIMED ARE DEFINED AS FOLLOWS:

1. A method for integrating a community with a web browser, comprising the
steps of:
defining community content for a plurality of communities;
defining capabilities for each of said plurality of communities;
associating each of said plurality of communities with an identifier for a web
page;
defining a community client adapted for interacting with said web browser and
for responding to notifications regarding said plurality of communities;
defining an online service community server adapted for transmitting
notifications to said community client; and
transmitting from said online service community server to said community
client notifications regarding a community associated with an identifier for a
web
page selected in accordance with said web browser.
2. The method of claim 1 wherein the step of defining an online service
community server comprises the step of establishing a persistent connection
between
said online service community server and said community client.
3. The method of claim 1 wherein the step of defining capabilities for each of
said plurality of communities comprises the steps of:
defining a home page for each of said plurality of communities;
defining comments for each of said plurality of communities;
defining a list of online users for each of said plurality of communities;
defining real time interactions for each of said plurality of communities;
defining invitations for each of said plurality of communities;
defining instructions for each of said plurality of communities;
defining message interactions for each of said plurality of communities; and



-38-


defining internet features for each of said plurality of communities.
4. The method of claim 1 wherein the step of defining capabilities for each of
said plurality of communities comprises the steps of assigning a capability
identification number to each capability.
5. The method of claim 1 wherein the step of transmitting from said online
service community server to said community client notifications regarding a
community comprises the step of notifying a user of said web browser of
capabilities
defined for said community associated with said identifier for said web page
selected
in accordance with said web browser.
6. The method of claim 1 wherein the step of transmitting from said online
service community server to said community client notifications regarding a
community comprises the step of notifying a user of said web browser of
annotations
associated with said identifier for said web page, other community members
associated with said identifier for said web page, and in progress chats
associated with
said identifier for said web page.
7. The method of claim 1 wherein the step of transmitting from said online
service community server to said community client notifications regarding a
community comprises the step of determining the contents of said notifications
in
accordance with a tracking server.
8. A server system for providing Internet-related content accessible from a
client
system, comprising:
a foreign server having foreign content for receiving a request from the
client
system and delivering foreign content; and
a community server having community content related to the foreign content
wherein the community content related to the foreign content is selected by
the



-39-


community server based on a user's interactions with the foreign server, is
provided
automatically to the client system in response to the request and is updated
based on
changes reported by the client system to the community server.
9. The server system of claim 8, wherein the foreign server delivers the
foreign
content in response to the request.
10. The server system of claim 8, wherein the foreign content includes web
content.
11. The server system of claim 8, wherein the foreign server is located in a
distinct
geographic location from the community server.
12. The server system of claim 8, wherein the foreign server is co-located in
the
same geographic location as the community server.
13. The server system of claim 8, wherein the community content includes a
chat
room.
14. The server system of claim 8, wherein the community content includes a
community voting function.
15. The server system of claim 8, wherein the community content includes a
community game room.
16. The server system of claim 8, wherein the community content includes at
least
one annotation.



-40-


17. The server system of claim 8, wherein the community content includes a
notification of one or more capabilities that are available to a user and are
associated
with this foreign content.
18. The server system of claim 17, wherein one of the capabilities is
annotations
to allow a user to annotate the foreign content.
19. The server system of claim 18, wherein the annotations include means for
attaching a comment to a website.
20. The server system of claim 18, wherein the annotations include means for
generating threaded messages associated with the foreign content.
21. The server system of claim 17, wherein one of the capabilities is
annotations
to allow a user to view annotations of the foreign content provided by other
users.
22. The server system of claim 8, wherein one of the capabilities includes
means
for determining other online users.
23. The server system of claim 8, wherein one of the capabilities includes
means
for inviting other users to chat.
24. The server system of claim 8, wherein the community content is related to
the
foreign content in subject matter.
25. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
relating community content with foreign content;
receiving a request from the user's client system for foreign content from a
foreign server;



-41-


delivering the foreign content from the foreign server to the user's client
system in response to the request;
determining community content that is related to the foreign content based on
the user's interaction with the foreign server;
delivering the community content to the user's client system; and
updating the community content that is related to the foreign content based on
changes reported by the user's client system.
26. The method of claim 25, wherein the foreign content includes web content.
27. The method of claim 25, wherein the community content includes a chat
room.
28. The method of claim 25, wherein the community content includes a
community voting function.
29. The method of claim 25, wherein the community content includes a
community game room.
30. The method of claim 25, wherein the community content includes at least
one
annotation.
31. The method of claim 25, further comprising:
delivering annotations authored by other users to the user's client system.
32. The method of claim 25, further comprising:
providing indications of the existence of annotations authored by other users.
33. The method of claim 25, further comprising:
delivering a notification of one or more capabilities that are available to
the
user that is associated with this community content.



-42-


34. The method of claim 33, wherein one of the capabilities is annotations to
allow the user to annotate the foreign content.
35. The method of claim 25, further comprising:
receiving an annotation from the user's client system, wherein the annotation
is
a comment associated with at least a portion of the foreign content.
36. The method of claim 25, further comprising:
delivering a name of at least one other user who is online with respect to the
foreign content.
37. The method of claim 25, further comprising:
delivering a name of at least one other user who has also requested the
foreign
content.
38. The method of claim 25, further comprising:
receiving an invitation request from the user's client system to a target user
to
chat; and
delivering the invitation request to the target user.
39. The method of claim 25, wherein the community content is related to the
foreign content in subject matter.
40. The method of claim 39, wherein the subject matter is sports.
41. The method of claim 39, wherein the subject matter is news.
42. A server system for providing Internet-related content which is accessible
by a
user's client system, comprising:



-43-


a foreign server having foreign content for receiving a request from the
user's
client system and delivering foreign content in response to the request; and
a community server having community content where the community content
is related to the foreign content, and the community server is adapted to
locate and
deliver the community content to the client system based on the user's
interaction
with the foreign server and update the community content based on changes
reported
to the community server by the user's client system if the user's client
system is a
member of a predefined community.
43. The server system of claim 42, wherein the foreign content includes web
content.
44. The server system of claim 42, wherein the foreign server is located in a
distinct geographic location from the community server.
45. The server system of claim 42, wherein the foreign server is co-located in
the
same geographic location as the community server.
46. The server system of claim 42, wherein the community content includes a
chat
room.
47. The server system of claim 42, wherein the community content includes a
community voting function.
48. The server system of claim 42, wherein the community content includes a
community game room.
49. The server system of claim 42, wherein the community content includes at
least one annotation.



-44-


50. A method for integrating a community with a web browser, comprising the
steps of:
defining community content for a plurality of communities;
defining capabilities for each of said plurality of communities;
associating each of said plurality of communities with an identifier for a web
page;
defining a community client adapted for interacting with said web browser and
for responding to notifications regarding said plurality of communities;
defining a community server adapted for transmitting notifications to said
community client; and
transmitting from said community server to said community client
notifications regarding a community associated with an identifier for a web
page
selected in accordance with said web browser;
wherein the step of defining capabilities for each of said plurality of
communities comprises the steps of:
defining a home page for each of said plurality of communities;
defining comments for each of said plurality of communities;
defining a list of online users for each of said plurality of communities;
defining real time interactions for each of said plurality of
communities;
defining invitations for each of said plurality of communities;
defining instructions for each of said plurality of communities;
defining message interactions for each of said plurality of
communities; and
defining internet features for each of said plurality of communities.
51. A method for integrating a community with a web browser, comprising the
steps of:
defining community content for a plurality of communities;
defining capabilities for each of said plurality of communities;



-45-


associating each of said plurality of communities with an identifier for a web
page;
defining a community client adapted for interacting with said web browser and
for responding to notifications regarding said plurality of communities;
defining a community server adapted for transmitting notifications to said
community client; and
transmitting from said community server to said community client
notifications regarding a community associated with an identifier for a web
page
selected in accordance with said web browser;
wherein the step of transmitting from said community server to said
community client notifications regarding a community comprises the step of
notifying
a user of said web browser of capabilities defined for said community
associated with
said identifier for said web page selected in accordance with said web
browser.
52. A method for integrating a community with a web browser, comprising the
steps of:
defining community content for a plurality of communities;
defining capabilities for each of said plurality of communities;
associating each of said plurality of communities with an identifier for a web
page;
defining a community client adapted for interacting with said web browser and
for responding to notifications regarding said plurality of communities;
defining a community server adapted for transmitting notifications to said
community client; and
transmitting from said community server to said community client
notifications regarding a community associated with an identifier for a web
page
selected in accordance with said web browser;
wherein the step of transmitting from said community server to said
community client notifications regarding a community comprises the step of
notifying
a user of said web browser of annotations associated with said identifier for
said web



-46-




page, other community members associated with said identifier for said web
page, and
in progress chats associated with said identifier for said web page.
53. A method for integrating a community with a web browser, comprising the
steps of:
defining community content for a plurality of communities;
defining capabilities for each of said plurality of communities;
associating each of said plurality of communities with an identifier for a web
page;
defining a community client adapted for interacting with said web browser and
for responding to notifications regarding said plurality of communities;
defining a community server adapted for transmitting notifications to said
community client; and
transmitting from said community server to said community client
notifications regarding a community associated with an identifier for a web
page
selected in accordance with said web browser;
wherein the step of transmitting from said community server to said
community client notifications regarding a community comprises the step of
determining the contents of said notifications in accordance with a tracking
server.
54. A server system for providing Internet-related content accessible from a
client
system, comprising:
a foreign server for receiving a request from the client system and delivering
foreign content; and
a community server having community content provided automatically to the
client system in response to the request, where the community content is
selected by
the community server based on a user's interaction with the foreign server and
is
updated based on changes reported by the client system to the community
server;
wherein the community content includes at least one annotation.

-47-




55. A server system for providing Internet-related content accessible from a
client
system, comprising:
a foreign server for receiving a request from the client system and delivering
foreign content; and
a community server having community content provided automatically to the
client system in response to the request, where the community content is
selected by
the community server based on a user's interactions with the foreign server
and is
updated based on changes reported by the client system to the community
server;
wherein the community content includes a notification of one or more
capabilities that are available to a user and are associated with this foreign
content.
56. The server system of claim 55, wherein one of the capabilities is
annotations
to allow a user to annotate the foreign content.
57. The server system of claim 56, wherein the annotations include means for
generating threaded messages associated with the foreign content.
58. The server system of claim 54, wherein one of the capabilities is
annotations
to allow a user to view annotations of the foreign content provided by other
users.
59. A server system for providing Internet-related content accessible from a
client
system, comprising:
a foreign server for receiving a request from the client system and delivering
foreign content; and
a community server having community content provided automatically to the
client system in response to the request, where the community content is
selected by
the community server based on a user's interactions with the foreign server;
wherein the community content is related to the foreign content in subject
matter and is updated based on changes reported by the client system to the
community server.

-48-




60. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
receiving a request from the user's client system for foreign content;
delivering the foreign content to the user's client system in response to the
request;
determining community content that is related to the foreign content based on
the user's interaction with the foreign content;
delivering the community content to the user's client system;
updating the community content that is related to the foreign content based on
changes reported by the user's client system; and
wherein the community content includes at least one annotation.
61. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
receiving a request from the user's client system for foreign content;
delivering the foreign content to the user's client system in response to the
request;
determining community content that is related to the foreign content based on
the user's interaction with the foreign content;
delivering the community content to the user's client system;
updating the community content that is related to the foreign content based on
changes reported by the user's client system; and
delivering annotations authored by other users to the user's client system.
62. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
receiving a request from the user's client system for foreign content;
delivering the foreign content to the user's client system in response to the
request;

-49-




determining community content that is related to the foreign content based on
the user's interaction with the foreign content;
delivering the community content to the user's client system;
updating the community content that is related to the foreign content based on
changes reported by the user's client system; and
providing indications of the existence of annotations authored by other users.
63. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
receiving a request from the user's client system for foreign content;
delivering the foreign content to the user's client system in response to the
request;
determining community content that is related to the foreign content based on
the user's interaction with the foreign content;
delivering the community content to the user's client system;
updating the community content that is related to the foreign content based on
changes reported by the user's client system; and
delivering a notification of one or more capabilities that are available to
the
user that is associated with this community content.
64. The method of claim 63, wherein one of the capabilities is annotations to
allow the user to annotate the foreign content.
65. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
receiving a request from the user's client system for foreign content;
delivering the foreign content to the user's client system in response to the
request;
determining community content that is related to the foreign content based on
the user's interaction with the foreign content;

-50-




delivering the community content to the user's client system;
updating the community content that is related to the foreign content based on
changes reported by the user's client system; and
receiving an annotation from the user's client system, wherein the annotation
is
a comment associated with at least a portion of the foreign content.
66. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
receiving a request from the user's client system for foreign content;
delivering the foreign content to the user's client system in response to the
request;
determining community content that is related to the foreign content based on
the user's interaction with the foreign content;
delivering the community content to the user's client system;
updating the community content that is related to the foreign content based on
changes reported by the user's client system; and
delivering a name of at least one other user who has also requested the
foreign
content.
67. A server system for providing Internet-related content which is accessible
by a
user's client system, comprising:
a foreign server for receiving a request from the user's client system and
delivering foreign content in response to the request;
a community server having community content where the community content
is selected by the community server based on the user's interactions with the
foreign
server, and the community server delivers the community content to the client
system
if the user's client system is a member of a predefined community and updates
the
community content that is related to the foreign content based on changes
reported by
the user's client system; and
wherein the community content includes at least one annotation.

-51-




68. A server system for providing Internet-related content accessible from a
client
system, comprising:
a foreign server having foreign content for receiving a request from the
client
system and delivering foreign content; and
a community server having community content related to the foreign content
wherein the community content related to the foreign content is selected by
the
community server based on a user's interactions with the foreign server and is
provided automatically to the client system in response to the request;
wherein the community content includes at least one annotation.
69. A server system for providing Internet-related content accessible from a
client
system, comprising:
a foreign server having foreign content for receiving a request from the
client
system and delivering foreign content; and
a community server having community content related to the foreign content
wherein the community content related to the foreign content is provided
automatically to the client system in response to the request;
wherein the community content includes a notification of one or more
capabilities that are available to a user and are associated with this foreign
content.
70. The server system of claim 69, wherein one of the capabilities is
annotations
to allow a user to annotate the foreign content.
71. The server system of claim 70, wherein the annotations include means for
generating threaded messages associated with the foreign content.
72. The server system of claim 69, wherein one of the capabilities is
annotations
to allow a user to view annotations of the foreign content provided by other
users.

-52-




73. A server system for providing Internet-related content accessible from a
client
system, comprising:
a foreign server having foreign content for receiving a request from the
client
system and delivering foreign content; and
a community server having community content related to the foreign content
wherein the community content related to the foreign content is provided
automatically to the client system in response to the request;
wherein the community content is related to the foreign content in subject
matter.
74. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
relating community content with foreign content;
receiving a request from the user's client system for foreign content from a
foreign server;
delivering the foreign content from the foreign server to the user's client
system in response to the request; and
determining community content that is related to the foreign content;
wherein the community content includes at least one annotation.
75. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
relating community content with foreign content;
receiving a request from the user's client system for foreign content from a
foreign server;
delivering the foreign content from the foreign server to the user's client
system in response to the request;
determining community content that is related to the foreign content; and
delivering annotations authored by other users to the user's client system.

-53-




76. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
relating community content with foreign content;
receiving a request from the user's client system for foreign content from a
foreign server;
delivering the foreign content from the foreign server to the user's client
system in response to the request;
determining community content that is related to the foreign content; and
providing indications of the existence of annotations authored by other users.
77. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
relating community content with foreign content;
receiving a request from the user's client system for foreign content from a
foreign server;
delivering the foreign content from the foreign server to the user's client
system in response to the request;
determining community content that is related to the foreign content; and
delivering a notification of one or more capabilities that are available to
the
user that is associated with this community content.
78. The method of claim 77, wherein one of the capabilities is annotations to
allow the user to annotate the foreign content.
79. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
relating community content with foreign content;
receiving a request from the user's client system for foreign content from a
foreign server;

-54-




delivering the foreign content from the foreign server to the user's client
system in response to the request;
determining community content that is related to the foreign content; and
receiving an annotation from the user's client system, wherein the annotation
is
a comment associated with at least a portion of the foreign content.
80. A method of providing Internet-related content which is accessible by a
user's
client system, comprising:
relating community content with foreign content;
receiving a request from the user's client system for foreign content from a
foreign server;
delivering the foreign content from the foreign server to the user's client
system in response to the request;
determining community content that is related to the foreign content; and
delivering a name of at least one other user who has also requested the
foreign
content.
81. A server system for providing Internet-related content which is accessible
by a
user's client system, comprising:
a foreign server having foreign content for receiving a request from the
user's
client system and delivering foreign content in response to the request; and
a community server having community content where the community content
is related to the foreign content, and the community server is adapted to
locate and
deliver the community content to the client system if the user's client system
is a
member of a predefined community;
wherein the community content includes at least one annotation.

-55-

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02357494 2001-09-06
SYSTEM FOR INTEGRATING AN ON-LINE SERVICE CO1~IMIJNIZ'Y
WITH A FOREIGN SERVICE
BACKGROUND OF THE INVENTION
Field of the Invention
The present invention relates generally to systems for human-computer
interaction. In
particular, the present invention relates to a system and method for enhancing
a computer
user's Internet browsing experience by determining a user's preferences and
facilitating the
user's interaction with a community of users (community members) sharing
similar preferences
via community content annotations related to on-line content and via
synchronous and
asynchronous interactions with community members sharing similar preferences.
Description of Related Art
Computer information services today offer a variety of services and content to
their
subscribers. For example, subscribers of the CompuServe~ Information Service
may retrieve
information or content from a repository maintained by the service or
possibly, by a third party
provider. In addition, CompuServe subscribers may communicate with other
subscribers.
Communications may occur in real time as subscribers initiate and join ongoing
conference
room or "chat" sessions managed by the information service. CompuServe
subscribers may
also communicate directly with one another as well as with non-members via
electronic mail
(e-mail.) Special interest on-line discussion groups (i.e., message boards or
forums) within
CompuServe also provide opportunities for subscribers to communicate with one
another.
Forums are generally comprised of three major areas: a message area, a
library, and a
conference room for forum conferencing.
The message area serves as a place for posting and responding to messages
relating to
a specific topic. When a message is posted and someone responds to it, a
thread is created. A


CA 02357494 2001-09-06
thread is a string of two or more messages that are related to one another and
that share a
particular subject or topic heading (i.e., thread). The forum library serves
as a storage area for
documents, graphics, and other information that may be browsed, searched, or
downloaded.
Forum conferences, on the other hand, are live electronic conversations
between two or more
forum members. It is the facilitation of interaction via these various methods
and in relation to
shared areas or topics of interest that gives on-line information service
subscribers a sense of
belonging to a community.
To interact with the CompuServe Information Service, a subscriber's computer
may be
equipped with communication or connection software that has a graphical user
interface such
as the CompuServe Information Manager for Windows~ (WinCIM). The communication
software allows the subscriber to establish and maintain a connection with the
information
service and to perform tasks and retrieve information content from the service
as well as
interact with other subscribers. Typically, the communication software is
designed to support
all of the features and functionality of the information service and is
tailored to a user's
interaction with the on-line service. Content at the on-line service is
typically organized or
categorized according to areas of interest among groups of users (e.g.,
Windows Users'
Forum, CNN Online, Entrepreneur's Small Business Forum}. Content is generally
presented
or displayed in a similar manner regardless of the area of interest. Users are
able to locate
content easily and communicate easily with others who share similar interests
(e.g., via forums,
e-mail, conferencing or chat} thereby creating communities.
The Internet and World Wide Web (Web), comprised of a vast array of
international
computer networks, provide on-line service subscribers with additional content
or resources to
search. These international computer networks may be comprised of foreign host
computers
or servers (i.e., not part of the on-line service network) that users access
to locate resources.
2


CA 02357494 2001-09-06
Typically, these resources are accessed using a Web browser, such as Spry's
Mosaic,
Microsoft's Internet Explorer, or Netscape's Navigator, capable of
understanding the
HyperText Markup Language (HTML) used to create the documents (Web pages)
found on
the Web and the HyperText Transfer Protocol (HTTP) (as well as other protocols
and/or
applications such as File Transfer Protocol (FTP), Internet Relay Chat (IRC),
telnet, etc.,
collectively "Internet protocols") used to navigate or locate sites on the Web
from which the
HTML and other documents may be accessed. Although Web browsers typically have
varying
levels of functionality or sophistication, retrieved content is displayed
according to views or
presentations specific to the Web page currently presented by the Web browser.
Each
screenful of information includes menu choices, highlighted words, or graphics
through which
users may locate further information, either from the same computer or by
linking
automatically to another computer somewhere else on the Internet. Typically,
the views and
presentations of the Web pages are different than those provided by the
communication
software from the on-line service because the Web browser is, in fact, a
separate client
application displaying Web pages containing presentation directives in the
form of HTML or
another protocol/application such as FTP, IRC, etc.
Web sites are typically linked to one another via Uniform Resource Locators
(URLs).
Users may navigate or browse within a site or between sites simply by
selecting or clicking on
menu choices, highlighted words, or graphics (i.e., links on Web pages) that
represent URLs.
Despite the fact that navigating the Web is easy (users simply point and
click), as it exists
today, the Web is a huge, daunting, mostly disorganized space in which people
wander
aimlessly from link to link (i.e., URL) in hopes of finding meaningful
content. Browsing the
Web is essentially a solitary experience. Most Web pages are designed to
present information
to users rather than to promote interactions with other humans. Most
interaction with other
3


CA 02357494 2001-09-06
humans consists of, "check out this URL" by word of mouth, an e-mail message,
or some
other printed medium Few, if any opportunities for interacting with others are
presented to
Web users.
What is further confusing to many computer users is the fact that they must
learn and
use different user interface software for interacting with or
navigating/browsing the
information service (i.e., information service communication software) than
they use for
interacting with or navigating/browsing the Web. Users' on-line experiences
are compromised
because they must switch between applications to access information service
content and then
InternetlWeb content. Switching between applications requires users to change
not only the
method of interaction. but also changes the context of interactions from
community-oriented
on the on-line service to solitary, less socially oriented interactions on the
Internet/Web.
Therefore. there is a need for an integrated method of interaction that allows
computer users
to access the Internet/Web using a commercially available browser, but also
enjoy community-
oriented activities and interactions of an on-line service that typically may
be accomplished
5 only by leaving the Internet/browser and switching to the on-line service
content/on-line
service communication software. Web users need the ability to form on-line
relationships with
others and to communicate with others of similar interests or background.
SUMMARY OF THE INVENTION
The present invention-the Community Browser-enhances a user's on-line
experience by enabling those with similar interests or shared circumstances to
enjoy on-going
social relations. Social relations in an on-line environment translate to both
real-time
interactive methods or options, such as chat and gaming, and static
interaction methods, such
as viewing annotations (e.g., threaded messaging) and shared bookmarks. The
enabling
4


CA 02357494 2001-09-06
technology of the Community Browser augments the available content on the
Internet/Web
that is accessed via a browser with interaction opportunities for on-line
service members and
for Community-created content by on-line service members. The on-line
conomunity
environment is integrated with a user's browser so that messaging and
interaction components
ofthe on-line service are available while the user browses the Internet.
The Community Browser is a set of tools and capabilities that enable Web users
to
benefit from a focused view of the Web based on shared interest, an available
group of people
accessible for interactions, and a repository for relevant and pertinent
information discovered
while browsing or navigating the Web. The tools may be segmented into two
groups: core
components and interaction components. The core components enable a community
to exist
and are generally transparent to the user. Interaction components enable
various capabilities
and user interactions and facilitate the creation of community content by
users.
The core components comprise a Community Server and a Community Client. The
Community Server maintains communications with the Community Client which
operates on
the user's computer. Together the Community Server and Community Client notify
the user
of annotations by community members affiliated with whatever Web page (as
identified by a
particular URL) he or she happens upon. The Community Server serves requests
from the
Community Client by initiating sessions between the appropriate annotation
components and
the Community Client, thus enabling annotations to be created and interactions
with
community members to occur in conjunction with navigating the Web. The primary
fimction
of the Community Server is as a community communication hub for facilitating
interaction
with a community while the user's browser is running.
The Community Client serves primarily as an access mechanism to the community
services, annotations, and interactions. In a preferred embodiment of the
present invention, it
5


CA 02357494 2001-09-06
is manifested as a toolbar on the user's computer screen when used in
conjunction with a Web
browser selected by the user. In another embodiment of the present invention,
it may also be
used independattly of a Web browser. Toolbar options facilitate the user's
community
interaction options by, for example, allowing the user to access a Web page
for the community
or initiate a chat session with another community member.
The interaction components or methods (i.e., community interaction options)
enable
aspects of community experiences for users and allows them to engage in on-
going social
relations. The interaction components may comprise message boards (or forums),
chat,
community bookmarks, gaming, and voting. In a preferred embodiment of the
present
invention. the interaction components support "capabilities" associated with a
community.
Capabilities may be viewed as actions that may be performed in a community.
Each
community may support a set of common or unique capabilities.
Message boards enable asynchronous interactions between community members
through threaded messaging. Community threaded messages or annotations are
associated
with a particular Web page as identified by a URL. The concept of associating
annotations to
Web pages enables community members to create a natural organization for their
messages.
The Web page acts as the high-level interest filter and the topics of the
associated annotations
further define the context based on contnbutions from community members. Thus,
community messaging becomes a true expression mechanism for the community and
the
millions of Web pages become catalysts for eliciting comments from community
members.
Conferencing or "chat" enables real-time interactions between community
members.
Community members may initiate or just participate in real-time streaming chat
sessions.
Streaming chat includes the capability for users to exchange text, audio, and
other multimedia
type data.
6


CA 02357494 2003-08-28
Community bookmarks enable community members to contribute Web pages
for the benefit of other community members. Contributors gain community
recognition for their contributions. When creating a community bookmark, the
contributor provides a title and a description for his or her contribution.
This
information may be indexed into a directory service at the time of creation so
that it
may be retrieved later.
Community members may also participate in on-line games such as DOOM,
Quake, Flight Simulator. Users are presented with capabilities for inviting
others to
participate in a game and capabilities for actually participating in an on-
line game.
Voting enables community managers and members to understand the
temperament of the community based on input gathered through voting. There are
two types of voting. (1) Votes may be registered for or against community
bookmarks, thus creating a community rating system for the bookmarks. (2) A
real-
time polling mechanism enables community managers to ask questions and get
immediate feedback from the community members while on-line.
Embodiments of the present invention may allow Web users to form on-line
relationships with Community members, to communicate with others of similat~
interest or backgrounds, and to view Community content. The Communities of
such
embodiments may serve as a starting or focal point for Web navigating. Such
embodiments provide a structure for a Web experience and help users avoid
being
overwhelmed or overloaded by the complexity of the Web.
In accordance with one aspect of the invention, there is provided a method for
integrating a community with a web browser. The method includes defining
community content for a plurality of communities, defining capabilities for
each of
the plurality of communities, and associating each of the plurality of
communities
with an identifier for a web page. The method further includes defining a
community
client adapted for interacting with the web browser and for responding to
notifications
regarding the plurality of communities, and defining an online service
community
server adapted for transmitting notifications to the community client. The
method
also includes transmitting from the online service community server to the
community
client notifications regarding a community associated with an identifier for a
web
page selected in accordance with the web browser.


CA 02357494 2004-06-09
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content accessible from a client system.
The
server system includes a foreign server having foreign content for receiving a
request
from the client system and delivering foreign content, and a community server
having
community content related to the foreign content. The community content
related to
the foreign content is selected by the community server based on a user's
interactions
with the foreign server, is provided automatically to the client system in
response to
the request and is updated based on changes reported by the client system to
the
community server.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes relating community content with foreign content, receiving
a
request from the user's client system for foreign content from a foreign
server,
delivering the foreign content from the foreign server to the user's client
system in
response to the request, and determining community content that is related to
the
foreign content based on the user's interaction with the foreign server. The
method
also includes delivering the community content to the user's client system,
and
updating the community content that is related to the foreign content based on
changes reported by the user's client system.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content which is accessible by a user's
client
system. The server system includes a foreign server having foreign content for
receiving a request from the user's client system and delivering foreign
content in
response to the request, and a community server having community content. The
community content is related to the foreign content, and the community server
is
adapted to locate and deliver the community content to the client system based
on the
user's interaction with the foreign server and update the community content
based on
changes reported to the community server by the user's client system if the
user's
client system is a member of a predefined community.
In accordance with another aspect of the invention, there is provided a method
for integrating a community with a web browser. The method includes defining
community content for a plurality of communities, defining capabilities for
each of
-7A-


CA 02357494 2004-06-09
the plurality of communities, and associating each of the plurality of
communities
with an identifier for a web page. The method further includes defining a
community
client adapted for interacting with the web browser and for responding to
notifications
regarding the plurality of communities, and defining a community server
adapted for
transmitting notifications to the community client. The method also includes
transmitting from the community server to the community client notifications
regarding a community associated with an identifier for a web page selected in
accordance with the web browser. Defining capabilities for each of the
plurality of
communities includes: defining a home page for each of the plurality of
communities; defining comments for each of the plurality of communities;
defining
a list of online users for each of the plurality of communities; defining real
time
interactions for each of the plurality of communities; defining invitations
for each of
the plurality of communities; defining instructions for each of the plurality
of
communities; defining message interactions for each of the plurality of
communities;
and defining Internet features for each of the plurality of communities.
In accordance with another aspect of the invention, there is provided a method
for integrating a community with a web browser. The method includes defining
community content for a plurality of communities, defining capabilities for
each of
the plurality of communities, and associating each of the plurality of
communities
with an identifier for a web page. The method further includes defining a
community
client adapted for interacting with the web browser and for responding to
notifications
regarding the plurality of communities, and defining a community server
adapted for
transmitting notifications to the community client. The method also includes
transmitting from the community server to the community client notifications
regarding a community associated with an identifier for a web page selected in
accordance with the web browser. Transmitting from the community server to the
community client notifications regarding a community includes notifying a user
of the
web browser of capabilities defined for the community associated with the
identifier
for the web page selected in accordance with the web browser.
In accordance with another aspect of the invention, there is provided a method
for integrating a community with a web browser. The method includes defining
community content for a plurality of communities, defining capabilities for
each of
-7B-


CA 02357494 2004-06-09
the plurality of communities, and associating each of the plurality of
communities
with an identifier for a web page. The method further includes defining a
community
client adapted for interacting with the web browser and for responding to
notifications
regarding the plurality of communities, and defining a community server
adapted for
transmitting notifications to the community client. The method also includes
transmitting from the community server to the community client notifications
regarding a community associated with an identifier for a web page selected in
accordance with the web browser. Transmitting from the community server to the
community client notifications regarding a community includes notifying a user
of the
web browser of annotations associated with the identifier for the web page,
other
community members associated with the identifier for the web page, and in
progress
chats associated with the identifier for the web page.
In accordance with another aspect of the invention, there is provided a method
for integrating a community with a web browser. The method includes defining
community content for a plurality of communities, defining capabilities for
each of
the plurality of communities, and associating each of the plurality of
communities
with an identifier for a web page. The method also includes defining a
community
client adapted for interacting with the web browser and for responding to
notifications
regarding the plurality of communities, and defining a community server
adapted for
transmitting notifications to the community client. The method further
includes
transmitting from the community server to the community client notifications
regarding a community associated with an identifier for a web page selected in
accordance with the web browser. Transmitting from the community server to the
community client notifications regarding a community includes determining the
contents of the notifications in accordance with a tracking server.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content accessible from a client system.
The
server system includes a foreign server for receiving a request from the
client system
and delivering foreign content, and a community server having community
content
provided automatically to the client system in response to the request. The
community content is selected by the community server based on a user's
interaction
-7C-


CA 02357494 2004-06-09
with the foreign server and is updated based on changes reported by the client
system
to the community server. The community content includes at least one
annotation.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content accessible from a client system.
The
server system includes a foreign server for receiving a request from the
client system
and delivering foreign content, and a community server having community
content
provided automatically to the client system in response to the request. The
community content is selected by the community server based on a user's
interactions
with the foreign server and is updated based on changes reported by the client
system
to the community server. The community content includes a notification of one
or
more capabilities that are available to a user and are associated with this
foreign
content.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content accessible from a client system.
The
I 5 server system includes a foreign server for receiving a request from the
client system
and delivering foreign content, and a community server having community
content
provided automatically to the client system in response to the request. The
community content is selected by the community server based on a user's
interactions
with the foreign server, is related to the foreign content in subject matter
and is
updated based on changes reported by the client system to the community
server.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes receiving a request from the user's client system for
foreign
content, and delivering the foreign content to the user's client system in
response to
the request. The method further includes determining community content that is
related to the foreign content based on the user's interaction with the
foreign content,
delivering the community content to the user's client system, and updating the
community content that is related to the foreign content based on changes
reported by
the user's client system. The community content includes at least one
annotation.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes receiving a request from the user's client system for
foreign
-7D-


CA 02357494 2004-06-09
content, and delivering the foreign content to the user's client system in
response to
the request. The method further includes determining community content that is
related to the foreign content based on the user's interaction with the
foreign content,
delivering the community content to the user's client system, updating the
community
content that is related to the foreign content based on changes reported by
the user's
client system, and delivering annotations authored by other users to the
user's client
system.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes receiving a request from the user's client system for
foreign
content, and delivering the foreign content to the user's client system in
response to
the request. The method further includes determining community content that is
related to the foreign content based on the user's interaction with the
foreign content,
delivering the community content to the user's client system, updating the
community
content that is related to the foreign content based on changes reported by
the user's
client system, and providing indications of the existence of annotations
authored by
other users.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes receiving a request from the user's client system for
foreign
content, and delivering the foreign content to the user's client system in
response to
the request. The method further includes determining community content that is
related to the foreign content based on the user's interaction with the
foreign content,
delivering the community content to the user's client system, updating the
community
content that is related to the foreign content based on changes reported by
the user's
client system, and delivering a notification of one or more capabilities that
are
available to the user that is associated with this community content.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes receiving a request from the user's client system for
foreign
content, and delivering the foreign content to the user's client system in
response to
the request. The method further includes determining community content that is
-7E-


CA 02357494 2004-06-09
related to the foreign content based on the user's interaction with the
foreign content,
delivering the community content to the user's client system, updating the
community
content that is related to the foreign content based on changes reported by
the user's
client system, and receiving an annotation from the user's client system. The
annotation is a comment associated with at least a portion of the foreign
content.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes receiving a request from the user's client system for
foreign
content, and delivering the foreign content to the user's client system in
response to
the request. The method further includes determining community content that is
related to the foreign content based on the user's interaction with the
foreign content,
delivering the community content to the user's client system, updating the
community
content that is related to the foreign content based on changes reported by
the user's
client system, and delivering a name of at least one other user who has also
requested
the foreign content.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content which is accessible by a user's
client
system. The server system includes a foreign server for receiving a request
from the
user's client system and delivering foreign content in response to the
request, and a
community server having community content. The community content is selected
by
the community server based on the user's interactions with the foreign server,
and the
community server delivers the community content to the client system if the
user's
client system is a member of a predefined community and updates the community
content that is related to the foreign content based on changes reported by
the user's
client system. The community content includes at least one annotation.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content accessible from a client system.
The
server system includes a foreign server having foreign content for receiving a
request
from the client system and delivering foreign content, and a community server
having
community content related to the foreign content. The community content
related to
the foreign content is selected by the community server based on a user's
interactions
-7F-


CA 02357494 2004-06-09
with the foreign server and is provided automatically to the client system in
response
to the request, and the community content includes at least one annotation.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content accessible from a client system.
The
server system includes a foreign server having foreign content for receiving a
request
from the client system and delivering foreign content, and a community server
having
community content related to the foreign content. The community content
related to
the foreign content is provided automatically to the client system in response
to the
request, and the community content includes a notification of one or more
capabilities
that are available to a user and are associated with this foreign content.
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content accessible from a client system.
The
server system includes a foreign server having foreign content for receiving a
request
from the client system and delivering foreign content, and a community server
having
community content related to the foreign content. The community content
related to
the foreign content is provided automatically to the client system in response
to the
request, and the community content is related to the foreign content in
subject matter.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includesrelating community content with foreign content, receiving
a
request from the user's client system for foreign content from a foreign
server,
delivering the foreign content from the foreign server to the user's client
system in
response to the request, and determining community content that is related to
the
foreign content. The community content includes at least one annotation.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes relating community content with foreign content, receiving
a
request from the user's client system for foreign content from a foreign
server,
delivering the foreign content from the foreign server to the user's client
system in
response to the request, determining community content that is related to the
foreign
content, and delivering annotations authored by other users to the user's
client system.
-7G-


CA 02357494 2004-06-09
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes relating community content with foreign content, receiving
a
request from the user's client system for foreign content from a foreign
server,
delivering the foreign content from the foreign server to the user's client
system in
response to the request, determining community content that is related to the
foreign
content, and providing indications of the existence of annotations authored by
other
users.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes relating community content with foreign content, receiving
a
request from the user's client system for foreign content from a foreign
server,
delivering the foreign content from the foreign server to the user's client
system in
response to the request, determining community content that is related to the
foreign
content, and delivering a notification of one or more capabilities that are
available to
the user that is associated with this community content.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes relating community content with foreign content, receiving
a
request from the user's client system for foreign content from a foreign
server,
delivering the foreign content from the foreign server to the user's client
system in
response to the request, determining community content that is related to the
foreign
content, and receiving an annotation from the user's client system. The
annotation is a
comment associated with at least a portion of the foreign content.
In accordance with another aspect of the invention, there is provided a method
of providing Internet-related content which is accessible by a user's client
system.
The method includes relating community content with foreign content, receiving
a
request from the user's client system for foreign content from a foreign
server,
delivering the foreign content from the foreign server to the user's client
system in
response to the request, determining community content that is related to the
foreign
content, and delivering a name of at least one other user who has also
requested the
foreign content.
-7H-


CA 02357494 2004-06-09
In accordance with another aspect of the invention, there is provided a server
system for providing Internet-related content which is accessible by a user's
client
system. The server system includes a foreign server having foreign content for
receiving a request from the user's client system and delivering foreign
content in
response to the request, and a community server having community content where
the
community content is related to the foreign content. The community server is
adapted
to locate and deliver the community content to the client system if the user's
client
system is a member of a predefined community, and the community content
includes
at least one annotation.
The features and benefits of the present invention may be better understood by
referring to the following description of specific exemplary embodiments of
the
invention in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS)
-7I-


CA 02357494 2001-09-06
Figure 1 is a diagrammatic representation of a system architecture for a
preferred
embodiment of the present invention;
Figure 2 is a diagrammatic representation of Community Client components for a
preferred embodiment of the present invention;
Figure 3 is a diagrammatic representation of a Community Server architecture
for a
preferred embodiment of the present invention;
Figure 4 is a diagrammatic representation of a Tracking Server architecture
for a
preferred embodiment of the present invention;
Figure 5 is a diagrammatic representation of a Threaded Message Server
architecture
for a preferred embodiment of the present invention; and
Figure 6 is a screen shot of Web page, Community Client, and Community Web
page
for a preferred embodiment of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS)
Referring to Figure l, a diagrammatic representation of the system
architecture for a
preferred embodiment of the present invention is shown. Preferably, the system
is comprised
of several servers providing specialized services to accomplish the features
and functionafrty of
the present invention. Some servers may be part of a wide area network owned,
operated, and
maintained by an on-line service. Other servers may be owned, operated, and
maintained by a
third party or many third parties and may thus constitute a foreign service.
From the
viewpoint of the on-line service, these third-party servers are foreign
servers because they are
not part of the wide area network of the on-line service. Preferably, the
foreign servers are
part of a global wide area network such as the Web portion of the Internet.
Each server,
whether part of the on-line service or foreign, is comprised of hardware and
software elements
8


CA 02357494 2001-09-06
that provide a sophisticated set of services or operations for use by clients.
Preferably,
communications between servers are accomplished using well-known connection
technology
such as TCP/IP connections. Finally, data needed by the present invention may
be stored in
databases accessible via any one of a number of interfaces (e.g., Open
Database Connectivity
(ODBC) interface.)
In a preferred embodiment of the present invention, object-oriented software
tecktnology (Object-Oriented Programming-OOP) is used to implement the
features and
functionality of the software components that comprise the present invention.
OOP
techniques involve the definition, creation, use, and destruction of
"objects." These objects
are based on software entities or classes comprising data types and procedures
that are
automatically associated with them. Classes serve as templates that instruct
on building or
creating an object. OOP techniques are well-known in the art.
Referring again to Figure 1, users of the present invention interact with or
browse the
Web using a commercially available Web browser 10 such as Spry's Mosaic,
Netscape's
Navigator, or Microsoft's Internet Explorer. The Web browser allows a user to
retrieve
information from servers through any one of a number of well-known protocols
and/or
applications (including the HyperText Transfer Protocol (HTTP), File Transfer
Protocol
(FTP), Internet Relay Chat (1RC), telnet) that has been made publicly
available on the Internet.
A user retrieves information via the browser by supplying a URL 22 (e.g.,
www.somehost.com). A connection is then made to the Web server 24 associated
with the
URL. Once connected, the user may "browse" the information at the Web site by
reading the
text and viewing the graphics on the Web page and selecting links to related
information which
may or tray not be available from the same server. The servers with which the
user interacts
9


CA 02357494 2001-09-06
are owned, operated, and maintained by many different parties and are, from
the viewpoint of
an on-line service, foreign servers.
Also in communication with the user's Web browser 14-via a Community Client
comprising a Remote Passphrase Authentication module 12 and community control
module 14
embodied in dynamic link libraries (DLLs}-is a Community Server 18 which is
part of the on
line service (i.e., owned, operated, and maintained by the service). The
Community Server 18
manages communities as defined by Home Pages for each community, annotations
(i.e.,
information service content) and their associations with or links to Web pages
(as identified by
URLs), and sessions established on behalf of members to enable community
interactions via
community interaction options. The Community Server 18 acts as the community
communication hub. Preferably, the on-line service community environment is
based on the
same technology as the Web so that communities integrate easily with the Web
environment.
Communications between the community control module 14 of the Community Client
and
Community Server 18 may occur via a TCP/IP connection 16. When the user
navigates to a
new Web page 22, a message (e.g., HTTP message containing the new URL 20) is
sent from
the Community Client 14 to the Community Server 18 via the TCP/IP connection
16 so
interactions may begin with the community associated with the new Web page.
In a preferred embodiment of the present invention, user authentication is
accomplished va a separate Remote Passphrase Authentication module 12 of the
Community
Client that communicates with a Remote Passphrase Authentication (RPA) enabled
server 36
via the Community Server 18. The RPA enabled Server 36 may further access a
passphrase
database to perform user authentication. Communications between the Remote
Passphrase
Authentication module 12 of the Community Client, Community Server 18, and RPA
enabled
server 36 may be accomplished in accordance with any one of a number of well-
known


CA 02357494 2001-09-06
protocols and/or applications including HTTP, FTP, IRC, etc. messages sent via
TCP/IP
connections 16, 34.
Once a user is authenticated, a "persistent connection" is made between the
Community Client module 14 and the Community Server 18. This persistent
connection,
unique to the present invention. is used to send and receive notifications to
and from the
Community Server 18. The Community Clieslt 14 reports to the Community Server
18
changes in the Web page as identified by the URL 20. Preferably, changes are
reported by the
Community Client 14 to the Community Server 18 using HTTP messages 20. Other
protocols
such as FTP, IRC, etc. may be used as well. The Community Server 18 responds
to the
Community Client 14, via a H'TTP message 20, with notifications. Consequently,
the
persistent connection between the Community Server 18 and Community Client 14
may be
accomplished using extensions to a stateless connection technology (e.g.,
increasing a time-out
value on a HTTP connection.) Additional transparent communication thus takes
place
between the Community Client 14 and Community Server 18 to track the user's
Web
I S interaction and determine a context for the user's interactions while the
user interacts with the
Web browser in accordance with a series of stateless transactions in which the
user changes
Web pages based on changes to the current URL 22. In addition to HTTP, other
protocols
such as FTP, IRC, etc. may be used depending on what is to be displayed or
what interactions
are to occur.
Each community supported by the present invention may provide "capabilities."
The
actions that may be performed within a community are the communities
capabilities.
Capabilities represent a variety of interaction methods or options. Primary or
core capabilities
may include a "Community Centre" (or Home Page which introduces the user to
the
community), "Create or View Comments" (e.g., annotations such as threaded
messages,
11


CA 02357494 2001-09-06
documents, spreadsheets, etc. for a particular community), "Who's Online" (a
list of members
currently in the community), "Chat" (real time interactions with other
community members),
"Imritations" (messages from one community member to another to chat, play a
game, etc.),
"Help" (instructions on how to perform a particular task, for example),
"Notices and Personal
Messages" (e.g., email), "Internet Features" (e.g., CUCME, Internet Phone),
"Games" (e.g.,
DOOM, Quake. Flight Simulator). Special capabilities tray also be developed
for a
community.
Users may be introduced to or notified of capabilities via 'Snotifications."
Notifications
are associated with communities and indicate or reference additional
information or content
(i.e., Cotnmuttity Content) as well as interaction options or methods that
tray be of interest to
the user. As the user continues to browse or "surf" the Web, notifications may
be sent to the
Community Client 14 from the Community Server 18 to let the user know what
additional
community capabilities or features are available for the current Web page or
UItL. For
example, for a given URL, notifications may be sent to indicate a series of
annotations exist
for this page, additional community members are also at this page, and/or a
real-time chat is in
progress between several community members. Notifications may be viewed as
temporary
listings as they are determined at the time of access to the URL to reflect
the current state of
the community. Notifications may also be comprised of specific on-line content
such as
current stock quotes that the user has requested to receive at specified
intervals (e.g., once a
day. )
Annotations-which are one type of capability of the present invention-may be
viewed as "notes" regarding related information service content that are
associated with or
linked to a particular Web page as identified by a URL. The notes tray be
comprised of a list
of subject or topic related headings (i.e., forum message threads) that a user
may peruse, a list
12


CA 02357494 2001-09-06
of threaded messages relating to a particular subject or topic heading, or the
contents of a
particular message. Notes may also include library or archive files related to
the general
subject matter or topic of messages. When the user navigates to a Web page, as
identified by
a URL and for which annotations are available, a Web page containing the
annotations is
presented on request to the user to allow the user to review or access the
annotations.
Referring again to Figure 1, the Threaded Message Server 54 is used to create
and
retrieve threaded message type annotations that are associated with specific
URLs. As
community members interact with one another via message boards, the messages
they submit
are organized and stored by this component 54 for later retrieval based on a
particular URL.
When another user (or the same user) later provides the same URL, the
annotations (or
threaded messages) associated with the URL may be retrieved by the Threaded
Message
Server 54 and presented to the user. Dep~ding on the actions of the user, a
list of threaded
messages, a list of messages within a thread, or an actual message may be
presented to the
user. Access to related library or archive files may also be provided.
In a preferred embodiment of the present invention, the Threaded Message
Server 54
runs as an extension to a server that performs Remote Passphrase
Authentication so that
access to a community is through a secure means. The Community Server 18
interacts with
the URL database 40 to determine whether annotations are available for a
particular URL (i.e.,
the URL just selected by the user). If the URL database 40 indicates
annotations are available,
the Community Server 18 interacts with the Threaded Message database 58
(preferably, via a
POET interface to the Threaded Message Server 54) to locate the messages.
Preferably, the
URL database is organized according to communities and contains maps (e.g., by
referencing
or pointing to a file) to on-line service content associated with a URL (or a
series of URLs).
13


CA 02357494 2001-09-06
The Community Server 18 also interacts with a Membership database 44 to
determine
if a user belongs to the community associated with the URL. If it is
determined a user belongs
to a community, the user is given the opportunity to enter the community
(e.g., select a
control button or icon that represents the community). The user may then
access a home page
for the community, view community comments (e.g., view the annotations of the
community
associated with the URL), search community comments, and create or reply to
community
comments. A member of a community may also interact and communicate with other
community members who have similar interests or shared circumstances by
initiating
synchronous communications such as chat or conferencing.
To become a member of a community, a user affirmatively requests access to a
membership module which, in a preferred embodiment of the preset invention, is
a stand-alone
process that may be initiated from any one of a number of sources including a
Web site, a
Community Client, on-line service sign-up process, etc. During the membership
process,
information about the user (e.g., preferences and profile data such as name,
address, age,
billing information, interests and hobbies, favorite Web sites, etc.) is
collected and stored in the
Membership database 44. Because users complete the membership process for each
community they wish to join, they may have a different profile for every
community to which
they belong. Users may also cancel community memberships resulting in deletion
of the
specific preference and profile data from the community membership database.
In some cases,
a user may become a member of a community automatically (i.e., without
affirmatively
initiating the membership process) as some communities may be open to all on-
line service
users or possibly, all Web users.
In a preferred embodiment of the present invention, the Community Server 18
communicates with a Tracking Server 32 via a TCP/IP connection 30 to determine
the
14


CA 02357494 2001-09-06
contents of notifications to be sent. Notifications include information
regarding the presence
of members within a community at a given time and information regarding chat
sessions
currently in progress. This dynamic information preferably, is, tracked so
that notifications
accurately reflecting the state of a community may be sent quickly to the user
who has just
entered the community by specifying an associated URL. The Tracking Server 32
thus logs in
a tracking database 50 accessible via an OBDC interface 48 information
regarding the
activities of users served by the Community Server 18. Activities that may be
tracked include
Web pages accessed, messages posted to the message board, and chat rooms
created or
entered. The Tracking Server 32 monitors user actions so that users who share
similar
interests may learn of one another and communicate with one another through a
variety of
options (e.g., engaging in real-time chat sessions or viewing threaded
messages submitted by
community members). In addition, data about user actions may be aggregated and
reported to
community members (e.g., results of voting on a particular issue).
In a preferred embodiment of the present invention, a session between a
Community
I S Server and a Community Client is managed by primarily two objects-a
Session object and a
Community object. The Session object controls communications sessions with the
Community
Server. It maintains a list of communities to which the users belongs so that
access to
communities may be provided as the user navigates the Web. In the event the
user requests
access to community content or community interactions, the Session object
establishes a
Community object that manages interactions with a specific Community server.
The
Community server, in tum, is responsible for managing interactions with the
community
associated with the Web page. Preferably, each community is identified by a
text name and an
identification number and has an associated port number through which a
connection may be
established to a Community server. Preferably, each interaction between a
Community Client


CA 02357494 2001-09-06
and a Community Server is identified by a "Capability Id" number. These
numbers represent
specific features. functions, or community capabilities that may be offered to
the user. Primary
or core capabilities may include a "Community Centre" (or Home Page which
introduces the
user to the community), "Create or View Comments" (e.g., annotations for a
particular
community), 'N~ho's Online" (a list of members currently in the community),
"Chat" (real time
interactions with other community members) and "Invitations" (messages from
one community
member to another to chat, play a game, etc.). Special capabilities may also
be developed for
a community.
Each capability may be comprised of one or more functions. For example, a
"comments capability" that provides the ability to annotate or attach comments
to a Web site
may support functions such as notification (change attribute of screen to
notify user comments
for the current Web page are available), messaging (view list of topics
associated with a Web
page, view list of topics created in a community, read messages within a
topic, reply to a
message, etc.), and chat (view list of associated public chat rooms, enter
into private and
public chat sessions). A membership capability may include functions that
support listing (list
of members currently participating in a community), profile (access member
profile data),
modify (personal profile data), and search (community membership), etc.
Referring to Figure 2, a diagrammatic representation of the Community Client
components for a preferred embodiment of the present invention is shown. In
one
embodiment of the present invention, the Community Client is operative in the
Microsoft~
Windows~ operating system environment. In a preferred embodiment of the
present
invention, a user of the present invention interacts with the Community Server
via the
Community Client. The Community Client, which may be resident on the user's
computer and
appear as a toolbar, is responsible for both the user's on-line experience and
his or her
16


CA 02357494 2001-09-06
connection with the Community Server. Preferably, this component does not rely
on a
propriety interface to the Web. Rather it operates as an extension to a
commercially available
browser such as Spry's Mosaic, NetScape's Navigator, or Microsoft's Internet
Explorer. The
Browser Independence Manager 60 abstracts the browser's programmable interface
so that
multiple browsers may be supported. The Community Session Manager 78 handles
communication with the Community Server based on requests from the Web
browser.
Community content is retrieved and then passed to the Community Content Viewer
64. The
Toolbar and Capabilities Manager 68 is responsible for creating and managing
the Community
"Toolbar" that appears on the user's screen. From the user's point of view,
the toolbar is the
user interface for controlling the Community. The Toolbar and Capabilities
Manager 68 may
also interface to one or more Capability Handlers 74 that support the
community's capabilities
or interaction options. The Toolbar and Capabilities Manager 68 interacts with
the Capability
Handlers) 74 so that toolbar controls for various capabilities are made
available to the user.
Preferably, a Capability Handler 74 manages multiple capabilities. A
Capability Handler 74
I S may also arrange to have additional controls (as part of the toolbar or in
a separate
window/area of the screen) presented to a user to further facilitate a user's
interactions with
community content and other community members.
Communications between the various components that comprise the Community
Client
62, 66, 70, 72, 76, 80 may be accomplished using several mechanisms. For
example, well
known interprocess communication mechanisms such as Microsoft's Windows~
Dynamic
Data Exchange (DDE) 76 or Object Linking and Embedding (OLE) formats may be
used.
Using DDE, programs running on the same computer (e.g., Web browser and
Communityy
Client) may exchange data with each other while they are running.
Alternatively, the OLE
format may be used such that the information processed by the different
applications may be
17


CA 02357494 2001-09-06
combined or communicated among the applications. Communications between the
Community Session Manager 78 and Community Server may be accomplished using a
TCP/Il'
connection 80. It is noted that a lesser or greater number of components may
be developed to
accomplish the same features and functionality of the Community Client.
Furthermore, other
arrangements of similar components and other interprocess communication
mechanisms may
be used to accomplish the same features and functionality of the Community
Client.
Referring to Figure 3, a diagrammatic representation of the Community Server
104
architecture for a preferred embodiment of the present invention is shown.
'The Community
Server 104 acts as a dispatcher and gatekeeper to the additional back-end
servers that provide
the features and functionality of the preset invention. It provides a secure
entry point for the
Community Client 100 and mediates all transactions between the Community
Client (and Web
browser) and the servers. Preferably, the Community Server 104 relies .on
asynchronous I/O,
{e.g., via HTTP or some other protocol such as FTP or IRC over a TCP/IP
connection 102)
with the Community Client 100.
In a preferred embodiment, the Community Server 104 may be comprised of
several
threads. The Service Control Thread 114 performs service initialization,
shutdown, and selves
as a central repository for global configuration information. The TCP/IP
Listener Thread 106
listens on TCP/IP port 80 for inbound client connections. When a client
connects to the
service, this thread creates a client connection object that is passed to a
Connection Worker
Thread for processing.
Pseudo code for the main processing loop may be as follows:
While (TItUEJ
Block waiting for new client connection
If connection was established OK
Create client connection object
Post a completion event for this connection object to a
Connection worker Thread
18


CA 02357494 2001-09-06
En dwhi 1 a
Three additional classes of worker thread pools 108 may perform the majority
of the
server's work. The first worker thread pool is the Connection Worker Thread
Pool.
Typically, there are two of these threads for each processor on the host
machine.
Pseudo code for the main processing loop may be as follows:
While (TRUE)
Block waiting for Async I/0 Completion Event
(via GetQueuedCompletionStatus(Jl
Use the data returned by the above to obtain the connection
object associated with the I/O event.
Call the connection object's virtual CompletionReceived()
method
Endwhile
The second worker thread pool is the ODBC Connection Thread Pool. A pool of
threads may be created at server startup time, each of which establish a
persistent ODBC
connection with a community database. Depending on load, the server may also
create
additional ODBC threads as needed. When a connection object needs to access an
ODBC
datasource, it may take control of one of these pooled threads and make its
database queries in
its own dedicated thread.
The third worker thread pool is the Asynchronous I/O Thread Pool. This thread
pool
is similar to the ODBC Connection Thread Pool in that the threads may be
started when the
service is initialized. Their main propose is to allow connection objects to
perform
synchronous I/O operations (e.g., connecting to the tracking server,
performing a synchronous
write down a socket, etc.) which may block in a thread so that the main worker
threads may
continue processing while this blocking I/O occurs.
19


CA 02357494 2001-09-06
This Active Session List 110 contains the context of all users currently
logged into a
particular community server. The user's m~nbership information may be cached
here as well
as some other maintenance information.
The Active Connection List 112 is a list of all active connections with the
Community
Server (but not active sessions). This list may be used by the Garbage
Collection thread 118
to purge stale connections (e.g., connections waiting for outstanding
asynchronous I/O events
from a client that may have gone away). A connection is a client establishing
a TCP/iP
connection with the Community Server, making a request (e.g., login, get URL
information,
vote, create message, etc.), and receiving a reply. A session is the group of
connections that
apply to a single user from the initial login request to the logout request.
The tracking server
may also establish connections that are kept on this list.
This Tracking Server Log 116 thread is dedicated to one-way communication
between
the Community Server and the Tracking Server. All tracking server transactions
that do not
require a reply (e.g., those that are used for statistics purposes) are sent
to the Tracking Server
from a dedicated connection.
The Tracking Server Listener Thread 112 is similar to the TCP/IP Listener
Thread
106, except that this listener accepts connections from a Tracking Server (on
a di$'erent
TCP/IP port than client connections come in on). Pseudo code for the main
processing loop
may be as follows:
While lTRUEJ
Block waiting for new tracking server request connection
If connection was established OK
Create tracking server connection object
Post a completion event for this connection object to a
Connection Worker Thread
Endwhile


CA 02357494 2001-09-06
The Garbage Collection Thread 118 looks for connections and sessions that have
not
been active for some configurable period of time. If they have expired, this
thread purges
them from the service. This function alleviates memory creep as the service
runs for long
periods oftime (perhaps, weeks).
The Statistics Log Thread 120 may track information regarding activity on the
server
such as how many accesses have been attempted, the length of time users are
connected to the
Community Server, etc.
A series of transactions between the Community Client and the Community Server
take place to accomplish the features and functionality of the present
invention. Transactions
may be generally in two distinct classes: requests (e.g., Crequest) and
responses (e.g.,
CResponse. ) Transactions take place over a persistent virtual connection
between the two
components. Asynchronous requests may thus be sent between the components, for
example,
using I-iTTP, FTP, IRC, etc.
Preferably, the Community Client and Community Server perform all
communications
across a TCPIIP connection established on port 80. A class (e.g., CSession) is
created to
handle all client-server protocol negotiation. The client application then
handles the contents
of predefined CRequest and CResponse classes passed between client and the
server.
A client establishes a login session, by sending a login request to the
server. Once
authenticated (using a RPA enabled Server), the user session may be
established and a virtual
connection maintained between the client and server. This virtual connection
serves as the
mechanism by which the server sends asynchronous messages to the client (e.g.,
via 1-1'ITP,
FTP, IRC). An example may be a Chat invitation from one user to another
community
member.
21


CA 02357494 2001-09-06
Subsequent requests made by the client of the server tray be conducted on a
separate
connection such as a Windows socket connection. This connection tray be
established and
taken down transparently to the client application (e.g., embedded in the
CSession class
member functions). This subsequent connection tray be authenticated by the
server using
Remote Passphrase Authentication mechattistns.
Log_in Transaction
Preferably, there are 4 steps in the login transaction:
1. Login Request (client to server)
2. Authentication Challenge (server to client)
3. Response to Challenge (client to server)
4. Login Response (server to client)
Preferably, the Client initiates the Login Request by sending the following
H'TTP
request:
"CSI-Community-Session/<version> Login HTTP/1.0<crlf>"
The Community Server responds with an extended HTTP response code of 901 along
with a RPA WWW Authenticate response header. The connection is maintained by
both the
client and server at this point as the server awaits the clients response to
the RPA challenge.
The client sends a Login Packet of the following format:
Field # DESCRIPTION


Name B tes


Version 4 Version identifier of the
ID packet


Packet 4 Length of Login Paeket
in bytes


Length


22


CA 02357494 2001-09-06
Login varies Serialized MFC Cobject derived class
Packet ~ containing:
DWORD Request Type Code
DWORD Transaction Version Id
CString RPA Authorization
Cheating Header
Loein Response (Server to Client)
If authenticated, the server responds with a Login Response packet.
Fidd # DESCRIPTIOPI


Nsme B tes


Version 4 Version identifier of the
ID packet


Packet 4 Length of Login Packet in
bytes


Length


Login varies Serialized MFC Cobject derived
class


Response containing:


Packet


DWORD Response type Code


DWORD Version ID


CString RPA security context


CString RPA session key


CString RPA response


CString Uaer Name


CString User Name Realm


DWORD Base Community ID


CobArray Array of N member
info


objects


Member Info Objecc structure


DWORD Community ID


CString CommunityName


CString Community Homepage
URL


Cstring User Alias


(screen name)


DWORD Flags


There are 2 steps in the client request protocol:
I. Request (client to server)
2. Response (server to client)
The client initiates the Login Request by sending the following HTTP request.
CSI-Community-Session/<version> Request HTTP/1.0 <crlf>
Content-Length: <length of request packet> <crlf>
<crlf>
<request transaction>
23


CA 02357494 2001-09-06
The format of a request transaction may be as follows:
Field # DESCRIPTION


Name B


Version 4 Version identifier of the packet
ID


Packet 4 Length of Request Packet in bytes


Length


Request varies Serialized MFC Cobject derived class
containing:


Packet


DWORD Request Type Code


DWORD Transact_on Version Id


CString RPA Authorization Cheating
Header


<varies depending on packet type>


The following table contains descriptions of the various request types.
Request Code DirectionContents


Type C- Client


S- Server


Error 0 C ~ S DWORD Error Code.Win32 or
WINSOCK error


code


CString Descriptive error
message


Login 1 C ~ S N/A See Login protocol


Logout 2 g ~ N/A Client infoxzna server
that user is


logging off.


Get URL 3 C ~ S CString VRL


Info CDWOrdArray Array of community


IDs the client is


querying the server


about for this URL


24


CA 02357494 2001-09-06
Invite 4 C ~ S CString Uaer Name of member


-or- initiating the


S ~ C invitation


CString Invitation type


DWORD IP Address of server


handling the


invitation la chat


server, for example).


Unused when sent from


client to server.


DWORD Port of server


handling the


invitation, Unused


when sent from client


to server.


CString Channel


Unused when sent from


client to server.


DWORD Context. Opaque item


to be sent back to


Community server in


the client response


to this request.


Invite 5 C ~ S CString User Name of member


Reply initiating the


invitation


CString Invitation type


DWORD Context. Opaque item


obtained from the


invitation request


received from the


server.


Create 6 C ~ S CString URL to associate
New with


Message new threaded message.


DWORD Community ID to


associate with


threaded message.


Membership7 C ~ S DWORD Unused. If the server


Search receives this requests,
it performs a


"Who is Here" search. (i.e.,
it


returns a list of all users
currently


logged into the community.)


Vote 8 C ~ S CString URL being voted
for.


Timeout 9 S ~ C Server is informing the
client that the


( session has timed out.


On success, the server may resp and with an
HTTP/1.0 20G OK <crlf>
<optional HTTP response headers>
<crlf>
<response transaction>
-or-
25


CA 02357494 2001-09-06
HTTP/1.0 401 Unauthorized <crlf>
<optional HTTP response headers>
<crlf>
-or-
HTTP/1.0 <http response code> <http reason> <crlf>
<optional HTTP response headers>
<crlf>
In 40l Umiuthorized case, the user's login session context times out and the
client
performs the login sequence again. This reauthentication may be done
transparently to the
user.
If a non-401 or 200 HTTP status code is encountered. some error occurred on
the
server side. The standard H'TTP response code gives an indication of what the
problem is.
The format of a success response transaction may be as follows:
Field # BytaDESCRIPTION


Name


Version 4 Version identifier of the packet
ID


Packet 4 Length of Packet in bytes


Length


Response variesSerialized MFC Cobject derived class
containing:


Packet


DWORD Response type Code


DWORD Version ID


<Varies depending on response type>


The following table describes the various response types. All are sent from
server to
client.
Res onse Code Coulsols
a


Error 0 DWORD Error Code. Win32 or WINSOCK
error code
CString Descriptive error message.


OK 1 N/A Generic "success" response


Login 2 N/A See login protocol.


26


CA 02357494 2001-09-06
Get URL 3 CString URL
Info


CObArray Array (0 or morel of the


following:


DWORD Community ID


CString VRL to get to threaded message
for


this URL


DWORD Flags


Invite 4 CString Uaer Name of member invited


CString Invitation type


HOOL If non-zero, the user accepted


the invitation.


DWORD IP Address of server handling
tl:e


invitation la chat server, for


example).


Di70RD Port of server handling the


invitation


CString Channel (may be blank)


Create 5 CString URL to follow to create
New new


Message threaded message.


Membership6 CStringArray Array of user names
of all


Search users matching search


criteria.


There are 2 steps in the Server Request Transaction:
1. Request (client to server)
2. Response (server to client)
The sewer makes asynchronous requests of the client. The request type sent by
the
server to the client is an invitation request.
Field # BytesDESCRIPTION


Name


Version 4 Version identifier of the packet
ID


Packet 4 Length of Request Packet in bytes


Length


Request varies Serialized MFC CObject derived
class con.aining:


Packet DWORD Request Type Code


DWORD Transaction Version Id


CString User Name of member initiating


the invitation


CString Invitation type


DWORD IP Address of server handling


the invitation (a chat, server


for example).


DWORD Port of server handling the


invitation


CString Channel (may be blank)


DWORD Context. Opaque item to be
ser_t


back to the Community server in


the client response to this


request.


27


CA 02357494 2001-09-06
Referring to Figure 4, a diagrammatic representation of a Tracking Server 148
architecture for a preferred embodiment of the present invention is shown. The
Tracking
Server 148 logs the activities of users served by the Community Server. As
users change
URLs, post community messages, join and leave chat sessions, etc., these
actions are reported
by the Community Clients running on their computers to the Community Server
140. This
information may then be reported by the Community Server 140 to the Tracking
Server 148
via a TCP/IP connection 142 to a Read Tracking Event Thread pool 144. The
Tracking
Server 148 then receives the information from the threads in the pool via an
I/O Completion
Port 146. The Tracking Server 148 modifies the information (e.g., by stripping
a user
identifier that may be associated with the action} and records it in a SQL
Tracking Database
156 via an I/O Completion Port 158 connection to a Write Tracking Event Thread
pool 152.
The Tracking Server also maintains a list of current users in a Memory Mapped
Fde 150 that
may be interrogated by the Community Server 140 on behalf of a client.
Tracking may be
used in the following examples:
~ Voting
~ Tracking
~ On-Line Activity
~ Establishing connectivity between Community Members (e.g., Gaming &
Real-time Conferencing (Chat)).
~ Determining "Who is Here ?"
All transactions sent to the Community Server 140 may be filtered in one way
or
another through the Tracking Servers) 148.
28


CA 02357494 2001-09-06
Communications between the Community Server 140 and the Tracking Server 148
are
based on a request/response protocol layered on TCP/lP 142. Requests and
responses are
serialized objects of a type derived from a object (e.g., identified as
CTrackTransaction.)
The Community Server 140 opens an asynchronous TCP/IP connection 142 to the
Tracking Server 148 upon startup. If the connection is lost or the Tracking
Server 148 is not
running, the Community Server 140 may attempt to reestablish a connection
periodically.
In the event of an invitation request, a separate asynchronous TCP/)P
connection may
be made to the Community Server where the user is logged in that receives the
invitation.
After either accepting or declining the invitation, the Tracking Server uses
the existing
connection to the original Community Server to let the inviter know what
happened.
As shown in Figure 4, the Tracking Server 148 may be implemented as a multi-
threaded server 144 listening for asynchronous connections on a specified port
(i.e., I/O
Completion Port) 146 . Two thread pools exist to work on incoming data: a
connection pool
and an ODBC pool.
1 ~ The Connection Worker threads dispatch incoming data to the appropriate
ODBC
thread. Each ODBC worker thread, upon initialization. opens an ODBC connection
to a SQL
server.
The Community Server and Tracking Server may communicate via the following
transactrons.
Transaction Type Description Direction
(Class


Name) (CS -


Community


Server)


(TS -


Tracking


Server


CsetupTrack Server to server communicationCS ~
TS


CloginTrack User logged into CommunityCS ~
TS


ClogoutTrack User left Community, CS ~
either by TS


logout or time-out


CcreateMsgThreadTrackUser created a mesaage CS ~
section TS


29


CA 02357494 2001-09-06
CGecAnnocacionTrackUser obtained m annotationCS ~


Ci~hoIsHereTrackReqUser requests a list of CS ~
ocher logged TS


m members i


CWhoIeHereTrackRepLiec of logged .n members


TS ~


C'RLInfoTrack Ueer vent to a new page CS ~
'~=


CinviceTrackReq User extends an invitationCS ~
co chat co -_
I


another user


C:nmceTrackRep Invited user accepts or TS ~
declines chat _c


:nvicacion


~:..~.viceTrackReqTracking server interrogatesTS ~
;special community Cc


concext i server


C:nviceTrackRsp Community server returns CS ~
iepecial invited TS


context! user~e response


~SOCeURLTrack User voted CS ~


Preferably. transactions carry the following data (type): user Id (srring~,
community Id
W umber!, server Id (number!, transactron type, also called request code
tnumber), and
aersion rnumberl. Because transactions are serialized objects. the transaction
may include the
name of the type of the transaction and a schema version number. The bytes of
the serialized
object are preceded by 8 bytes: 4 (representing a 32 bit number. in network
byte order) that
identify the version of the packet. and 4 (also representing a 32 bit number.
in network byte
order ) that specify the number ofbvtes that follow.
Transactions may convey additional data appropriate to the type of
transaction. The
additional data may be appended to the transaction in the order specified in
the table. Note
that strings te.g.. designated CString) may be a single byte count of
characters followed by
eractly that many characters with no null terminating byte. Numbers are LSB
first. Boolean
type is a 32 bit number with a value of either 0 or 1.
Transaction Transaction S edfic Dau
T a


CSetupTrack persistence flag iBooieaW


~LogmTracK URL a Cecrmg~


= ogouc':racx none


=CreaceMegThreadTraekURL iCstrmgi


=GecAnr.ctat:onTrackURL ~Cstrmgi


_WhoIekieseTrackReqnone


1 _:~hoIaHereTrackRsplist of user Ids W umber CStrmgi ~CSCrmgi
~CStrmg- ...


~URLInio':racx URL iCstrmgl


I ~InmceTracicRequser Id of invitee ICScringl, type of
interaction: cnat. game.
etc. ICStrmg), IP address of server hceting
inviting user
(number) and port of server hosting inviting
user Inumber:


=:nviceTrackRspacceptance flag iHoolean), reason code
number), IP address of
server hoscmg mntee W umberi and port
of server host-rag mv:cee
inumber)


! =ioteURLTrackname of item or URL (CSCrmgi. score ~.nu,eri




CA 02357494 2001-09-06
For example, the CWhoIsHereTrackReq transaction may trigger a
CWhoIsHereTrackRsp reply, and a CInviteTrackReq transaction may trigger a
CInviteTrackRsp reply. Preferably, the reply packets are returned via the same
connection
that delivers tracking transactions to the Tracking or Voting Servers.
Invitation processing is special compared to the other transactions. For
example, the
CInviteTrackReq transaction causes the Tracking Server to open a connection to
a second
Community Server (which may be the same Community Server that initiated the
invitation)
and emit a CInviteTrackReq transaction, to inquire of the Community Server
whether a
particular user (the invitee) is still logged in. When the Community Server
returns a yes or no
CInviteTrackRsp transaction, the Tracking Server disconnects, and returns a
ClnviteTrackRsp transaction to the originally requesting Community Server.
The CSetupTrack transaction is sent by the Community Server to the Tracking
Server
when the Community Server connects to the Tracking Server. The persistence
flag indicates
whether the Community Server expects the connection to remain open for more
than one
transaction. This scheme permits the Community Server to occasionally connect
to the
Tracking Server for a single query.
Every transaction may be recorded in the tracking table of the tracking
database using
the base information (e.g., user id, community id, server id, and reguest
code). and the
corresponding URL, if available. For example, CLoginTrack and CLogoutTrack
transactions may cause the addition or removal of user id information from a
'~Uho is Here"
list which is kept in memory. Finally, the ClnviteTrackReq transaction queries
the "Who is
Here" list while the CWhoIsHereTrackReq transaction returns the entire list.
In a preferred embodiment in which voting is supported, the CVoteURLTrack
transaction may cause the community id, the item string, and the score to be
inserted into or
31


CA 02357494 2001-09-06
updated in the vote table and the vote count to be incremented. The value of
the score is
added to the score (initially zero) for the particular community id and issue
combination.
Tnmsction T a Deecri tio~ Destination


CSetupTrack Server to server communicationnone


CLoginTrack User logged into CommunityCracking


CLOgoutTrack User left Community. tracking
either by
logout or time-out


CCreateMegThreadTrackUser created a messagetracking
section


CGetAnnotationTrackUser obtained an annotationtracking


C'aho a HereTrackReqUeer requests a list tracking, fetches
of other "Who ie Here"
logged in members list


CWhoIsHereTrackRepList of logged in returns "Who is Here"
members list


C'JRLInfoTzack User went to a new tracking
page


CInviteTrackReq User extends to anothertracking, queries
user an "Who as Here"
invitation to chat lief


CInvateT.rackRsp Invited user accepts returns Found or
or declines not found
chat invitation


CVOteURLTracx Ueer voted tracking, vote


Datasource Connectivity
Preferably, the Tracking Server connects to a SQL server via the ODBC
application
programming interface. The datasource that the Tracking Server connects to may
be
determined at startup. Multiple ODBC (over TCP/IP or NetBeui protocols)
connections are
made to a SQL server (one per ODBC worker thread) upon initialization and
maintained
throughout the life of each thread. All tracking transactions execute prepared
ODBC-SQL
statements to log the transaction.
Referring to Figure 5. a diagrammatic representation of the Threaded Message
Server
174 is shown. The Threaded Message Server 174 is used to create and retrieve
member
threaded message annotations created on specific URL's (i.e., Web pages.) The
threaded
message annotations may be stored in a 'Threaded Message Database 182
accessible via a
POET interface 180. In a preferred embodiment, the Threaded Message Server 174
runs as an
extension to a Remote Passphrase Authentication (RPA) enabled Server 160 (with
a TCP/IP
connection to a Remote Passphrase Authentication Deity 164 that performs
authentication via
an OBDC connection 166 to a membership database 168) to ensure that is
accessed through a
32


CA 02357494 2001-09-06
secure means. Preferably, the Threaded Message Server 174 is not required on a
per
community basis, but rather acts as a global resource and is shared between
communities.
Preferably, the Threaded Message Server 174 receives notifications from the
RPA
enabled Server 160 via the Community Client rather than the Community Server.
A Binary
Gateway Interface 170 facilitates communication between the RPA enabled Server
160 and
Threaded Message Server 174. For example, a Threaded Message Server Dynamic
Link
Library (TMS.DLL) may run as an extension to a RPA enabled Server. The RPA
enabled
Server may communicate with TMS.DLL through a combination of the HTTP GET and
POST methods, depending on the nature of the requested transaction. TMS.DLL
may then
interact with the Threaded Message Server 174 through remote procedure calls
(RPC) and the
Community URL Database Server 178 through ODBC calls 176. Results of each
transaction
may be returned to the Web Server as dynamically created H'TML pages.
GET Method
The following transactions may be requested through the use of the HTTP GET
method:
~ PrintSectionThreads
~ PrintThreadMessages
~ PriutMessage
~ GenerateReplyPage
~ GenerateCreateMessagePage
PrintSectionThreads
This transaction prints a HZ'ML page containing a list of threads in a given
message
base section. Each thread item printed is a hyper-link to the
PrintThreadMessages transaction.
33

CA 02357494 2001-09-06
Appropriate navigational controls are also be displayed. One of these controls
may be a link
to the GenerateCreateMessagePage transaction.
PrintThreadMessa_ges
This transaction prints a HTML page containing a list of the messages in a
given
thread. Each message item printed is a hyper-link to the PrintMessage
transaction.
Appropriate navigational controls are also displayed.
PrintMessage
This transaction prints a HTML page displaying the contents of a message.
Navigational controls are also displayed. One of these controls is a link to
the
GenerateReplyPage transaction.
GenerateRePlyPage
This transaction prints a HTML page containing the form controls needed to
create a
reply to a message. The page also contains hidden controls needed to store
state information
that will be passed to the PostReply transaction via the POST command.
GenerateCreateMessagePage
This transaction prints a HTML page containing the form controls needed to
create a
message. The page also contains the hidden controls needed to store state
information that
may be passed to the PostCreateMessage transaction via the POST command.
POST Method
The following transactions are requested through the use of the HTTP POST
method:
~ PostCreateMessage
~ PostReply
34


CA 02357494 2001-09-06
PostCreateMessa~e
This transaction uses the contents of the H'fMi. form controls created by the
GenerateCreateMessagePage transaction to create a new message. The data is
sent via the
HTTP POST method.
PostRenlv
This transaction uses the contents of the form controls created by the
GenerateReplyPage transaction to create a reply to a message. The data is sent
via the POST
method.
Referring to Figure 6, a screen shot of Web page 194, Community Client 196,
and
I 0 Community Web page 198 for a preferred embodiment of the present invention
is shown. The
Web page 194 associated with the URL 194 is displayed by the Web browser 190
(in this
example, Microso8's Internet Explorer) running on the user's computer. The
Community
Client 196 runs independently ofthe Web browser 190 and appears as a toolbar
on the display.
The toolbar of the Community Client comprises a plurality of custom control
buttons. The
control buttons are similar to menu commands (i.e., allow the user to perform
actions), but are
less obtrusive than menus and are always accessible. Each control button may
provide a
different type of community function. For example, one control button may
allow a user to
access threaded messages associated with the current URL. The messages may
appear on a
separate page (or window) 198 with additional control options for navigating
the messages.
For example, one or more control buttons on the message page may be used to
move forward
and backward in the message thread.
In another example, a "Community Home Page" button control on the Community
Client toolbar may be available to transport the user directly to the home
page of the
community Web site. The home page may serve as a place where users may go to
be in an


CA 02357494 2001-09-06
environment specially designed for their interests. Another control button on
the toolbar may
invoke a start/stop mechanism to enable users to start and stop the Community
Client when it
resides with another application such as a Web browser. Another control button
may allow
users to join or disassociate themselves with particular communities.
Selection of certain
control buttons may cause a supplemental client application (i.e., an
application with an
independent interface) to be invoked to facilitate certain interactions. For
example, selection
of a particular control button may initiate a chat session with other
community members. The
chat session may be initiated and managed through a separate (i.e.,
independent of the user's
browser or Community Client) application that is invoked when the control
button is selected
and is stopped when the user decides to leave the session.
In a preferred embodiment of the present invention, the toolbar is extensible
and
dynamic so that a user may modify or tailor it to meet his or her needs or
preferences. Users
may extend the capabilities of the toolbar by creating new capabilities based
on the primary or
core capabilities provided by the present invention. As described earlier, the
primary or core
set of capabilities may include a Community Centre, Create or View comments,
Who's Online,
Chat, or Invitations. Other communities may have special capabilities in
addition to the core
capabilities. Using a scripting language, a user may extend the toolbar by
creating a new
option comprised of primary or core capabilities. For example, a user may
create a "Game"
capability comprised of the "Who's Online" capability and "Invitation"
capability. When
invoked from the toolbar, the Game capability may provide the user with a list
of comnnnuty
users currently on-line and then invoke a game based on a another community
member's
acceptance of an invitation to play a game.
Display of community information is preferably controlled by a community
viewer that
provides a basic window frame in which commututy content displayed as well as
support for
36


CA 02357494 2001-09-06
additional administrative fimctions and capabilities. The community viewer
arranges to display
Community information in a single window or multiple windows depending on the
amount and
type of information displayed. Preferably, the information is represented by
F~TMI, pages
identified by a URL. For example, annotations for a specific Web page. the
list of members
who are currently present in a community, and an annotation creation page may
all be
presented as different H'TML pages associated with different URLs. In
addition, capabilities
such as accessing the community home page, viewing community comments, and
joining
communities may be supported by HTMI. pages and associated applications as
identified by a
URL.
The present invention provides a new system and method for integrating
Web/Internet
and on-line service content and interactions to create a community. The
present invention
operates as an extension to a user's preferred Web browser so the user is not
required to learn
a new user interface to locate on-line service content or interact with other
community
members. Ctn-line service content is delivered to the user in response to the
URLs specified by
the user as he or she browses the Web. In addition, oppomuzities for
interacting with other
community members are presented to the user. The user may change URLs and Web
sites
frequently while the present invention maintains a context-via a persistent
connection
between a Community Server and a Community Client-for the user's interactions
so that on-
line service content may be presented and interactions facilitated. The
benefit of the present
invention for end-users is a transformation of the Web to a much fiiendlier
and valued place-
a community.
37

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 2005-07-12
(22) Filed 1997-11-07
(41) Open to Public Inspection 1998-05-14
Examination Requested 2001-09-06
(45) Issued 2005-07-12
Expired 2017-11-07

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Request for Examination $400.00 2001-09-06
Registration of a document - section 124 $50.00 2001-09-06
Registration of a document - section 124 $50.00 2001-09-06
Application Fee $300.00 2001-09-06
Maintenance Fee - Application - New Act 2 1999-11-08 $100.00 2001-09-06
Maintenance Fee - Application - New Act 3 2000-11-07 $100.00 2001-09-06
Maintenance Fee - Application - New Act 4 2001-11-07 $100.00 2001-09-06
Maintenance Fee - Application - New Act 5 2002-11-07 $150.00 2002-10-29
Maintenance Fee - Application - New Act 6 2003-11-07 $150.00 2003-11-03
Maintenance Fee - Application - New Act 7 2004-11-08 $200.00 2004-10-06
Final Fee $300.00 2005-04-18
Maintenance Fee - Patent - New Act 8 2005-11-07 $400.00 2005-11-22
Maintenance Fee - Patent - New Act 9 2006-11-07 $200.00 2006-10-17
Maintenance Fee - Patent - New Act 10 2007-11-07 $250.00 2007-10-17
Maintenance Fee - Patent - New Act 11 2008-11-07 $250.00 2008-10-17
Maintenance Fee - Patent - New Act 12 2009-11-09 $250.00 2009-10-14
Maintenance Fee - Patent - New Act 13 2010-11-08 $250.00 2010-10-25
Maintenance Fee - Patent - New Act 14 2011-11-07 $250.00 2011-10-13
Maintenance Fee - Patent - New Act 15 2012-11-07 $650.00 2012-11-27
Registration of a document - section 124 $100.00 2013-03-25
Registration of a document - section 124 $100.00 2013-03-25
Registration of a document - section 124 $100.00 2013-03-25
Maintenance Fee - Patent - New Act 16 2013-11-07 $450.00 2013-10-09
Maintenance Fee - Patent - New Act 17 2014-11-07 $450.00 2014-10-17
Maintenance Fee - Patent - New Act 18 2015-11-09 $450.00 2015-10-14
Maintenance Fee - Patent - New Act 19 2016-11-07 $450.00 2016-10-26
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
FACEBOOK, INC.
Past Owners on Record
AMERICA ONLINE, INC.
AOL INC.
AOL LLC
COMPUSERVE INCORPORATED
MACNAUGHTON, BRUCE A.
TURNER, LEIGH R.
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Representative Drawing 2001-10-30 1 15
Description 2001-09-06 37 1,368
Description 2003-02-06 43 1,699
Description 2003-08-28 46 1,886
Claims 2003-08-28 18 660
Claims 2003-02-06 14 472
Claims 2001-09-06 7 216
Drawings 2001-09-06 7 169
Representative Drawing 2005-06-21 1 18
Cover Page 2005-06-21 2 55
Abstract 2001-09-06 1 21
Cover Page 2001-11-20 2 53
Description 2004-06-09 46 1,869
Claims 2004-06-09 18 635
Correspondence 2001-10-01 1 42
Assignment 2001-09-06 13 466
Correspondence 2001-10-17 1 14
Prosecution-Amendment 2002-11-25 3 74
Prosecution-Amendment 2003-02-06 31 1,253
Prosecution-Amendment 2003-08-28 36 1,531
Prosecution-Amendment 2003-03-31 3 77
Prosecution-Amendment 2003-12-09 3 68
Fees 2003-11-03 1 38
Correspondence 2009-12-01 2 39
Prosecution-Amendment 2004-06-09 39 1,588
Fees 2004-10-06 1 38
Correspondence 2005-04-18 1 34
Correspondence 2009-11-18 1 16
Correspondence 2009-12-16 1 13
Assignment 2013-03-25 193 8,161