TECHNICAL FIELD 
     This invention relates to selecting a television channel. 
     BACKGROUND 
     The computer system illustrated in FIG. 1 represents a typical hardware setup for executing software that allows a user to perform tasks such as communicating with other computer users, accessing various computer resources, and viewing, creating, or otherwise manipulating electronic content—that is, any combination of text, images, movies, music or other sounds, animations, 3D virtual worlds, and links to other objects. The system includes various input/output (I/O) devices (mouse  103 , keyboard  105 , display  107 ) and a general purpose computer  100  having a central processor unit (CPU)  121 , an I/O unit  117  and a memory  109  that stores data and various programs such as an operating system  111 , and one or more application programs  113 . 
     As shown in FIG. 2, a user of a computer system can access electronic content or other resources either stored locally at the user&#39;s own client system  202  (e.g., a personal or laptop computer) or remotely at one or more server systems  200 . An example of a server system is a host computer that provides subscribers with online computer services such as e-mail and Internet access. Users of a host computer&#39;s online services typically communicate with one or more central server systems  200  through client software executing on their respective client systems  202 . 
     In practice, a server system  200  typically will not be a single monolithic entity but rather will be a network of interconnected server computers, possibly physically dispersed from each other, each dedicated to its own set of duties and/or to a particular geographical region. In such a case, the individual servers are interconnected by a network of communication links, in known fashion. One such server system is “America Online 4.0” from America Online, Incorporated of Virginia. 
     FIG. 3 is a screen shot of a “browser” application  300  (Internet Explorer) displaying a typical HTML document, or web page  302 . A “browser” is an example of client software that enables users to access and view electronic content stored either locally or remotely, such as in a network environment (local area network (LAN), intranet, Internet). A browser typically is used for displaying documents described in Hyper-Text Markup Language (HTML) and stored on servers connected to a network such as the Internet. 
     A user instructs a browser to access an HTML document, or web page, by specifying a network address—or Uniform Resource Locator (URL)—at which a desired document resides. In response, the browser contacts the corresponding server hosting the requested web page, retrieves the one or more files that make up the web page, and then displays the web page in a window on the user&#39;s computer screen. 
     As shown in FIG. 3, a single web page may be composed of several different files potentially of different data types  304  (e.g., text, images, virtual worlds, sounds, movies, etc.). In addition, a web page can includes links  306 , or pointers, to other resources (e.g., web pages or individual files) available on the network. Each link has an associated URL pointing to a location on the network. When a user clicks on, or otherwise selects a displayed link, the browser automatically will retrieve the web page corresponding to the link&#39;s associated URL and display it to the user. 
     As shown in FIG. 4, some server systems offer chat rooms that display user messages in real time. Client chat room software (e.g., America Online 4.0 and Internet Relay Chat) depicts a text window  402  that displays each message submitted by users visiting the chat room. The client software also provides controls for entering a message and submitting the entered messages to the server system. The server system broadcasts each submitted message to the other chat room users for display on their respective text windows  402 . Typically, chat rooms are named for discussion topics to help users to find chat rooms of interest. 
     FIG. 4 also shows a list of users  404  known as a “buddy list”. A user creates a buddy list by entering the names of other server system users (e.g., friends, family, or co-workers). The server can notify the user when the users in the buddy list log-on to the server system. The server can also provide other information such as which chat room the user is currently visiting. 
     Recently, a special purpose computer referred to as a “set-top box” has been developed and used in connection with standard television (TV) sets for viewing web pages on the Internet. The term set-top box derives from the usual placement of the device on top of a television. The term, however, should not be construed literally. That is, a set-top box may neither be a box nor be placed on top of a display. A set-top box essentially has the same basic components as the general purpose computer illustrated in FIG. 1, except that it also includes a TV tuner for receiving broadcast and/or cable TV signals. Users of such “web TV” systems can make dual usage of their TV sets—that is, either to watch TV or to view web pages and otherwise “surf” the Internet. 
     SUMMARY 
     Various implementations of the invention may include one or more of the following features. 
     In general, in one aspect, the invention features a method of informing a first network user of activity by other network users. The method includes receiving information identifying television programming viewed by at least one other network user and displaying the information to the first network user on a user interface. 
     Embodiments may include one or more of the following. The information may be received via the Internet, for example, by a set-top box having an Internet connection. The user interface may also display television programming (e.g., a TV show). The method may further include transmitting a message requesting the information from a server. Displaying the information may include displaying a link that automatically tunes the set-top box to television programming identified by the link. The method may also include maintaining a list (e.g., a buddy list) of network users associated with the first user. 
     In general, in another aspect, the invention features a method of informing a first network user of activity by other network users. The method includes maintaining a list of network users associated with the first user, receiving information from one or more of the other users that corresponds to the television programming viewed by the other network user(s), and transmitting information describing the television programming viewed by the other network user(s) to the first network user. 
     Embodiments may include one or more of the following features. The information may be received by an Internet service provider. The list may be received from a client. 
     In general, in one aspect, the invention features a computer program, disposed on a computer readable medium, for informing a first network user of activity by other network users. The computer program includes instructions for causing a processor to receive information identifying television programming viewed by at least one other network user, and display the information on a user interface. 
     In general, in one aspect, the invention features a computer program, disposed on a computer readable medium, for informing a first network user of activity by other network users. The program includes instructions for causing a processor to maintain a list of network users associated with the first user, receive information from one or more of the other users that corresponds to the television programming viewed by the other network user(s), and transmit information describing the television programming viewed by the other network user(s) to the first network user. 
     The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims. 
    
    
     DRAWING DESCRIPTIONS 
     FIG. 1 is a block diagram of a computer system. 
     FIG. 2 shows a typical network computing environment. 
     FIG. 3 shows a screen shot of a browser displaying a webpage. 
     FIG. 4 shows a screen shot of a chat room. 
     FIG. 5 is a block diagram of a set-top box. 
     FIG. 6 is a flow diagram illustrating transmission of a message including links that select a television channel. 
     FIG. 7 is a flow chart of a process for tuning a set-top box in response to user selection of a link. 
     FIG. 8 shows a diagram of a screen display including a chat control. 
     FIG. 9 shows a diagram of a screen display of chat room for a displayed TV show. 
     FIG. 10 is a flow chart of a process for assigning a user to a chat room based on the set-top box tuner. 
     FIG. 11 shows a screen display of a buddy list showing TV shows that users are watching. 
     FIGS. 12A-12B are flow diagrams illustrating transmission of information to users on a buddy list. 
     FIG. 13 is a flow chart of a process for receiving viewing information relating to users on a buddy list. 
     FIG. 14 is a flow chart of a process for updating buddy list viewing information. 
    
    
     Like reference numbers and designations in the various drawings indicate like elements. 
     DETAILED DESCRIPTION 
     The Set-Top Device 
     FIG. 5 shows a set-top box  500 . The set-top box  500  receives TV signals from a TV source  504  such as a cable, satellite, or conventional TV provider. The box  500  includes a tuner  510  to select a TV channel for viewing. The selected TV channel may be digital in the case of a satellite TV source or analog in the case of most cable TV sources. The box  500  can include an analog-to-digital converter  512  to permit digital processing of the TV images regardless of the TV source. 
     The box  500  includes a network communication card  514  to communicate with a network server  506  such as an ISP (Internet Service Provider). The box  500  also includes browser client software  516  for communicating with the server, for example, by sending and receiving HTTP (HyperText Transfer Protocol) messages. Additionally, the box  500  includes communication protocol software (e.g., TCP/IP) and an operating system. 
     The box  500  constructs a display that can include information received from the server  506  and/or from the TV source  504 . The box  500  sends the constructed display to a TV  502  or monitor via an output port  517 . In one embodiment, the browser  516  (e.g., Liberate&#39;s TV Navigator) integrates server and TV information by processing an HTML-like (HyperText Manipulation Language) tag (e.g. &lt;IMG SRC=“TV” x=0 y=0&gt;) that instructs the browser  516  to place incoming TV images on the screen at specified coordinates. By modifying a received web-page to include this tag, the browser  516  can display the TV data received from the TV source  504  in conjunction with information provided by the server  506 . Alterations to the screen, such as adding user interface controls or moving and/or resizing the TV image also can be performed by altering instructions of a web-page displayed by the browser. The box  500  may store a default web-page that makes the received TV signal a full-screen background image  518  with overlayed user interface controls  520 . The controls  520  can correspond to functions such as initiating a session with the server  506 . 
     Tuning Links 
     FIG. 6 shows a set-top box  600   a  in Washington, D.C. sending a message  600  to a set-top box  600   b  in Boston via the server  506 . The message  600  could be part of an e-mail message, a chat room entry, an instant message, etc. The message includes links  616  and  618  that can control the tuner of a set-top box. Each link  616  and  618  can include a reference to a television channel feature (e.g., “&lt;A TVREF=FOX&gt;”) and instructions for displaying the link on a display (e.g., “&lt;UNDERLINE&gt;FOX&lt;/UNDERLINE&gt;”). Like conventional links, the links  616  and  618 , may by represented by one or more graphic images instead of simple text. For example, the links  616  and  618 , may appear as a web banner, for example, advertising a TV show that is displayed when a user visits a URL. 
     Unlike traditional links that cause a browser to load specified files or an Internet URL (Universal Resource Locator) when selected, the links  616  and  618  in the message  600  can change the channel of the set-top box. This enables friends to exchange messages that include links to a particular network  618  or TV show  616 . When selected, the browser tunes the set-top box to the channel corresponding to the network or show specified by a link. 
     The link may, but need not, refer to a specific channel (e.g., “Jim, turn to channel 38”). In fact, referring to a specific channel may be undesirable as different geographic locations may offer a given TV network on different channels. For example, an NBC affiliate in Boston may be on channel “10” while the D.C. NBC affiliate broadcasts on channel “28”. Additionally, channel numbers may vary based on the TV source. That is, the D.C. NBC affiliate may broadcast in the frequency band for channel “28” but may be programmed and presented to viewers as channel “4” by a D.C. cable TV company. Thus, providing a link that references a network instead of a particular channel increases the likelihood the link will appropriately change the channel when transmitted to users that receive TV signals from different sources. 
     However, merely specifying a network may also be undesirable because TV schedules typically vary from location to location. For example, an NBC TV network affiliate in Boston may broadcast a movie while the NBC TV network affiliate in Washington D.C. broadcasts a talk show. Further, the same show may be shown by different networks in different locations. That is, in some areas a show may appear on the ABC television network while in other locations the same show is broadcast by FOX networks. Finally, a given show may be broadcast at different times in different time zones. To account for these variations, set-top software (e.g., extensions to the browser) can determine a channel corresponding to a link based on a wide variety of channel features instead of the channel number or network name, for example, by using an electronic programming guide (EPG). 
     As shown in FIG. 6, the set-top boxes  600 A,  600 B have received different EPGs  602 A,  602 B. An EPG is essentially an electronic version of a TV guide. Different EPGs can include different information. For example, an EPG can include a show title  610 , channel number  606 , network  608 , and start  612  and stop  614  times of different TV programs. The EPG also can include other data  615  such as ratings (e.g., “R” and “PG-13”) and/or a brief description of the show such as its type (e.g., “sitcom” or “drama”) and/or actors that appear in the show. In one embodiment, broadcasters transmit EPG guides to set-top boxes using the vertical blanking interval (VBI) of traditional video signals. Typically, information included in the VBI does not affect the image displayed on a TV. Thus, the VBI provides a convenient buffer for unobtrusively transmitting information to set-top boxes  600 A,  600 B. In other embodiments, the set-top boxes  600 A,  600 B can receive an EPG from the server  506  based on the billing address of the set-top box user or a local server access phone number dialed by the set-top box. In yet other embodiments, the EPG may be transmitted by satellite. 
     A set-top box  600 B can use the EPG information to select a channel corresponding to a particular link from the shows currently available from the TV source. For example, in FIG. 6, the set-top box  600 B in Boston has received message including a link  616  referring to the TV show “Friends” from a user in D.C. Looking up the show “Friends” in the “program” column of the Boston set-top box&#39;s  600 B EPG  602 B yields a tuning channel of “10”. 
     The message also includes a link  618  referring to the FOX network. Selection of this link and the ensuing lookup of “FOX” in the “channel name” column of the EPG  602 B tunes to the Boston set-top box  600 B to channel “11”. 
     In general, the links can refer to any information included in the EPG such as actors or actresses appearing in shows (e.g., “Meryl Streep is a very good actress”). 
     Software can examine each column of the EPG until a match (or a near match) is found and can change the channel correspondingly. In this example, the set-top box would search for a show starring Meryl Streep, and, if found, would tune the TV to channel for that show. 
     FIG. 7 shows a process for tuning the set-top system based on a received link. After receiving an EPG  700 . The client receives a message including a link that is a reference to a television channel feature (e.g., a network or a show)  702 , user selection of a link  704  causes set-top box software to determine tuning information corresponding to the link  706 , for example, by looking-up the information in an EPG. The software tunes  710  the set-top box to the determined tuning channel. 
     In some embodiments, the process may enforce parental controls  708  over the type of programming different family members can view. For example, America Online enables a parent to create user names for family members and associate different privileges to each of the user names. For example, a parent can configure the family member accounts such that a child has privilege only to see TV programs having a “G” (General) rating while a teenager has privileges to see TV programs having a “G” or “PG” (Parental Guidance suggested) rating. 
     Potentially, a given show will not be immediately available when a user selects a link. For example, a user may select a TV show&#39;s link included an e-mail message written much earlier in the day. In this case, a lookup for the show in the current time period would fail. The set-top box, however, can store the link and remind a user and/or automatically tune the set-top box when the linked TV show is scheduled for broadcast. 
     In some embodiments, the set-top box transmits  712  a message to the server whenever a user changes channels. This enables the server to track viewers and supports features such as TV buddy lists and TV chat rooms. 
     TV Chat Rooms 
     The display shown in FIG. 9 illustrates how a display can simultaneously present a television program and a chat room. The television program and chat room may be independent. That is, a user could change TV shows without changing chat rooms and vice-versa. 
     In other embodiments, software may control the chat room the user is a member of so that it corresponds to the viewed television program. For example, as shown in FIG. 8, a display may include a region for displaying a received TV signal  800  (e.g., Gilligan&#39;s Island) and a “TV chat” control  802 . Selecting the control automatically places a user in a chat room corresponding to the particular TV show. As shown in FIG. 9, when a user watching “Gilligan&#39;s Island” selects the TV chat control, the server places the user in a “Gilligan&#39;s Island” chat room  902  with other users viewing the show. The users can then share their comments on the show in real time by submitting messages to the server for display in the chat room window. The browser can configure the display such that the chat room text window  902  and the TV show display  900  can be viewed simultaneously. 
     FIG. 10 shows a process for automatically assigning users to a chat room based on the TV show a viewer is currently watching. Like the processing of links described above, the chat room assignment process can use information in the EPG  1000  to determine the television programming a user is viewing. When a user selects a TV chat button or other user interface control  1002 , the process determines the currently tuned channel (e.g., channel “38”). The process then uses the EPG to identify the show corresponding to this channel  1004 . For example, the process can use an EPG to lookup the TV show being broadcast on channel “38” at the current time. After identifying the TV show  1006 , the set-top box can transmit a request to join a chat for the identified TV show  1006 . The message may include the name of the TV show, the channel number, the network or other information the server can use to determine which show the viewer is watching. The server can then place the user in the chat room associated with that TV show. 
     As described, each time the user changes channels  1008 , the set-top box can transmit a message to the server  1010 ,  1012  indicating the new channel the viewer is watching. If the user is already in a TV chat room, the server can move the user to chat room corresponding to the new channel. For example, if the user tunes from “Love Boat” to “Fantasy Island”, the user can be moved from the Love Boat chat room to the Fantasy Island chat room. The client may wait a short period of time before transmitting a “Channel Changed” message to see if the user changes channel again quickly. This reduces the number of messages produced when a viewer “channel surfs” for an interesting program. 
     Buddy List 
     FIG. 11 shows a set-top box display that includes a TV program  1102  and a TV-enhanced buddy list  1110 . Like conventional buddy lists, a user can define a list of server system user names. In addition to showing whether users on the list are currently logged on to the server, the enhanced buddy-list shows the TV show or network  1110  each listed buddy  1108  is watching. As shown, the TV show and/or network  1110  can be displayed as a link. By selecting the link, a user can watch the same show that a friend is watching. 
     FIGS. 12A and 12B shows server data  1204  used to provide the enhanced buddy list functions. The data  1204  includes a list  1206  of logged-in users and the TV show and/or network that each user is currently watching. The server also stores a buddy list  1208  for each user. The buddy list  1208  may be permanently stored on the server  1204  or transmitted to the server  1204  by a set-top box when a user logs-on. As shown in FIG. 12A, when a user  1200  changes channels, set-top box software transmits a message  1202  to the server including the name of the show and/or the network the user is presently viewing. As shown in FIG. 12B, the server  1204  updates the user list  1206  to reflect the new viewing information. The server also transmits a message  1212  to each logged-in user  1210  that included the channel-changing user in his or her list. 
     FIG. 13 shows a process for providing buddy lists that display the show or network a user is viewing. After a user logs-on, the set-top box software transmits the user&#39;s buddy list  1300  to the server. The server responds by sending the set-top box TV viewing information for each member of the user&#39;s buddy list  1302 ,  1304 . The transmitted information, however, will quickly be outdated as members of the buddy list log-on and off, change channels, or turn on a “privacy” feature that stops the server from broadcasting the TV show they are watching. 
     FIG. 14 shows a process for updating the buddy list information initially transmitted. As each user changes channels  1402 , the user&#39;s set-top box transmits a message to the server describing the change  1404 . The server uses these messages to update its user list  1406 . After updating  1404 , the server broadcasts  1410  the change to each logged-on user who included the channel changing user in their buddy list. Viewers can turn off this feature if they do not want others to see the name of the TV show they are watching. 
     A network user may have more than one buddy list. For example, the user may specify other users for a general buddy list, a buddy list for a particular network, and/or a buddy list for a particular television show or sports team. The server may provide chat rooms for members of a user&#39;s buddy list. For example, a user may click a “buddy chat” button on a graphical user interface and be assigned to a chat room for the buddies on the list. The graphical user interface may display different buddy lists for user selection based on the show being viewed. For example, when a user tunes to “I Love Lucy”, the user&#39;s “I Love Lucy” buddies will appear with an option for a buddy chat for those users. 
     The techniques, methods and systems described here may find applicability in any computing or processing environment in which electronic content may be viewed, accessed or otherwise manipulated. Implementations may vary considerably. For example, in some embodiment, EPGs for each TV source are stored centrally at the server instead of being distributed to each set-top box. In this embodiment, the EPG lookup functions are handled by messages exchanged by the server and clients. In general, tasks process may be distributed between client and server in a variety of ways. 
     Various implementations of the systems and techniques described here may be realized in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations thereof. A system or other apparatus that uses one or more of the techniques and methods described here may be implemented as a computer-readable storage medium, configured with a computer program, where the storage medium so configured causes a computer system to operate on input and/or generate output in a specific and predefined manner. Such a computer system may include one or more programmable processors that receive data and instructions from, and transmit data and instructions to, a data storage system, and suitable input and output devices. 
     Each computer program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language may be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. 
     Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. 
     Any of the foregoing may be supplemented by, or implemented in, specially-designed ASICs (application-specific integrated circuits). 
     A number of embodiments of the present invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims.
A method of informing a first network user of activity by other network users includes receiving information identifying television programming viewed by at least one other network user and displaying the information to the first network user on a user interface.