Patent Description:
These security issues can be addressed by sandboxing or otherwise blocking out each of the apps. Doing so, however, can be both slow and use significant resources, especially when many apps need to execute on the device. Thus, permitting code of applications associated with tiles to execute can be unsafe, slow, or consume substantial computing resources. <CIT> D1 describes a computerized method of presenting information from a variety of sources on a display device. A graphical user interface for organizing the simultaneous display of information from a multitude of information sources is described. A graphical user interface organizes content from a variety of information sources into a grid of tiles, each of which can refresh its content independently of the others. The grid functionality manages the refresh rates of the multiple information sources. The invention is set forth in the independent claims. Embodiments of the invention are described in the dependent claims.

This document describes techniques enabling live tiles without application-code execution. These techniques permit live content to be presented in tiles without executing code of applications associated with those tiles. By so doing, live tiles may be presented more safely, faster, or using fewer resources.

This summary is provided to introduce simplified concepts enabling live tiles without application-code execution, which is further described below in the Detailed Description. This summary is not intended to identify essential features of the claimed subject matter, nor is it intended for use in determining the scope of the claimed subject matter. Techniques and/or apparatuses enabling live tiles without application-code execution are also referred to herein separately or in conjunction as the "techniques" as permitted by the context.

Embodiments enabling live tiles without application-code execution are described with reference to the following drawings. The same numbers are used throughout the drawings to reference like features and components:.

This document describes techniques and apparatuses enabling live tiles without application-code execution. These techniques enable a user to see live content within tiles, including without executing code of applications associated with those tiles.

In some cases the techniques enable a live-tile user interface having numerous live tiles displaying content of associated applications. In doing so, however, code of these applications does not need to be executed. Instead, an indicator of the application, such as one stored in non-executing metadata of the application, indicates a source for content of the application. The techniques may then retrieve this content from the source and present the content in the tile associated with that application. The techniques may do so in a secure manner by leveraging a trusted operating-system component to download live content on behalf of the applications.

Furthermore, in some cases, a user may wish to interact with content on a new device or unknown device. Assume that the user would like to interact with content associated with his or her applications, such as through a user interface having many live tiles showing that content. Assume also that the user is using a new device or some temporary device, such as a friend's mobile device, a computer at an internet café or library, or some other new or temporary device. Current solutions for providing live content may require installation of these applications, which as noted can be tens or even hundreds of applications. Doing so consumes extraordinary amounts of resources and, in some cases, is so slow that the user experience is poor.

Through use of the techniques, however, executing or even installing the applications can be avoided. Instead of having to install, for example, <NUM> applications to execute code of those applications to retrieve content for <NUM> live tiles, no applications are installed. The techniques determine a source for the content, such as through metadata of the applications or some record of the user's applications, and thereby retrieve the content for presentation within the live tiles.

Not only can the techniques reduce resource usage, improve performance, or increase security, in many cases the techniques also make application development easier. No longer does an application developer develop code for providing content to live tiles, instead, the application developer needs only include or provide some sort of indicator to show where content for the application can be retrieved.

These are but a few examples in which the techniques enable live tiles. Numerous other examples, as well as ways in which the techniques operate, are described below. This discussion proceeds to describe an example environment in which the techniques may operate, methods performable by the techniques, and an example apparatus below.

<FIG> illustrates an example environment <NUM> in which techniques enabling live tiles without application-code execution can be embodied. Environment <NUM> includes a computing device <NUM> having a tile manager <NUM>, content source <NUM>, and communication network <NUM>, which enables communication across various networks. In this illustration, computing device <NUM>, through tile manager <NUM>, receives or retrieves metadata <NUM> of application <NUM>, shown at arrow <NUM>-<NUM>. With this metadata <NUM>, tile manager <NUM> retrieves content through communication network <NUM> and from content source <NUM>, shown at arrow <NUM>-<NUM>. Tile manager <NUM> then, shown at arrow <NUM>-<NUM>, presents content within a live tile associated with application <NUM> and in live-tile interface <NUM>. Note that executable code <NUM> of application <NUM> is not executed, nor is it used to gain the content. Executable code <NUM> is shown for context, though it (and even application <NUM> in some cases), need not be stored on, installed on, or even accessible by computing device <NUM>.

