System and method for collaborative messaging and data distribution

A collaborative messaging and data distribution system includes a text-messaging engine executing on a processor for sending and receiving messages among a plurality of users. The text-messaging engine includes an information proxy for distributing information among at least one information source and the plurality of users. The information proxy appears as one of the plurality of users.

FIELD OF THE INVENTION

The subject matter described herein is generally related to collaborative messaging and data distribution and, in particular, to text-messaging services which leverage data distribution feeds to supply and share information among users.

BACKGROUND

As is known in the art, one popular data distribution protocol allowing users to subscribe to feeds of data is referred to as Really Simple Syndication (RSS). RSS is a group of data feed formats used to publish frequently updated information, including web logs (blogs), discussion forums, news headlines, audio and video content. RSS documents save information in eXtensible Markup Language (XML) format such as links, updated data, publishing dates, and/or authorship information.

Publishers may use RSS feeds to syndicate content automatically. Readers may subscribe to such feeds to obtain timely updates to information they desire, such as up-to-date stock information, news related to topics of interest, web discussion forums, etc. For example, users may subscribe to a RSS feed by activating a uniform resource locator (URL) for a link representing the RSS feed. The RSS reader checks the feed to view any updates.

Another type of data feed format known in the art is the Atom Syndication Format, which is an XML-based format for web-based data feeds. Paired with this is the Atom Publishing Protocol, which uses the hypertext transfer protocol (HTTP) to publish and automate web-based data feeds.

As is also known, eXtensible Messaging and Presence Protocol (XMPP) is a popular (and United States Department of Defense mandated) collaboration protocol, enabling users with differing chat clients to participate in instant messaging sessions. While RSS and XMPP are both popular protocols which provide different capabilities, there does not appear to be any attempts to integrate them together. Rather, prior work with RSS and XMPP has focused on expanding the functionality of each separately.

SUMMARY

In general overview, one may appreciate that the inventive concepts described herein may include a collaborative messaging and data distribution system that combines the features and benefits of text-messaging and data syndication. For example, in one embodiment, a system combines the eXtensible Messaging and Presence Protocol (XMPP) to support a text-messaging environment (e.g., a chat session) and Really Simple Syndication (RSS) for data syndication (e.g. a news feed) over the text-messaging environment.

An exemplary application using the system includes a text-messaging engine to support a chat session for sending and receiving text messages among a group of users. The system distributes RSS information to the users over the chat session. In particular, the RSS information appears as text messages to the users over the chat session. In this way, RSS publishing integrates seamlessly with text-messaging over the chat session.

Advantageously, such a system can allow users, such as persons responsible for mitigating the consequences of an event, to collaborative with each other by sharing desired and/or needed and/or necessary information related to a task-at-hand. The users can also receive (and in some instances can themselves update) RSS syndicated information to provide relevant and timely information. Such events can include, but are not limited to, acts of nature, power outages, train derailments, bioterrorism, and/or pandemic influenza outbreak. Still further, organizations and business may use the inventive concepts for product-oriented tasks, marketing efforts, etc.

In further configurations, the system publishes data feeds for RSS information sources to users and enables users to subscribe to the data feeds. The system distributes RSS information to subscribed users as text messages that appear in a chat session. Still further, users may provide updates to the data feed, and such updates may be distributed to other subscribed users as text messages and/or to the RSS information source.

In accordance with the systems, techniques, and concepts described herein, a collaborative messaging and data distribution system includes a text-messaging engine executing on a processor for sending and receiving messages among a plurality of users. The text-messaging engine includes an information proxy for distributing information among at least one information source and the plurality of users. The information proxy appears as one of the plurality of users.

In further embodiments, the system includes one or more of the following features: the information proxy is configured to distribute information over a chat session; the information proxy is configured to distribute information over the chat session in response to a request for the information from at least one of the plurality of users; at least a portion of the messages is associated with the distributed information; the information proxy includes at least one data feed comprising at least one data entry; the information proxy includes a publisher processor to publish at least one data feed for the at least one information source, a subscriber processor to allow at least one of the plurality of users to subscribe to the at least one data feed, and a distributor processor to distribute information associated with the at least one data feed to the at least one subscribed user, and; the distributor processor is configured to process at least one data update from the at least one subscribed user.