Content can include what is new or of potential interest for application <NUM>, such as a new email, entry, article, picture, video, song, or indication that a software update or expiration is approaching. New content is content that is determined to be, or is likely to be, newly presented to a user associated with live-tile interface <NUM>. Thus, content that has not previously been presented in a tile, or has not been presented since the user last opened live-tile interface <NUM>, whether on computing device <NUM> or some other device, can be considered new content.

Other content, however, can also be shown, such as content seen previously but known, or likely to be, of interest to the user. Examples include an indication that a subscription is expiring and must be renewed, an indication that the user has selected to be maintained, such as a number of seats left at a particular showing of a movie that the user is interested in seeing at that time, or newest content for the application even if it was previously presented to the user.

While not required, content within a live tile can be directed to a single set of larger content, such as presenting one image and a headline for a news article that, if presented by the application, would have ten pictures and five pages of text. Further, multiple content can be presented within a live tile at one time, or can be rotated on and off, or both.

<FIG> illustrates an example embodiment of computing device <NUM> of <FIG>, which is illustrated with six examples devices: a laptop computer <NUM>-<NUM>, a tablet computer <NUM>-<NUM>, a smart phone <NUM>-<NUM>, a set-top box <NUM>-<NUM>, a desktop computer <NUM>-<NUM>, and a gaming device <NUM>-<NUM>, though other computing devices and systems, such as servers and netbooks, may also be used.

Computing device <NUM> includes or has access to computer processor(s) <NUM>, computer-readable storage media <NUM> (media <NUM>), and one or more displays <NUM>, four examples of which are illustrated in <FIG>. Media <NUM> includes an operating system <NUM>, tile manager <NUM>, and applications <NUM>, each of which may include metadata <NUM> and executable code <NUM>.

Tile manager <NUM> is capable of enabling live tiles without application-code execution. As noted above, the techniques, here through tile manager <NUM>, are capable of presenting content within tiles. This content is associated with, but not generated by, executing code of applications <NUM>. Thus, while media <NUM> may include applications <NUM>, and metadata <NUM> and executable code <NUM> thereof, execution is not needed to present content in live tiles associated with applications <NUM>. Further, in various examples described herein, tile manager <NUM> may operate without computing device <NUM> storing, executing, or even installing applications <NUM>. Therefore, tile manager <NUM> may operate without applications <NUM> executing application code, even small portions of application code, thereby making content presentation in live tiles more secure.

Tile manager <NUM> includes live-tile interface <NUM>, which is capable of presenting content in live tiles associated with multiple applications, such as the twelve different live tiles illustrated in <FIG> and their respective applications. In some cases, live-tile interface <NUM> presents live tiles in a particular layout <NUM>, which may be configured by tile manager <NUM> by default, by frequency of usage, or by user selection.

As noted, applications <NUM> include, or are associated with, metadata <NUM>. Metadata <NUM> is, or may include, non-executable properties associated with application <NUM>. Metadata <NUM> may include indicator <NUM> and frequency <NUM>, as well as other properties, such as a format in which to present content (e.g., one image on left, text only on right, and so forth). Indicator <NUM> provides sufficient information for tile manager <NUM> to retrieve content associated with the application, which may simply identify the application, a link to new or all content, or a universal resource locator (URL) usable by tile manager <NUM> to retrieve content.

Frequency <NUM> is associated with application <NUM>, and can be used by tile manager <NUM> to determine a frequency at which to retrieve content for application <NUM>, such as repetitively at frequency <NUM>. Frequency <NUM> may also, or instead, be used as part of establishing a data push from content source <NUM>. For example, content source <NUM> may be configured to push content to computing device <NUM> at, or based on, frequency <NUM>. In both cases, content can be received or retrieved only when new or regardless of whether the content is new to the user. While metadata <NUM> can be or include non-executable properties, metadata <NUM> can be written in various markup languages or formats, such as extensible markup language (XML), hypertext markup language (HTML), or really simple syndication (RSS), just to name a few. By so doing, tile manager <NUM> may easily parse metadata <NUM> for indicator <NUM> and frequency <NUM>. Note that indicator <NUM> and/or frequency <NUM> may be received or used without necessarily receiving metadata <NUM>, as will be described in greater detail below.

Ways in which entities of <FIG> and <FIG> act and interact vary and are set forth in greater detail below. The entities illustrated for computing device <NUM>, as well as content source <NUM>, can be separate or integrated.

<FIG> depicts a method <NUM> for enabling live tiles without application-code execution. In portions of the following discussion reference may be made to environment <NUM> of <FIG> and/or entities of <FIG>, reference to which is made for example only. The order in which the following methods are described is not intended to be construed as a limitation, and any number or combination of the described method operations can be performed in any order to perform a method, or an alternate method for enabling live tiles without application-code execution.

Block <NUM> receives metadata of an application, the metadata having an indicator. As noted above, tile manager <NUM> may receive this metadata by registering or installing an application, though in some cases it may instead be received or retrieved from a remote source, such as content source <NUM>. By way of example only, consider tile manager <NUM>, which receives metadata <NUM> when registering application <NUM> but without executing executable code <NUM> of application <NUM>.

Block <NUM> retrieves, based on the indicator, content associated with the application. In the ongoing example, assume that tile manager <NUM> downloads data from a URL of content source <NUM> based on the indicator, the URL associated with the particular application. Further, assume that tile manager <NUM> determines, from user records or content source <NUM>, that one particular piece of the content available at the URL is new since the content for the application was last presented in a live tile to this user.

Block <NUM> presents, within a live tile associated with the application, the content within the live tile. The content may also be presented within a live-tile user interface having multiple other live tiles associated with other applications. As noted above, the acts of receiving metadata of the application, retrieving the content associated with the application, and presenting the content within the live tile can be performed without executing application code.

Concluding the present example, assume that tile manager <NUM> presents another example of live-tile interface <NUM>, shown in <FIG>. This live-tile interface <NUM> includes fourteen live tiles, eleven of them relatively large and three relatively small. The live tile of interest in this example is live tile <NUM>, which is associated with a News application. The content new since the user was last presented content for this application concerns a weather satellite. This content <NUM> is shown in expanded form at <NUM> as well to illustrate that, while live tiles may be fairly small, meaningful new content can be presented within them. Here, a user may see this new content and determine that, without executing the associated News application, the article is or is not interesting. In some cases, the user may determine that sufficient content relating to the article has been shown and thus, while the article is interesting, the user need not take the time to read the full article.

As noted in part above, where multiple content changes for an application are retrieved, tile manager <NUM> may present the newest of the content changes or rotate through these content changes. In any case, however, new content permits live tiles to maintain a live feel for live-tile interface <NUM>. The term live tile is intended to represent the updating of content for tiles, in contrast to a tile that does not change. Thus, a tile in which new content is presented, whether the content is animated, moving, rotating or not, enables the tile to be live to the user.

In this context, assume that the user viewed live tile <NUM> at <NUM> A. and, on viewing live-tile interface <NUM> at <NUM> P. , is presented with live tile <NUM> reporting content new since to the News application since <NUM> A. Here the new content is the article concerning a weather satellite that has been damaged by a meteor and may crash to earth. Content <NUM> shows content (or a portion thereof) for the news article that is now available at the News application website, here with an image of a satellite, a title of the article, and a first sentence of the article.