In another aspect of the systems, techniques, and concepts described herein, a method for collaborative messaging and data distribution includes, in a text-messaging engine executing on a processor, sending and receiving messages among a plurality of users, and in an information proxy, distributing information among at least one information source and the plurality of users, wherein the information proxy appears as one of the plurality of users.

In further embodiments, the method includes one or more of the following features: the information proxy is configured to distribute information over a chat session; distributing information over the chat session in response to a request for the information from at least one of the plurality of users; at least a portion of the messages is associated with the distributed information; the information proxy includes at least one data feed comprising at least one data entry; publishing to the plurality of users at least one data feed for the at least one information source, enabling at least one of the plurality of users to subscribe to the at least one data feed, and distributing information associated with the at least one data feed to the at least one subscribed user, and; distributing to the at least one data feed at least one data update from the at least one subscribed user.

In another aspect of the systems, techniques, and concepts described herein, an article includes a storage medium having stored instructions thereon that when executed by a machine result in the following: a text-messaging engine for sending and receiving messages among a plurality of users; and an information proxy for distributing information among at least one information source and the plurality of users, wherein the information proxy appears as one of the plurality of users.

In a further embodiment, the article includes publishing to the plurality of users at least one data feed for the at least one information source, enabling at least one of the plurality of users to subscribe to the at least one data feed, and distributing information associated with the at least one data feed to the at least one subscribed user.

DETAILED DESCRIPTION

Referring toFIG. 1, a collaborative message and data distribution system100(hereinafter referred to as the collaborative message system) includes a text-messaging engine102executing on a processor for sending and receiving messages among a plurality of users101. The text-messaging engine102includes an information proxy105for distributing information among at least one information source110and the plurality of users101. In one embodiment, an information proxy105A distributes information as text messages from an information source110A to at least one of the users101(i.e. at least one of user101A,101B-101N). In the same or different embodiment, users101update the information source110A by sending text-messages via the information proxy105A to the information source110A.

It should be apparent to one skilled in the art that although the inventive concepts are described primarily with reference to a text-based messaging and distribution environment, information in a form other than (or in combination with) text may be distributed. For example, the text-messaging engine102may be a more generalized data distribution engine capable of sending and receiving audio, video, and other types of content. In some embodiments, an XML format may be used to standardize data distribution among various clients103. Such an XML format may include XML tags and fields to indicate a source of an update, a time/date of the update, an update link, and/or an author of an update.

The information proxies105handle communications among users101and information sources110. For example, the information proxies105provide and distribute information updates from the information sources110to the users101. As will be described further, the information sources110may include various kinds of information sources including, but not limited to, news feeds, web-based forums, and event notifications.

In one embodiment, the information proxies105act as users logged into the text-messaging engine102. This allows users101to seamlessly communicate with the information sources110via the information proxies105as if the information sources were other text-messaging engine users. For example, users100may send commands to the information sources110and receive text messages from the information sources110within a familiar text-messaging environment.

In one embodiment, the information proxies105distribute information from information sources110over a chat session executing within the text-messaging engine102. In this embodiment, the chat session may involve a first and a second user and one or more of the information proxies105. The first and second users send text messages to each other, as well as view text messages from the one or more information proxies105. Users101may view the text messages on chat screens executing on client devices103.

In an exemplary environment incorporating the collaborative message system100, one or more information proxies105may be configured to distribute information from the one or more information sources110. For example, a collaborative message system administrator may configure a first and a second information proxy105A,105B by defining data source links to respective information sources110A,110B. Such links enable the first and second information proxies105A,105B to receive and/or respond to and/or process updates for respective information sources110A,110B.

For example, in one embodiment, the information sources110push updates to the information proxies105using a uniform resource locator (URL) to send HTTP requests to the information proxies105on a server. Here, the HTTP requests may include a text update string concatenated to the request. In still another embodiment, information proxies105pull updates from information sources110by requesting the updates. Such updates may be saved in a shared memory that the information sources110may write to and information proxies105may read from. Such push and/or pull of updates may be executed at timed intervals, for example, every second, minute, etc. In other embodiments, the updates may be event-driven, such as when a news syndicate updates a news feed.