Note also that tile manager <NUM> may, via live-tile interface <NUM>, present content for multiple applications all at one time, one-at-a-time (e.g., in rapid progression), after compiling into batches, and/or at a frequency associated with each respective application.

<FIG> depicts a method <NUM> enabling live tiles without application-code execution and based on an identity of a user.

Block <NUM> receives, at a computing device with which a user is not associated, an identifier associated with the user. Such a computing device may be a public network terminal, a friend's mobile phone, and so forth. The computing device may have been used by the user in the past, but has not retained all or any of the installed applications of a live-tile interface. The live-tile interface may be associated with the user or based on an association with the user. Thus, while a user may have used a same desktop computer at a library, the desktop computer may not have retained various installed applications or otherwise retained an association with the user. The user's association with the computing device is therefore being newly established or renewed, as least with respect to a live-tiles interface.

The identifier received can be of many various types, such as a name and password, simple name (if no security is desired), gesture password, retinal scan, biometric, and so forth. The techniques (alone or with assistance) may then authenticate the user, though this is not necessarily required.

Block <NUM> determines, based on the identifier, multiple applications associated with the user. Tile manager <NUM> may determine the multiple applications in various manners, such as by passing the identifier to a remote authenticator, receiving authentication of the user, passing the authentication to an entity that records application associations for users, and so forth. Thus, tile manager <NUM> may determine applications and/or their indicators (e.g., URLs), or block <NUM> may be used in combination with block <NUM> to retrieve content from a same source as the entity (e.g., content source <NUM>) that provides associations based on the user identifier.

Block <NUM> retrieves content associated with one or more uninstalled applications of the multiple applications. These uninstalled applications have not been installed on the computing device or have been previously uninstalled. The content can be retrieved from multiple different remote content sources or, as noted above, tile manager <NUM> may retrieve content from a single source, such as content source <NUM> of <FIG>.

<FIG> illustrates an example network environment having multiple different remote content sources. In the context of this particular example, tile manager <NUM> determines multiple applications for a user and then retrieves, for those multiple applications, content from multiple different remote content sources. As illustrated in <FIG>, tile manager <NUM> communicates with remote computing device <NUM> (e.g., authentication server) at arrow <NUM>-<NUM> through network <NUM>. Tile manager <NUM> identifies a user and requests application indicators associated with the user from remote computing device <NUM>, such as URLs for each of multiple applications. With these URLs, tile manager <NUM> retrieves content from multiple remote content sources <NUM>-<NUM>, <NUM>-<NUM>, and <NUM>-<NUM>, each of which is associated with live tiles <NUM>-<NUM>, <NUM>-<NUM>, and <NUM>-<NUM> respectively, shown at arrows <NUM>-<NUM>.

Block <NUM> presents, within live tiles associated with the one or more uninstalled applications, the content retrieved. The techniques may present content in live tiles within a user interface associated with the user, such as live-tile interface <NUM> of <FIG>, <FIG>, or <FIG>. Further, as noted in part above, tile manager <NUM> may present the live tiles in a particular layout associated with the user, such as layout <NUM> of <FIG>, which may be determined as part of block <NUM>. Tile manager <NUM> may present the content retrieved without executing application code on the computing device that is under control of one of the uninstalled applications, though the techniques are not precluded from doing so for all live-tile-enabled applications associated with the user.

Concluding the illustrated example, tile manager <NUM>, through live-tile interface <NUM> of <FIG>, presents content associated with various applications within live tiles <NUM>-<NUM>, <NUM>-<NUM>, and <NUM>-<NUM>, shown at arrows <NUM>-<NUM>. Thus, content from remote content source <NUM>-<NUM>, which is associated with the "F" application, is presented in live tile <NUM>-<NUM>, content from remote content source <NUM>-<NUM>, which is associated with the "News" application, is presented in live tile <NUM>-<NUM>, and content from remote content source <NUM>-<NUM>, which is associated with the "In Touch" application, is presented in live tile <NUM>-<NUM>.

Note again that each of live tiles <NUM> need not have an associated application running, including even a browser or other portal application. Instead, tile manager <NUM> is capable of retrieving content from remote sources, including doing so with low transmission bandwidth, reduced local computing resource usage, and with a fast user experience.

<FIG> depicts a method <NUM> for presenting retrieved content associated with multiple applications without local execution of application code.

Block <NUM> determines, based on an identifier associated with a user, live tiles associated with multiple applications of the user. The live tiles may be presented in a live-tile user interface having a particular layout within the live-tile user interface. Tile manager <NUM> may do so in various manners set forth above, such as via live-tile interface <NUM> of <FIG> and according to layout <NUM> of <FIG>.

Block <NUM> retrieves, without local execution of application code associated with the multiple applications, content associated with the multiple applications. This content may be received from local or remote sources, such as remote content sources <NUM>-<NUM>, <NUM>-<NUM>, or <NUM>-<NUM> of <FIG>.

Block <NUM> presents, within the live tiles and in the layout of the live-tile user interface, the retrieved content associated with the multiple applications. As noted, tile manager <NUM> may arrange live tiles in any suitable layout, such as a default layout, a usage-based layout, or layout <NUM>. Note that layout <NUM> is associated with the user and/or may be associated with the user's identifier. A user may select certain live tiles to be presented, and configure a layout that matches his or her preferences. Even if the techniques are performed on a computing device not associated with the user, the user's identifier can be used by tile manager <NUM> to determine the user's preferred live tiles and layout thereof.

The preceding discussion describes methods enabling live tiles without application-code execution. These methods are shown as sets of blocks that specify operations performed but are not necessarily limited to the order shown for performing the operations by the respective blocks.

Aspects of these methods may be implemented in hardware (e.g., fixed logic circuitry), firmware, software, manual processing, or any combination thereof. A software implementation represents program code that performs specified tasks when executed by a computer processor. The example methods may be described in the general context of computer-executable instructions, which can include software, applications, routines, programs, objects, components, data structures, procedures, modules, functions, and the like. The program code can be stored in one or more computer-readable memory devices, both local and/or remote to a computer processor. The methods may also be practiced in a distributed computing environment by multiple computing devices.

These techniques may be embodied on one or more of the entities shown in environment <NUM> of <FIG> (and as detailed in <FIG>) and/or example device <NUM> described below, which may be further divided, combined, and so on. Thus, environment <NUM> and/or device <NUM> illustrate some of many possible systems or apparatuses capable of employing the described techniques. The entities of environment <NUM> and/or device <NUM> generally represent software, firmware, hardware, whole devices or networks, or a combination thereof. In the case of a software implementation, for instance, the entities (e.g., tile manager <NUM> and live-tile interface <NUM> of <FIG> and <FIG>, content sources <NUM> and <NUM> of <FIG> and <FIG>, and remote computing device <NUM> of <FIG>) represent program code that performs specified tasks when executed on a processor (e.g., processors <NUM> and <NUM>). The program code can be stored in one or more computer-readable memory devices, such as computer-readable storage media <NUM> or computer-readable media <NUM> of <FIG>. The features and techniques described herein are platform-independent, meaning that they may be implemented on a variety of commercial computing platforms having a variety of processors.

<FIG> illustrates an apparatus having various components, here as part of an example device <NUM>, which can be implemented as any type of client, server, and/or computing device as described with reference to the previous <FIG> to implement techniques enabling live tiles without application-code execution and other techniques described herein. In some cases, device <NUM> can be implemented as one or a combination of a wired and/or wireless device, as a form of television client device (e.g., television set-top box, digital video recorder (DVR), etc.), consumer device, computer device, server device, portable computer device, user device, communication device, video processing and/or rendering device, appliance device, gaming device, electronic device, and/or as another type of device. Device <NUM> may also be associated with a user (e.g., a person) and/or an entity that operates the device such that a device describes logical devices that include users, software, firmware, and/or a combination of devices.