During operation of the collaborative message system100, information sources110may be “published” which, in one embodiment, includes sending a list of the information sources110to users101(i.e. information sources as may include information sources110A,110B,110C-110N), as for example to client devices103. The users101may subscribe to one or more of the information sources110to receive data. In one embodiment, users101subscribe to one or more of the information sources110by selecting each from a list of information sources displayed on the client devices103. In response to a user selection, the client devices103send subscription requests to the text-messaging engine102, which forwards the requests to respective information proxies105. The information proxies105add users to a list of subscribed users and automatically send any updates from the information sources110to the subscribed users. In a further embodiment, subscription requests include unique client device identifiers and/or user information so that the information proxies105can send updates to the correct client devices103.

As described above, the information proxies105distribute information from the respective information sources110to the subscribed users101. As non-limiting examples, information updates can include those originating from the information source itself, for example, an updated cycle of a news feed, and those originating from one or more of the users101, such as updated news from a user at the scene of an accident. In one example application, the information proxies105distribute the updates as text messages which appear on client devices103where users101may view the updates. In a further embodiment, information sources110may be updated by the users101. For example, a user101A can input an update to information source110A on a client device103A. The client device103A can send the update as text message to the text-messaging engine102, which forwards the update to the information proxy105A for distributing the information (and updates) for information source110A. The information proxy105A distributes the user update to other users subscribed to the information source110A.

In a still a further embodiment, the information proxy105A performs update validation and/or confirmation. For example, the information proxy105A may ensure that user101A provides the text message update is in a proper format for the information source110A. For example, the information proxy105A may truncate characters from the inputted text message for length limited fields of the information source110A. Such validation is useful for information sources110that are in a database format which may include length-limited text fields. Still further, such validation can include validating proper data types and/or converting to a proper data type format, such as converting text to a floating point value. In still another embodiment, validation can include range validation. For example, an update may be out-of-range of a predefined range of alert levels, in which case the information proxy105A can modify the update appropriately.

Advantageously, such a system100can seamlessly combine the features and benefits provided by text messaging and data syndication services. For example, the system100can leverage the collaborative features found in text-messaging services, such as those using XMPP, with data distribution features found in data syndication services, such as those using the RSS or the Atom format. Users101can interact with information sources110via information proxies105in the same or similar manner as any other user. As initial step, users101may subscribe to the information source110A so that they may receive information from the information source110A. Still further, users101may receive a listing of published information sources110so that they may choose to subscribe to one or more of the published information sources110.

In one embodiment, users101send and receive text messages on client devices103in communication with the text-based messaging engine102over a network111. For example, a first user101A may use a desktop computer103A to send and receive text messages, a second user101B may use a hand-held device103B, such as personal data assistant and/or cellular phone, and a third user103C may use a panel-mounted computer installed in an automobile. These devices may provide various levels of functionality and text-messaging support, for example, the desktop computer103A may include a sophisticated text message composer that includes formatting options, whereas the hand-held device103B may be limited to plain text inputted using a small keypad. Other possible methods for text input include, but are not limited to, voice activation, touch-tone alphanumeric keypads, and scan-to-text devices.

Network111includes, but is not limited to, the Internet, an intranet, or other type of network. The network may include a wireless network operating alone or in combination with wired networks. Such a network111may enable cellular phone usage and/or Bluetooth® device usage.

In one embodiment, the text-messaging engine102includes multiple information proxies (i.e.105A,105B,105C-105N) connected to multiple information sources (i.e.110A,110B,110C-110N, respectively). The information sources110may include various types of data including, but not limited to, a RSS news feed110A (e.g. a syndicated news feed, such as one supplied by the New York Times), a database feed110B (e.g., a geo-spatial database including place names and positional information), external instrumentation110C (e.g., a weather tracking system for storm tracking and/or spotting weather-related events), and/or another data source110N (e.g., a Department of Homeland Security data feed including alerts related to a terrorist incident).

Referring now toFIG. 2, a further embodiment of an information proxy205, as may be similar to one or more of the information proxies105described in conjunction with the collaborative messaging system100ofFIG. 1, includes a publisher processor220to publish a data feed250for an information source210, as may be similar to one of the information sources110described in conjunction withFIG. 1, a subscriber processor230to allow users201to subscribe to the data feed250, and a distributor processor240to distribute the data feed information (i.e.250A,250B-250N) to subscriber users. In some instances, the data feed250is linked to an information source210via a link215.