Device <NUM> includes communication devices <NUM> that enable wired and/or wireless communication of device data <NUM> (e.g., received data, data that is being received, data scheduled for broadcast, data packets of the data, etc.). Device data <NUM> or other device content can include configuration settings of the device, media content stored on the device, and/or information associated with a user of the device. Media content stored on device <NUM> can include any type of audio, video, and/or image data. Device <NUM> includes one or more data inputs <NUM> via which any type of data, media content, and/or inputs can be received, such as user-selectable inputs, messages, music, television media content, recorded video content, and any other type of audio, video, and/or image data received from any content and/or data source (e.g., images and text for presentation in live tiles).

Device <NUM> also includes communication interfaces <NUM>, which can be implemented as any one or more of a serial and/or parallel interface, a wireless interface, any type of network interface, a modem, and as any other type of communication interface. The communication interfaces <NUM> provide a connection and/or communication links between device <NUM> and a communication network by which other electronic, computing, and communication devices communicate data with device <NUM>.

Device <NUM> includes one or more processors <NUM> (e.g., any of microprocessors, controllers, and the like), which process various computer-executable instructions to control the operation of device <NUM> and to enable application reporting in an application-selectable interface. Alternatively or in addition, device <NUM> can be implemented with any one or combination of hardware, firmware, or fixed logic circuitry that is implemented in connection with processing and control circuits which are generally identified at <NUM>. Although not shown, device <NUM> can include a system bus or data transfer system that couples the various components within the device. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures.

Device <NUM> also includes computer-readable storage media <NUM>, such as one or more memory devices that enable persistent and/or non-transitory data storage (i.e., in contrast to mere signal transmission), examples of which include random access memory (RAM), non-volatile memory (e.g., any one or more of a read-only memory (ROM), flash memory, EPROM, EEPROM, etc.), and a disk storage device. A disk storage device may be implemented as any type of magnetic or optical storage device, such as a hard disk drive, a recordable and/or rewriteable compact disc (CD), any type of a digital versatile disc (DVD), and the like. Device <NUM> can also include a mass storage media device <NUM>.

Computer-readable storage media <NUM> provides data storage mechanisms to store the device data <NUM>, as well as various device applications <NUM> and any other types of information and/or data related to operational aspects of device <NUM>. For example, an operating system <NUM> can be maintained as a computer application with the computer-readable storage media <NUM> and executed on processors <NUM>. The device applications <NUM> may include a device manager, such as any form of a control application, software application, signal-processing and control module, code that is native to a particular device, a hardware abstraction layer for a particular device, and so on.

Device applications <NUM> also include any system components or modules to implement techniques enabling live tiles without application-code execution. In this example, device applications <NUM> can include tile manager <NUM> and live-tile interface <NUM>.

Claim 1:
One or more computer-readable storage devices comprising computer-readable instructions that, responsive to execution by one or more processors, perform operations comprising:
receiving (<NUM>), at a computing device with which a user has not been known to have previously interacted, an identifier associated with the user;
determining (<NUM>), based on the identifier, multiple applications associated with the user;
receiving metadata of one or more uninstalled applications of the multiple applications, the metadata having an indicator for at least one of
- identifying an application of the one or more uninstalled applications,
- a link to new or all content for the application,
- a universal resource locator, URL, to retrieve content for the application,
- a frequency at which to retrieve content for the application, or
- a format in which to present content for the application;
based on the information included in the indicator, retrieving (<NUM>) content associated with the one or more uninstalled applications of the multiple applications, the one or more uninstalled applications not installed on the computing device; and
presenting (<NUM>), within live tiles associated with the one or more uninstalled applications through a user interface associated with the user, the content retrieved,
selecting a live tile to be presented from the live tiles and configuring a layout of the live tile matching user preferences.