In one embodiment, the link215is a data source object representing the information source210. The data source object includes an information source type (including, but not limited to, a RSS feed, database), a connection string, and credentials.

In one embodiment, the data feed250includes one or more data entries250A,250B-250N which include data processed by the information proxy205. The data entries250A,250B-250N may include updated information from the information source210to be distributed to users subscribed to the data feed205and/or updated information from users201to be distributed to the subscribed data feed users.

In one embodiment, as an initial step in the operation of an information proxy205, an administrator user having special access privileges to the information proxy205and/or an information source210creates a link215between the information proxy205and an information source210. For example, the administrator user may create a link with a name and specific RSS feed for the information source. The RSS feed may require access credentials, such as a username and password, which the administrator may provide.

In a further embodiment, the link215is automatically defined. For example, a collaborative message system may scan a network for information sources and for each discovered information source, defines a new information proxy205and a link215between the new information proxy205and the discovered information source210. In still another embodiment, the collaborative message system receives a list of information sources and creates a new information proxy and a link for each listed information source.

It will be understood that links215may be established dynamically during collaborative messaging system operation as new information sources become available. For example, new information sources may become available as events unfold in a context and persons involved in the context desire and/or need new information in order to mitigate the consequence of an event, or perform a task at hand.

In one example application context incorporating the inventive concepts, a law enforcement officer arrives at the scene of a multi-vehicle car crash and sends text messages regarding the circumstances of the crash to a local dispatcher using the collaborative message system and a client device. The law enforcement officer learns that one of the victims was robbed in the aftermath of the crash and obtains descriptive information of the perpetrator from eye-witnesses. After sending the descriptive information of the perpetrator to the local dispatcher, the local dispatcher creates a data feed250for an information source210for an All Points Bulletin (APB). This creates an information proxy205and a link215between the information proxy and the APB information source. In one embodiment, the information source210is also created during this process, however, in other embodiments, the information source210may be a preexisting database, data file, or RSS feed.

The local dispatcher enters the descriptive information as a text message and sends it to the APB information source via the information proxy data feed210. The APB information is sent to other law enforcement officers in the area using the collaborative message system. In particular, the other law enforcement officers may receive and view the APB information from the information source as text messages received on dashboard-mounted computers in their squad cars.

In the same or different embodiment, a publisher processor220publishes information to users201regarding available data feeds. For example, the publisher processor220can publish the data feed250to a user201A. The user201A may view the published data feed on a desktop computer203A. In one embodiment, the published data feed includes a description of the data feed205sent to the user201A (as designated by reference numeral221), as for example over a network. In the same or different embodiment, the user201A views the description in a client program, such as a web browser, executing on the desktop computer203A. The published data feed may be sent to users201automatically or at the request of the users201. For example, the published data feed information may sent via HTTP.

The user201A can choose to obtain information from the data feed250by subscribing to the data feed250. For example, the user201A can select the data feed description information and issue a request to subscribe to the data feed250to the subscriber processor230(as designated by reference numeral231). In response, the subscriber processor230can add the user201A to a list of subscribed users235. In one embodiment, each subscribed user is represented by a unique client device identifier that indicates to the information proxy205where to send data feed information. For example, a network capable client device may include a network interface controller (NIC). The NIC has a read-only memory chip that has a unique Multiple Access Control (MAC) address burned or engraved into it, which may serve as the unique client device identifier.

The distributor processor240sends data feed information241to users201defined in the subscriber list235. It should be noted that the subscriber list235may be empty, as may be the case at the beginning of an incident when the collaborative messaging system is still coming online. In one embodiment, the data feed250includes updated information from the information source210. For example, a first data entry250A may represent a first information update originating from the information source210. The distributor processor240sends the first data entry250A to the subscribed users235(designated by241A). In the same or different embodiment, a second data entry250B represents an information update originating from one of the users201. The distributor processor240sends the second data entry250B to the subscribed users235.

Referring again toFIG. 2, operations of the above-mentioned information proxy205including the publisher processor220, subscriber processor230, distributor processor240, and data feed250will now be described in more detail. In an example application incorporating the inventive concepts described herein, law enforcement personnel communicate with each other using a collaborative message system, as may be similar to the collaborative message system100described in conjunction withFIG. 1. In the above example involving the APB information source related to a multi-vehicle car crash, the local dispatcher201A can use a desktop computer203A to send an APB message to a local area police patrol201C. The message informs the patrol201C that a perpetrator is at large. The local police patrol201C requests a list of published data feeds from the publisher processor220, for example, by issuing a HTTP request for the information. Upon receiving the published data feeds, the local police patrol201C subscribes to the APB data feed by selecting it and submitting a subscription request (which may also be via HTTP) to the subscriber processor230. The request includes a unique client device identifier so that the information proxy205can determine where to send APB information to the local police patrol201C. The subscriber processor230adds the local police patrol201C to the list of APB data feed subscribers, which already includes the law enforcement officer201B at the scene of the accident, as well as the local dispatcher201A.

The distributor processor240sends descriptive information related to the perpetrator to the local police patrol201C who views it on their client device203C. As will be further described below in more detail, the APB data feed appears as a user of the collaborative messaging system. During further patrol of an area, the local police patrol201C spots the perpetrator and sends a message to the local dispatcher201A. They also send an update to the APB data feed to indicate, for example, where they spotted the perpetrator, time of the spotting, and/or updated appearance information, such as an estimate of the perpetrator's height and weight, gender, and clothing description. The distribute processor240receives the updated APB information and sends it to the other subscribed users.

Referring now toFIG. 3, an exemplary client/server environment uses a collaborative message system300, as may be similar to the collaborative messaging system100described in conjunction withFIG. 1, including information sources generally denoted by reference numeral310, and a plurality of users301. In this particular example, a first user301A (hereinafter referred to as USER1), a second user301B (hereinafter referred to as USER2), and a third user301C (hereinafter referred to as USER3) send text messages (generally designated by reference numeral375) to each other regarding an outbreak of the Swine Flu (H1N1 Flu). The users301use client devices (an example of which is designated by reference numeral333) to send text messages over a network321to each other using the collaborative message system300. USER1, USER2, and USER3have subscribed to data feeds305which appear as users301of the collaborative messaging system300, as will be further described below.

Client device333includes a client screen303including a text-messaging portion307for displaying text messages375among the users301, a published data feed portion309for displaying published data feeds305which users301may subscribe to, and a subscribed data feed portion311for displaying the data feeds305to which a user (in this instance, USER1) is currently subscribed. The client screen303may be implemented using an operating system that supports a user interface environment including, but not limited to, Microsoft Windows® manufactured by Microsoft Corporation of Redmond, Wash. Still further, the client screen303may be implemented in a web browser style program such as Internet Explorer® also manufactured by Microsoft Corporation. The client screen303may include a variety of user interface components such as text input boxes, message areas, and buttons.

The text-messaging portion307includes a text message display area307A that displays text messages375received from other users (for example USER2and USER3as designated by reference numeral375A) as well as those sent by USER1. The text messages375are handled by a text-messaging engine302, as may be similar to text-messaging engine102described in conjunction withFIG. 1. The text message portion307also includes a text message input box307B to enable a user (here, USER1) to input text messages375and a send button307C to enable the user to send text messages375to other users301.

As will be described further below, the text-messaging area307A includes updates (375B,375C,375D) from one or more data feeds305. The data feeds305appear as users301of the collaborative messaging system300in that the text message display area307A displays the data feed updates (375B,375C,375D) as text messages375, which appear to be messages from users301. In such a way, the collaborative message system300can seamlessly integrate collaborative messaging and data distribution in one environment.

The published data feed portion309includes a listing309A of published data feeds305. In one embodiment, the published data feed information is provided by a publisher processor, as may be similar to publisher processor220described in conjunction withFIG. 2. In this example, a first data feed305A is a Swine Flu data feed for distributing information regarding an outbreak of the Swine Flu which is being tracked not only by users301, but by other agencies such as the Centers for Disease Control (CDC). Such Swine Flu information may include outbreak statistics, as well as incoming updates regarding newly reported Swine Flu case incidences. The incoming updates, for example, may include patient information and location information.

A second data feed305B includes a New York Times data feed for tracking news from Mexico, where Swine Flu cases were first reported. For example, such information may include governmental actions to attempt to control the outbreak, such as public facility closings and quarantines. A third data feed305C includes a CDC data feed for relating an alert level of the Swine Flu outbreak. A fourth data feed305D includes a weather tracker data feed for distributing weather forecast information, which may be useful for users301who must travel as part of their outbreak response efforts.

The listing309A of published data feeds305includes data feed descriptive information309B and an indication309C of whether a user is subscribed to the data feed305. If a user is not subscribed, then a SUBSCRIBE button309D may be included which when activated subscribes a user to the published data feed305. In one embodiment, activating the subscribe button sends a request to a subscriber processor, as may be similar to subscriber processor230described in conjunction withFIG. 2, which processes the request, for example, by adding the user to a data feed subscriber list, as may be similar to subscriber list235described in conjunction withFIG. 2. In a further embodiment, the subscriber processor230checks classification levels of a requesting user to ensure that the user has permission to subscribe to a data feed305and view data feed information.

The subscribed data feed portion311includes a first portion311A that displays information about one or more data feeds305that USER1may send updates to. For example, USER1may send text message updates to the Swine Flu data feed305A. In one embodiment, a user enters text message updates in a text input area312. The user may sends the update by activating a SEND button314. Here, USER1reports a new incidence of the Swine Flu, including patient information, such as gender, age, and symptoms. In one embodiment, the text message update is sent to a distributor processor, as may be similar to distributor processor240described in conjunction withFIG. 2. The distributor processor forwards the message to other users in the subscriber list. For example, text message375B corresponds to the update sent by USER1.

The subscribed data feed portion311also includes a second portion311B that lists other data feeds305, which can referred to as “passive” data feeds that USER1may not send updates to but, of course, may view the updates. For example, updates to the New York Times data feed305B and the weather tracker data feed305D correspond to respective messages375D and375C.

It should noted, of course, that other exemplary environments may include user interface components and techniques for publishing data feeds, subscribing users, and posting updates other than those described above. As non-limiting examples, published data feeds may alternatively be sent to an administrator user who subscribes users to the data feeds. Still further, a user may choose from options that indicate whether to send a text message as a data feed update or as a text message from the user.

Referring now toFIG. 4, a method400for collaborative messaging and data distribution includes, in a text-message engine402executing on a processor, sending and receiving messages among a plurality of users (step404) and, in an information proxy405included in the text-messaging engine402, distributing information among at least one information source and the plurality users (step406). In one embodiment, the information proxy405appears to the plurality of users as one of the users of the text-messaging engine402.

In a further embodiment, the method400includes receiving information from the information source (step440) and/or sending information updates from one or more users to the information source (step442).

In another embodiment, the information proxy405includes a data feed for receiving the information from the information source and the method400further includes publishing the data feed to users (step422), enabling users to subscribe to the data feed (step424), and distributing information associated with the data feed to subscribed users (step426).

In still a further embodiment, the method400includes distributing updates to the data feed received from users to subscribed data feed users (step428) and/or sending the data feed updates to the information source410(step430).

FIG. 5illustrates a computer2100suitable for supporting the operation of an embodiment of the collaborative messaging systems, concepts, and techniques described herein. The computer2100includes a processor2102, for example, a dual-core processor, such as the AMD Athlon™ X2 Dual Core processor from the Advanced Micro Devices, Inc. However, it should be understood that the computer2100may use other microprocessors. Computer2100can represent any server, personal computer, laptop, or even a battery-powered mobile device such as a hand-held personal computer, personal digital assistant, or smart phone.

Computer2100includes a system memory2104which is connected to the processor2102by a system data/address bus2110. System memory2104includes a read-only memory (ROM)2106and random access memory (RAM)2108. The ROM2106represents any device that is primarily read-only including electrically erasable programmable read-only memory (EEPROM), flash memory, etc. RAM2108represents any random access memory such as Synchronous Dynamic Random Access Memory (SDRAM). The Basic Input/Output System (BIOS)2148for the computer2100is stored in ROM2106and loaded into RAM2108upon booting.

Within the computer2100, input/output (I/O) bus2112is connected to the data/address bus2110via a bus controller2114. In one embodiment, the I/O bus2112is implemented as a Peripheral Component Interconnect (PCI) bus. The bus controller2114examines all signals from the processor2102to route signals to the appropriate bus. Signals between processor2102and the system memory2104are passed through the bus controller2114. However, signals from the processor2102intended for devices other than system memory2104are routed to the I/O bus2112.

Various devices are connected to the I/O bus2112including internal hard drive2116and removable storage drive2118such as a CD-ROM drive used to read a compact disk2119or a floppy drive used to read a floppy disk. The internal hard drive2116is used to store data, such as in files2122and database2124. Database2124includes a structured collection of data, such as a relational database. A display2120, such as a cathode ray tube (CRT), liquid-crystal display (LCD), etc. is connected to the I/O bus2112via a video adapter2126.

A user enters commands and information into the computer2100by using input devices2128, such as a keyboard and a mouse, which are connected to I/O bus2112via I/O ports2129. Other types of pointing devices that may be used include track balls, joy sticks, and tracking devices suitable for positioning a cursor on a display screen of the display2120.

Computer2100may include a network interface2134to connect to a remote computer2130, an intranet, or the Internet via network2132. The network2132may be a local area network or any other suitable communications network.

Computer-readable modules and applications2140and other data are typically stored on memory storage devices, which may include the internal hard drive2116or the compact disk2119, and are copied to the RAM2108from the memory storage devices. In one embodiment, computer-readable modules and applications2140are stored in ROM2106and copied to RAM2108for execution, or are directly executed from ROM2106. In still another embodiment, the computer-readable modules and applications2140are stored on external storage devices, for example, a hard drive of an external server computer, and delivered electronically from the external storage devices via network2132.

The computer-readable modules2140may include compiled instructions for implementing the collaborative messaging and data distribution systems and methods described herein. In a further embodiment, the computer2100may execute various components of a text-messaging engine as may be similar to that described in conjunction withFIG. 1. In still a further embodiment, the text-messaging engine implements the components on different processors, for example, a first processor and a second processor. For example, the first processor implements a first information proxy, as may be similar to information proxy105A described in conjunction withFIG. 1, and the second processor implements a second information proxy, as may be similar to information proxy105B described in conjunction withFIG. 1. Advantageously, the division of processing function saves time and overhead and allows for asynchronous programming. For example, the first and second information proxies may distribute information from respective information sources independently of each other.

Furthermore, collaborative messaging system data may be saved in internal hard drive storage2116, read-in from removable drive2118, or received via the network2132from remote computer2130, and loaded into RAM2108. In a further embodiment, data entries, as may be similar to data entries250A,250B-250N described in conjunction withFIG. 2, are collected and stored in RAM2108. Such data entries may be represented in data arrays and/or linked lists. Still further, subscribed user lists, as may be similar to subscriber user list235described in conjunction withFIG. 2, are collected and stored in RAM2108. The data may be stored in a database format on hard drive storage2116to execute in a database application or in a file format, which can include, but is not limited to, a comma-delimited text file.

In a further embodiment, the first and second processors may be respective processors of a dual-core processor. Alternatively, the first and second processor may respective first and second computing devices. Output of the first and/or second processors may be rendered on display2120.

The computer2100may execute a database application2142, such as Oracle™ database from Oracle Corporation, to model, organize, and query data stored in database2124. The data may be used by the computer-readable modules and applications2140and/or passed over the network2132to the remote computer2130and other systems.

In general, the operating system2144executes computer-readable modules and applications2140and carries out instructions issued by the user. For example, when the user wants to execute a computer-readable module2140, the operating system2144interprets the instruction and causes the processor2102to load the computer-readable module2140into RAM2108from memory storage devices. Once the computer-readable module2140is loaded into RAM2108, the processor2102can use the computer-readable module2140to carry out various instructions. The processor2102may also load portions of computer-readable modules and applications2140into RAM2108as needed. The operating system2144uses device drivers2146to interface with various devices, including memory storage devices, such as hard drive2116and removable storage drive2118, network interface2134, I/O ports2129, video adapter2126, and printers.