US20150263911A1 - Roaming Application Settings Across Multiple Computing Devices - Google Patents
Roaming Application Settings Across Multiple Computing Devices Download PDFInfo
- Publication number
- US20150263911A1 US20150263911A1 US14/727,691 US201514727691A US2015263911A1 US 20150263911 A1 US20150263911 A1 US 20150263911A1 US 201514727691 A US201514727691 A US 201514727691A US 2015263911 A1 US2015263911 A1 US 2015263911A1
- Authority
- US
- United States
- Prior art keywords
- application
- settings
- computing devices
- computing device
- application settings
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Definitions
- a history of application setting changes on a first computing device is monitored.
- the first change is added to a synchronization communication module for communication to one or more additional computing devices.
- the second change is added to the history of application setting changes and is also incorporated into the application settings on the first computing device.
- a provider module associated with an application is identified.
- One or more application settings of the application are stored in one or more settings locations known to the provider module.
- the provider module is run to retrieve one or more application settings, and to roam the one or more application settings across multiple computing devices. These multiple computing devices include both the first computing device and one or more additional computing devices.
- FIG. 1 illustrates an example system implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments.
- FIG. 2 illustrates an example computing device implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments.
- FIG. 3 is a flowchart illustrating an example process for configuring a computing device and roaming application settings in accordance with one or more embodiments.
- FIG. 4 is a flowchart illustrating an example process for a provider when roaming application settings in accordance with one or more embodiments.
- FIG. 5 is a flowchart illustrating an example process for roaming application settings across multiple computing devices in accordance with one or more embodiments.
- FIG. 6 illustrates an example computing device that can be configured to implement the roaming application settings across multiple computing devices in accordance with one or more embodiments.
- Roaming application settings across multiple computing devices is discussed herein.
- one or more application settings for an application are roamed across multiple computing devices.
- the change is roamed to the other ones of the multiple devices. Accordingly, for that particular application, the application settings being roamed on the multiple devices will be the same, and any change to such an application setting made by a user on one device is automatically identified and communicated to the other devices as well.
- Application settings for multiple different applications on the devices can be roamed.
- FIG. 1 illustrates an example system 100 implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments.
- System 100 includes multiple computing devices 102 , 104 , and 106 that can communicate with one another via a network 108 .
- Computing devices 102 , 104 , and 106 can each be a variety of different types of computing devices.
- each computing device 102 , 104 , and 106 can be a desktop computer, a laptop or handheld computer, a mobile station, an entertainment appliance, a set-top box communicatively coupled to a display device, a television, a cellular or other wireless phone, a game console, an automotive computer, and so forth.
- each computing device 102 , 104 , and 106 may range from a full resource device with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., traditional set-top boxes, hand-held game consoles).
- a full resource device with substantial memory and processor resources (e.g., personal computers, game consoles)
- a low-resource device with limited memory and/or processing resources e.g., traditional set-top boxes, hand-held game consoles.
- Different computing devices 102 , 104 , and 106 can be the same or different types of computing devices.
- Network 108 can be a variety of different networks, including the Internet, a local area network (LAN), a cellular or other telephone network, an intranet, other public and/or proprietary networks, combinations thereof, and so forth.
- computing devices 102 , 104 , and 106 can communicate directly with one another (e.g., using infrared communications, a wired connection, a wireless (e.g., wireless universal serial bus) connection, and so forth).
- Computing devices can also communicate with one another via one or more intermediary devices, such as one or more services or server computing devices.
- Application settings for one or more applications can be roamed (also referred to as synchronized) across computing devices 102 , 104 , and 106 . Whenever a change to a roamed application setting is made on one of computing devices 102 , 104 , and 106 , it is automatically communicated to and saved by the other computing devices 102 , 104 , and 106 . Although three computing devices 102 , 104 , and 106 are shown in system 100 , it is to be appreciated that application settings can be roamed across two computing device, or alternatively across four or more computing devices. The particular computing devices across which application settings are to be roamed, as well as the particular applications settings that are to be roamed, can be identified in different manners as discussed in more detail below.
- Each computing device 102 , 104 , and 106 includes a settings synchronization module and application settings.
- Computing device 102 includes settings synchronization module 112 and application settings 114
- computing device 104 includes settings synchronization module 116 and application settings 118
- computing device 106 includes settings synchronization module 120 and application settings 122 .
- Settings synchronization modules 112 , 116 , and 120 communicate with one another via network 108 .
- Settings synchronization modules 112 , 116 , and 120 communicate changes to the application settings 114 , 118 , and 122 to one another, so that the roamed application settings on the computing devices 102 , 104 , and 106 are the same.
- FIG. 2 illustrates an example computing device 200 implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments.
- Computing device 200 can be, for example, a computing device 102 , 104 , or 106 of FIG. 1 .
- Computing device 200 includes a settings synchronization module 202 that includes a provider module 204 , a synchronization endpoint module 206 , and a synchronization communication module 208 .
- Computing device 200 also includes an application 210 , one or more application settings 212 , configuration information 214 , and a controller module 216 .
- Computing device 200 also optionally includes a user interface (UI) module 218 .
- UI user interface
- Settings synchronization module 202 can be, for example, a settings synchronization module 112 , 116 , or 120 of FIG. 1
- application settings 212 can be, for example, application settings 114 , 118 , or 122 of FIG. 1 .
- computing device 200 various components or modules are illustrated. Although illustrated as individual components or modules, the functionality or data of multiple ones of these components or modules can alternatively be combined into a single component or module. Similarly, the functionality or data of one or more of these components or modules can alternatively be separated into multiple components or modules.
- Computing device 200 includes an application 210 installed thereon. Although a single application 210 is illustrated in FIG. 2 , it is to be appreciated that multiple applications can be installed on computing device 200 .
- Application 210 has one or more application settings 212 .
- Application settings 212 that are roamed are stored in one or more particular settings locations known to provider module 204 as discussed in more detail below.
- Application settings 212 can be stored in a variety of different types of settings locations.
- a settings location can be a file, a folder or directory, a registration store (e.g., an operating system registry), and so forth.
- Application 210 reads its application settings from these one or more settings locations, and can also add new application settings to and/or change application settings in these one or more settings locations.
- Application settings 212 are configuration information or data that is used by application 210 when running.
- the particular types of settings that are stored can vary based on the application, and can include, for example, lists of favorite items (e.g., web sites), display formatting options, default fonts, dictionaries for spell-checking, drafts of user-entered data (e.g., a blog entry, an email message, etc.), and so forth.
- Computing device 200 includes configuration information 214 stored in one or more configuration locations.
- Configuration information 214 includes information provided by application 210 to register itself for roaming application settings, and also to store user interface (UI) elements such as a name, an icon, and a description that are obtained to display in a UI as discussed in more detail below.
- Configuration information 214 includes, for example, a name of application 210 , an icon to be displayed as representative of application 210 , a description of application 210 , information identifying a particular provider that application 210 desires to use, and so forth.
- configuration information 214 When application 210 is installed on computing device 200 , the appropriate configuration information for application 210 is stored as configuration information 214 .
- This configuration information for application 210 can be stored by application 210 itself or alternatively by another component or module (e.g., an installer application).
- application 210 can identify a resource (such as a localized resource DLL (dynamic link library)). This resource can be accessed by another component or module (e.g., an installer application) to obtain the configuration information for application 210 .
- DLL dynamic link library
- configuration information 214 includes an identifier of a provider module 204 .
- the provider module 204 (also referred to as simply a provider) monitors application settings 212 for changes, and also stores as application settings 212 changes to application settings that are received from other computing devices.
- the identified provider module 204 is the provider module 204 that application 210 desires to use.
- configuration information 214 need not include an identifier of a provider module 204 .
- a single provider module 204 is included in computing device 200 .
- no identifier of provider module 204 need be included in configuration information 214 as there is only one provider module 204 .
- a default provider module 204 can be included in computing device 200 . In such embodiments, if no identifier of a provider module 204 is included in configuration information 214 , then the default provider module 204 is used as the provider module 204 for application 210 .
- Computing device 200 can include one or more provider modules 204 .
- Application 210 has an associated provider module 204 (e.g., the provider module 204 identified in configuration information 214 , a default provider module 204 , etc.).
- the provider module 204 associated with application 210 is aware of the various settings locations where application settings 212 for application 210 are stored.
- a provider module 204 can be an application-specific provider module.
- An application-specific provider module is configured with or otherwise has knowledge of the various settings locations where application settings 212 for application 210 are stored.
- Different applications can store application settings in different settings locations and/or in different manners, and the application-specific provider module associated with each such different application is configured with or otherwise has knowledge of the settings locations and/or manners in which the application settings are stored for the associated application.
- a generic provider module can also be included on each device and can be used for multiple different applications.
- the generic provider module accesses one or more particular settings locations (e.g., one or more keys of an operating system registration store, one or more directories or folders, etc.) for application settings 212 . Accordingly, if application 210 stores application settings 212 in those one or more particular settings locations, the generic provider module roams those application settings 212 .
- Controller module 216 manages loading and running of provider module 204 . During operation, controller module 216 identifies the provider module 204 desired by application 210 based on configuration information 214 . If the provider module 204 desired by application 210 is not already running, controller module 216 loads and runs the provider module 204 desired by application 210 .
- Controller module 216 can load and run the provider module 204 desired by application 210 in response to a variety of different events.
- controller module 216 loads and runs provider module 204 when computing device 200 is logged into a service or is otherwise in communication with another computing device allowing roaming of application settings.
- controller module 216 can load and run provider module 204 when computing device 200 logs into a separate service via a network (e.g., a synchronization service logged into via network 108 of FIG. 1 ), when a synchronization connection is established with another computing device (e.g., synchronization communication module 208 is communicating with a synchronization communication module of another computing device), and so forth.
- controller module 216 loads and runs provider module 204 in response to other events.
- provider module 204 can be loaded and run in response to application 210 being loaded and run.
- provider module 204 alternatively can be loaded and run whenever computing device 200 is powered on and running (regardless of whether application 210 is running at the time), whenever computing device 200 is in communication with a network (e.g., network 108 of FIG. 1 ), and so forth.
- particular applications and/or particular application settings can be selected for roaming across multiple computing devices. This selection can be performed by a variety of different entities, such as by a user of computing device 200 , by an administrator of computing device 200 or service that computing device 200 accesses (e.g., a synchronization service), by another component or module of computing device 200 or another device, and so forth.
- This selection can be performed by a variety of different entities, such as by a user of computing device 200 , by an administrator of computing device 200 or service that computing device 200 accesses (e.g., a synchronization service), by another component or module of computing device 200 or another device, and so forth.
- a user of computing device 200 can select particular applications and/or particular application settings via user interface module 218 .
- User interface module 218 displays or otherwise presents to the user of computing device 200 a representation of one or more applications that can be run on computing device 200 . These one or more applications are identified, for example, from the information included in configuration information 214 .
- User interface module 218 allows the user of computing device 200 to select particular ones of the applications that can be run on computing device 200 . These selected applications are the applications for which application settings are roamed. An indication of which applications have their application settings roamed is maintained in configuration information 214 .
- user interface module 218 can display or otherwise present to the user of computing device 200 a representation of different types of application settings that are to be roamed.
- a particular application may have multiple types of settings stored in application settings 212 , such as a list of favorite items, display formatting options, and a dictionary for spell-checking.
- a user can select, via user interface module 218 , to roam all of these application settings or only particular types of these application settings. For example, the user could select to roam the list of favorite items and the dictionary for spell-checking, but not roam the display formatting options.
- An indication of which application settings are roamed is maintained in configuration information 214 .
- controller module 216 The particular applications and/or application settings selected for roaming are identified to controller module 216 .
- controller module 216 loads and runs the provider module 204 associated with the application.
- This provider module 204 associated with the application is identified in configuration information 214 as discussed above.
- the provider module 204 then works with synchronization endpoint module 206 and synchronization communication module 208 to roam the selected types of application settings for the associated selected application, as discussed in more detail below.
- Table I below illustrates example configuration information 214 . It is to be appreciated that the information included in Table I is an example of configuration information 214 , and that alternatively additional information can be included in configuration information 214 and/or some information listed in Table I can be excluded from configuration information 214 .
- CLSID TABLE I Name/Subkey Data/Description Provider Provider
- This is the class ID identifying the provider that the application desires to use.
- Icon Points to the icon in the resource file provided by the application. This is used by the UI module to display the application icon in the UI.
- This online service can be, for example, a synchronization service that assists with roaming of the application settings.
- This online service can be, for example, a synchronization service that assists with roaming of the application settings.
- This online service can be, for example, a synchronization service that assists with roaming of the application settings.
- This is used by the controller module to identify additional locations where application settings are stored. Suite Name of the Subkey under ⁇ suites that corresponds to the suite the application is part of. This can be used by the UI module to display an indication of the suite that the application is part of, and/or by the controller module to identify additional locations where application settings are stored.
- the user of computing device 200 can identify one or more other computing devices with which application settings are roamed.
- User interface module 218 can allow a user to select one or more other computing devices with which application settings are roamed, or alternatively this identification can be performed in other manners.
- These other computing devices with which application settings are roamed include, for example, other computing devices that are owned and/or used by the user of computing device 200 .
- a record of the computing devices across which application settings are roamed can be maintained at computing device 200 (e.g., by provider module 204 or synchronization communication module 208 ), or alternatively can be maintained at a remote service (such as a synchronization service).
- controller module 216 communicates with a remote service, such as a synchronization service, to identify possible other computing devices with which application settings can be roamed.
- This service is accessed, for example, via network 108 of FIG. 1 .
- These possible other computing devices can be identified in different manners, such as by including computing devices that the user selects to register with the service for roaming, computing devices from which the user logs into the service, computing devices from which the user logs into the service using the same user credentials (such as id and password), and so forth.
- the service maintains a record of these possible other computing devices, and this record can be accessed by controller module 216 .
- User interface module 218 obtains this record from controller module 216 , and uses the record to display or otherwise present to the user of computing device 200 a list of other computing devices from which the user can select one or more computing devices with which application settings are roamed.
- the one or more other computing devices with which application settings are roamed can be identified in different manners.
- application settings can be roamed across all computing devices from which a user logs into a remote service (such as a synchronization service).
- a remote service such as a synchronization service
- a user can specify via a user interface presented by the remote service when the user is logged into the remote service with a particular computing device, whether application settings are to be roamed with that particular computing device.
- provider module 204 When provider module 204 is loaded, provider module 204 obtains the roamed application settings 212 . These roamed application settings 212 are the application settings 212 that have been selected for roaming. Provider module 204 thus has knowledge of the current application settings 212 for application 210 (also referred to as the application settings state for application 210 ).
- synchronization module 202 includes a synchronization endpoint module 206 (also referred to as a feedsync endpoint with storage (FEWS)) and a synchronization communication module 208 (also referred to as a mesh operating environment (MOE)).
- Synchronization communication module 208 refers in part to the underlying synchronization platform being used to communicate application settings among the various computing devices across which the application settings are being roamed.
- Synchronization communication module 208 communicates with the synchronization communication modules on other computing devices across which application settings are roamed.
- changes to application settings on one computing device that are being roamed are identified, communicated to the other computing device, and updated in the application settings location of that other device. The application on this other device obtains and uses these application settings.
- changes to application settings on one device are communicated to one or more other devices so that the applications running on the devices have the same application settings.
- Synchronization endpoint module 206 includes an endpoint control module 222 and endpoint store 224 that maintains a history of changes to roamed application settings 212 on computing device 200 . For each change to a roamed application setting, an indication of the change that was made (e.g., the particular value or values that were added, deleted, or updated), as well as an identifier of the computing device that initiated the change and a timestamp of when the change was made on the computing device that initiated the change, is recorded in endpoint store 224 .
- a change to an application setting can be an incoming change or an outgoing change. Whether a change is an incoming change or an outgoing change is dependent on whether the change was initiated at computing device 200 or another computing device.
- a change being initiated at a particular device refers to the computing device running the application 210 via which the change was made (regardless of whether the change was made in response to a user request to change the application setting, or was made automatically by the application 210 itself).
- An incoming change refers to a change in an application setting that is initiated at and received from another computing device.
- An outgoing change refers to a change in an application setting initiated on computing device 200 .
- Incoming changes are received from the other computing device via synchronization communication module 208 and applied to application settings 212 by provider module 204 .
- Outgoing changes are provided to synchronization communication module 208 and communicated by module 208 to the other devices (where they are treated as incoming changes).
- Provider module 204 monitors application settings 212 and identifies when a change to a roamed application setting 212 is made. This identification can be performed in different manners, such as obtaining (at regular or irregular intervals) the current state of application settings 212 and determining whether any application settings have change since the last time the current state of application settings 212 was obtained. Alternatively, this identification can be performed in different manners, such as application 210 or another component or module notifying provider module 204 of when a change to a roamed application setting 212 has been made. Regardless of how identified, a timestamp identifying when the change to the application setting 212 was made on computing device 200 is also identified by provider module 204 . This timestamp can be identified in different manners, such as being a timestamp on a file in which application settings 212 are stored, a timestamp recorded by application 210 when the change is made, and so forth.
- provider module 204 identifies the change and adds an indication of the change to endpoint store 224 of synchronization endpoint module 206 .
- Endpoint store 224 maintains a record of this change, along with an identifier of computing device 200 (as the device at which the application setting change is initiated) and the timestamp.
- provider module 204 converts the format of the application setting used in application settings 212 to the format of the application setting used in endpoint store 224 .
- provider module 204 can obtain the application setting from a particular portion of a file or a particular operating system registration store, and include that application setting in endpoint store 224 .
- Synchronization communication module 208 includes a communication (comm) control module 226 and a communication store 228 that maintains a history of application setting changes that have been communicated to, or received from, one or more other computing devices. Similar to synchronization endpoint module 206 , for each application setting change an indication of the change that was made (e.g., the particular value or values that were added, deleted, or updated), as well as a timestamp of when the change was made on the computing device making the change and an identifier of the computing device making the change is recorded in communication store 228 .
- an indication of the change that was made e.g., the particular value or values that were added, deleted, or updated
- Provider module 204 invokes a merge process of endpoint control module 222 to merge the application settings included in endpoint store 224 and communication store 228 .
- Provider module 204 can invoke the merge process when a change to application settings 212 is identified and added to synchronization endpoint module 206 , or alternatively at other times (e.g., at regular or irregular intervals).
- the merge process determines the differences between application setting changes recorded in endpoint store 224 and application setting changes recorded in communication store 228 .
- An application setting change newly identified by provider module 204 and included in endpoint store 224 is not yet included in communication store 228 .
- the merge process identifies that the application setting change newly added to endpoint store 224 does not exist in communication store 228 , and adds the application setting change to communication store 228 . It should be noted that since the merge process of endpoint control module 222 is adding the application setting change from endpoint store 224 to communication store 228 , application settings 212 need not be updated because the change is already reflected in application settings 212 .
- Communication control module 226 of synchronization communication module 208 communicates the application setting change that was recently added to communication store 228 to one or more other computing devices with which the application settings are roamed.
- Communication control module 226 can communicate the application setting change to the one or more other computing devices in a variety of different manners, such as directly to the other devices, via a network (e.g., network 108 of FIG. 1 ), via a synchronization service (e.g., which stores the application setting change until the other computing devices access the synchronization service), and so forth. Accordingly, the outgoing change is communicated to the other computing devices with which the application settings are roamed.
- a network e.g., network 108 of FIG. 1
- a synchronization service e.g., which stores the application setting change until the other computing devices access the synchronization service
- Communication control module 226 also receives communications from one or more other computing devices with which the application settings are being roamed, these received communications identifying application setting changes made on those other computing devices. For such incoming changes, provider module 204 also invokes the merge process of control module 222 . Provider module 204 can invoke the merge process at a variety of different times, such as in response to being notified by communication control module 226 that an incoming change has been received by communication control module 226 , at regular or irregular intervals, and so forth.
- the merge process determines the differences between application setting changes recorded in endpoint store 224 and application setting changes recorded in communication store 228 . Accordingly, an incoming change received by communication control module 226 but not yet included in endpoint store 224 of synchronization endpoint module 206 is identified by the merge process. Such an incoming change identified by the merge process is added to both endpoint store 224 and application settings 212 by provider module 204 . Thus, the change to the application settings made on the other device is also made on computing device 200 . In one or more embodiments the change to application settings 212 includes a timestamp of when the application setting change was made on the computing device that initiated the change, although alternatively other timestamps can be used.
- provider module 204 converts the format of the application setting used in synchronization endpoint module 206 to the format of the application setting used in application settings 212 .
- the merge process as discussed above determines differences between application setting changes recorded in endpoint store 224 and application setting changes recorded in communication store 228 .
- differences can be determined in different manners.
- the differences are determined by comparing the application setting changes recorded in endpoint store 224 to the application setting changes recorded in communication store 228 and identifying the differences between the two.
- the differences are identified by comparing a current state of one of the stores 224 or 228 to a previous state of that same store, and identifying any differences in the state as the differences between the two. For example, new application setting changes included in a current state of endpoint store 224 that were not in the previous state of endpoint store 224 are assumed to have not yet been added to communication store 228 . By way of another example, new application setting changes included in a current state of communication store 228 that were not in the previous state of communication store 228 are assumed to have not yet been added to endpoint store 224 .
- conflicts regarding application setting changes can occur.
- Conflicts regarding application setting changes occur when two or more different changes are made to the same application setting at approximately the same time. For example, conflicts can arise when two computing devices change the same application setting to different values at approximately the same time, when one computing device changes an application setting at approximately the same time another computing device deletes the application setting, and so forth.
- endpoint control module 222 can identify such conflicts.
- a conflict is identified by the endpoint control module 222 when an incoming change and an outgoing change are to the same application setting, as well as when multiple incoming changes are to the same application setting.
- Endpoint control module 222 automatically resolves conflicts by applying a particular policy to determine which change to the application setting that is to be applied (in other words, to determine which setting wins).
- information regarding the changes can be provided to another component or module (such as provider module 204 ), which in turn can resolve conflicts by applying a particular policy to determine which change to the application setting that is to be applied.
- policies can be used to determine which change to the application setting is to be applied. For example, one such policy is that the change having the most recent timestamp is the change to the application setting that is applied. By way of another example, another policy is that the user is prompted to select one of the changes to keep, and the user-selected change is the change to the application setting that is applied.
- provider module 204 can also use synchronization endpoint module 206 to distinguish between an application setting change that is a deletion of an application setting initiated at computing device 200 and an application setting change that is an addition of an application setting initiated at another computing device. As the history of application setting changes is maintained in synchronization endpoint module 206 , distinctions between such additions and deletions can be readily made by provider module 204 .
- Synchronization communication module 208 can send a set of multiple application settings to another computing device to have the multiple application settings on the other computing device replaced with that set. Similarly, synchronization communication module 208 can receive a set of multiple application settings from another computing device, and provider module 204 can replace application settings 212 with the received set of multiple application settings.
- the set of multiple application settings can be identified in different manners, such as communication control module 226 receiving a communication that is identified (e.g., by a particular flag value or command in the communication) as having a set of multiple application settings.
- Communication control module 226 maintains the received set of multiple application settings separate from communication store 228 , and provider module 204 obtains the application settings 212 from communication control module 226 .
- provider module 204 obtains the received set of multiple application settings from communication control module 226 and replaces application settings 212 with the set of multiple application settings.
- provider module 204 can provide a set of application settings to communication control module 226 to be sent to the other computing devices across which application settings are roamed. Rather than invoking the merge process of endpoint control module 222 , provider module 204 sends the set of application settings to communication control module 226 .
- a user request to retrieve a set of multiple application settings can be received by provider module 204 (e.g., via UI module 218 ).
- a request can be received for different reasons, such as a user desire to replace settings he or she believes have become corrupt, to configure a new computing device with application settings from another computing device, and so forth.
- provider module 204 sends (via communication control module 226 ) a request for the set of multiple application settings to the other computing devices across which the application settings are roamed.
- the set of multiple application settings is subsequently received from another computing device by communication control module 226 and provided to provider module 204 .
- Provider module 204 then replaces the corresponding settings in application settings 212 with the received set of application settings.
- FIG. 3 is a flowchart illustrating an example process 300 for configuring a computing device and roaming application settings in accordance with one or more embodiments.
- Process 300 is carried out by a computing device, such as computing device 200 of FIG. 2 , and can be implemented in software, firmware, hardware, or combinations thereof.
- Process 300 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.
- Process 300 is an example process for configuring a computing device and roaming application settings; additional discussions of configuring a computing device and roaming application settings are included herein with reference to different figures.
- one or more applications each roaming one or more application settings are identified (act 302 ). These one or more applications can be identified by a controller based on configuration information for applications installed on the computing device as discussed above.
- a provider module associated with each application identified in act 302 is identified (act 304 ).
- This provider module can be an application-specific provider module or a generic provider module as discussed above.
- Each provider module identified in act 304 is loaded and run (act 306 ).
- the provider modules can be loaded and run at different times or in response to different events as discussed above.
- Each provider module run in act 306 retrieves the one or more application settings roamed for the application associated with the provider module (act 308 ), and roams these one or more application settings across the multiple computing devices (act 310 ). This roaming includes sending and/or receiving changes to application settings, as well as sending and/or receiving sets of multiple application settings, as discussed above.
- FIG. 4 is a flowchart illustrating an example process 400 for a provider when roaming application settings in accordance with one or more embodiments.
- Process 400 is carried out by a computing device, such as computing device 200 of FIG. 2 , and can be implemented in software, firmware, hardware, or combinations thereof.
- Process 400 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.
- Process 400 is an example process for a provider when roaming application settings; additional discussions of a provider when roaming application settings are included herein with reference to different figures.
- current application settings are retrieved (act 402 ). These current application settings are the application settings that are being roamed, as discussed above.
- Changes in the application settings are identified (act 404 ).
- the application setting changes can be identified in a variety of different manners, as discussed above.
- a history of application setting changes maintained in an endpoint store is updated to include the application setting changes that are identified in act 404 .
- the endpoint store is included in a synchronization endpoint module as discussed above.
- a merge process is also invoked to add the application setting changes identified in act 404 to a communication store for communication to the other computing devices across which application settings are roamed (act 408 ).
- the communication store is included in a synchronization communication module as discussed above.
- the application settings are updated to reflect any application setting changes obtained from the communication store (act 410 ).
- Such application setting changes are application setting changes received from other computing devices across which application settings are roamed, and are incorporated into the application settings of the computing device as discussed above.
- FIG. 5 is a flowchart illustrating an example process 500 for roaming application settings across multiple computing devices in accordance with one or more embodiments.
- Process 500 is carried out by a computing device, such as computing device 200 of FIG. 2 , and can be implemented in software, firmware, hardware, or combinations thereof.
- Process 500 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.
- Process 500 is an example process for roaming application settings across multiple computing devices; additional discussions of roaming application settings across multiple computing devices are included herein with reference to different figures.
- process 500 application setting changes in the synchronization endpoint module and the synchronization communication module are compared (act 502 ) and a determination made as to whether any of the application settings changes in the two modules are different (act 504 ).
- the application settings changes in the two modules are different if one of the modules includes one or more application setting changes that is not included in the other module. This comparison can be performed in response to different events as discussed above. This comparison is also repeated at various intervals, as discussed above, until one or more application setting changes in the two modules are different.
- an application setting change is selected (act 506 ).
- This application setting change is an application setting change difference that is determined to exist in act 504 (e.g., an application setting change that is included in one of the two modules but not the other). If there are multiple application setting changes that are different, then one such application setting change is selected.
- the one application setting change can be selected in different manners, such as based on most recent or oldest timestamp, according to some other rules or criteria, randomly, and so forth.
- the selected application setting change is added to the synchronization communication module of the computing device (act 518 ) and communicated to the one or more other computing devices across which application settings are roamed (act 520 ).
- a check is then made as to whether there are additional application setting changes that were determined to exist in act 504 but have not yet been selected in act 506 (act 516 ), and process 500 returns to act 506 or act 502 based on the result of this check as discussed above.
- the roaming application settings across multiple computing devices discussed herein supports a variety of different usage scenarios.
- One such usage scenario is that a user can easily keep the same application settings on multiple different ones of his or her computing devices. If the user desires to change a particular setting, the user can make that change on one of his or her devices and have that change automatically applied to all of his or her other computing devices.
- Another usage scenario is that a user can obtain a new computing device and easily have the application settings on that new computing device changed to be the same as the application settings on his or her other computing devices. The user can simply indicate that the new computing device is one of the devices across which application settings are to be roamed, and the application settings from his or her other devices will automatically be applied on the new computing device.
- Another usage scenario is that a user can effectively backup his or her application settings and subsequently have them applied to one or more computing devices as he or she desires. As the application settings are roamed across multiple devices, if the application settings are lost for some reason on a particular computing device, the settings can be readily obtained from another computing device.
- Another usage scenario is that a user can start an activity on one computing device and easily finish the activity on a different computing device. For example, a user can start creating a blog entry or email message on a first device and that blog entry or email message can be a setting that is roamed across his or her computing devices. The user can then resume working on the blog entry or email message on a second device as the blog entry or email message has been roamed from the first device to the second device.
- FIG. 6 illustrates an example computing device that can be configured to implement the roaming application settings across multiple computing devices in accordance with one or more embodiments.
- Computing device 600 can be, for example, a computing device 200 of FIG. 2 , or one of computing devices 102 , 104 , or 106 of FIG. 1 .
- Computing device 600 includes one or more processors or processing units 602 , one or more computer readable media 604 which can include one or more memory and/or storage components 606 , one or more input/output (I/O) devices 608 , and a bus 610 that allows the various components and devices to communicate with one another.
- Computer readable media 604 and/or one or more I/O devices 608 can be included as part of, or alternatively may be coupled to, computing device 600 .
- Bus 610 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, a processor or local bus, and so forth using a variety of different bus architectures.
- Bus 610 can include wired and/or wireless buses.
- Memory/storage component 606 represents one or more computer storage media.
- Component 606 can include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth).
- Component 606 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so forth).
- the techniques discussed herein can be implemented in software, with instructions being executed by one or more processing units 602 . It is to be appreciated that different instructions can be stored in different components of computing device 600 , such as in a processing unit 602 , in various cache memories of a processing unit 602 , in other cache memories of device 600 (not shown), on other computer readable media, and so forth. Additionally, it is to be appreciated that the location where instructions are stored in computing device 600 can change over time.
- One or more input/output devices 608 allow a user to enter commands and information to computing device 600 , and also allows information to be presented to the user and/or other components or devices.
- input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, and so forth.
- output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, and so forth.
- Computer readable media can be any available medium or media that can be accessed by a computing device.
- Computer readable media may comprise “computer storage media” and “communications media.”
- Computer storage media include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data.
- Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
- Communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism. Communication media also include any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
- any of the functions or techniques described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations.
- the terms “module” and “component” as used herein generally represent software, firmware, hardware, or combinations thereof.
- the module or component represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs).
- the program code can be stored in one or more computer readable memory devices, further description of which may be found with reference to FIG. 6 .
- the features of the roaming application settings techniques described herein are platform-independent, meaning that the techniques can be implemented on a variety of commercial computing platforms having a variety of processors.
Abstract
Application settings are roamed across multiple computing devices. Provider modules on the computing devices are run to retrieve application settings to be roamed and to roam those application settings across the multiple computing devices. Application setting changes initiated on a particular computing device are added to a history of application setting changes on the particular computing device, and also added to synchronization communication module for communication to one or more additional computing devices of the multiple computing devices. Application setting changes initiated by one of the one or more additional computing devices are received by the particular computing device and added to a history of application setting changes on the particular computing device, and are also incorporated into the application settings on the particular computing device.
Description
- This application is a continuation of and claims priority to U.S. patent application Ser. No. 14/097,146 filed Dec. 4, 2013, which claims priority to U.S. patent application Ser. No. 12/725,059 filed Mar. 16, 2010, which claims priority under 35 U.S.C. §119(e) to U.S. Provisional Patent Application No. 61/297,205 filed Jan. 21, 2010. The disclosures of these applications are incorporated by reference herein in their entirety.
- Currently, many users use multiple computing devices, such as their home computer, work computer, laptop computer, and so forth. Oftentimes, users install the same applications on these devices, customizing these applications on each of the devices to their particular preferences. However, this can lead to user frustration because users are typically required to perform the same application customization on each of the multiple devices.
- This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
- In accordance with one or more aspects, a history of application setting changes on a first computing device is monitored. In response to identification of a first change to application settings on the first computing device, the first change is added to a synchronization communication module for communication to one or more additional computing devices. In response to identification of a second change to application settings on a second device of the one or more additional computing devices, the second change is added to the history of application setting changes and is also incorporated into the application settings on the first computing device.
- In accordance with one or more aspects, in a first computing device a provider module associated with an application is identified. One or more application settings of the application are stored in one or more settings locations known to the provider module. The provider module is run to retrieve one or more application settings, and to roam the one or more application settings across multiple computing devices. These multiple computing devices include both the first computing device and one or more additional computing devices.
- The same numbers are used throughout the drawings to reference like features.
-
FIG. 1 illustrates an example system implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments. -
FIG. 2 illustrates an example computing device implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments. -
FIG. 3 is a flowchart illustrating an example process for configuring a computing device and roaming application settings in accordance with one or more embodiments. -
FIG. 4 is a flowchart illustrating an example process for a provider when roaming application settings in accordance with one or more embodiments. -
FIG. 5 is a flowchart illustrating an example process for roaming application settings across multiple computing devices in accordance with one or more embodiments. -
FIG. 6 illustrates an example computing device that can be configured to implement the roaming application settings across multiple computing devices in accordance with one or more embodiments. - Roaming application settings across multiple computing devices is discussed herein. In one or more embodiments, one or more application settings for an application are roamed across multiple computing devices. When a change is made to an application setting on one of the devices, the change is roamed to the other ones of the multiple devices. Accordingly, for that particular application, the application settings being roamed on the multiple devices will be the same, and any change to such an application setting made by a user on one device is automatically identified and communicated to the other devices as well. Application settings for multiple different applications on the devices can be roamed.
-
FIG. 1 illustrates anexample system 100 implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments.System 100 includesmultiple computing devices network 108.Computing devices computing device computing device Different computing devices - Network 108 can be a variety of different networks, including the Internet, a local area network (LAN), a cellular or other telephone network, an intranet, other public and/or proprietary networks, combinations thereof, and so forth. Alternatively,
computing devices - Application settings for one or more applications can be roamed (also referred to as synchronized) across
computing devices computing devices other computing devices computing devices system 100, it is to be appreciated that application settings can be roamed across two computing device, or alternatively across four or more computing devices. The particular computing devices across which application settings are to be roamed, as well as the particular applications settings that are to be roamed, can be identified in different manners as discussed in more detail below. - Each
computing device Computing device 102 includessettings synchronization module 112 andapplication settings 114,computing device 104 includessettings synchronization module 116 andapplication settings 118, andcomputing device 106 includessettings synchronization module 120 andapplication settings 122.Settings synchronization modules network 108.Settings synchronization modules application settings computing devices -
FIG. 2 illustrates anexample computing device 200 implementing the roaming application settings across multiple computing devices in accordance with one or more embodiments.Computing device 200 can be, for example, acomputing device FIG. 1 .Computing device 200 includes asettings synchronization module 202 that includes aprovider module 204, asynchronization endpoint module 206, and asynchronization communication module 208.Computing device 200 also includes anapplication 210, one ormore application settings 212,configuration information 214, and acontroller module 216.Computing device 200 also optionally includes a user interface (UI)module 218.Settings synchronization module 202 can be, for example, asettings synchronization module FIG. 1 , andapplication settings 212 can be, for example,application settings FIG. 1 . - It should be noted that in
computing device 200 various components or modules are illustrated. Although illustrated as individual components or modules, the functionality or data of multiple ones of these components or modules can alternatively be combined into a single component or module. Similarly, the functionality or data of one or more of these components or modules can alternatively be separated into multiple components or modules. -
Computing device 200 includes anapplication 210 installed thereon. Although asingle application 210 is illustrated inFIG. 2 , it is to be appreciated that multiple applications can be installed oncomputing device 200.Application 210 has one ormore application settings 212.Application settings 212 that are roamed are stored in one or more particular settings locations known toprovider module 204 as discussed in more detail below.Application settings 212 can be stored in a variety of different types of settings locations. For example, a settings location can be a file, a folder or directory, a registration store (e.g., an operating system registry), and so forth.Application 210 reads its application settings from these one or more settings locations, and can also add new application settings to and/or change application settings in these one or more settings locations. - A variety of different types of data or values can be stored as
application settings 212.Application settings 212 are configuration information or data that is used byapplication 210 when running. The particular types of settings that are stored can vary based on the application, and can include, for example, lists of favorite items (e.g., web sites), display formatting options, default fonts, dictionaries for spell-checking, drafts of user-entered data (e.g., a blog entry, an email message, etc.), and so forth. -
Computing device 200 includesconfiguration information 214 stored in one or more configuration locations.Configuration information 214 includes information provided byapplication 210 to register itself for roaming application settings, and also to store user interface (UI) elements such as a name, an icon, and a description that are obtained to display in a UI as discussed in more detail below.Configuration information 214 includes, for example, a name ofapplication 210, an icon to be displayed as representative ofapplication 210, a description ofapplication 210, information identifying a particular provider thatapplication 210 desires to use, and so forth. - When
application 210 is installed oncomputing device 200, the appropriate configuration information forapplication 210 is stored asconfiguration information 214. This configuration information forapplication 210 can be stored byapplication 210 itself or alternatively by another component or module (e.g., an installer application). Alternatively,application 210 can identify a resource (such as a localized resource DLL (dynamic link library)). This resource can be accessed by another component or module (e.g., an installer application) to obtain the configuration information forapplication 210. - In one or more embodiments,
configuration information 214 includes an identifier of aprovider module 204. As discussed in more detail below, the provider module 204 (also referred to as simply a provider) monitorsapplication settings 212 for changes, and also stores asapplication settings 212 changes to application settings that are received from other computing devices. The identifiedprovider module 204 is theprovider module 204 thatapplication 210 desires to use. - Alternatively,
configuration information 214 need not include an identifier of aprovider module 204. For example, in one or more embodiments asingle provider module 204 is included incomputing device 200. In such embodiments, no identifier ofprovider module 204 need be included inconfiguration information 214 as there is only oneprovider module 204. By way of another example, in one or more embodiments adefault provider module 204 can be included incomputing device 200. In such embodiments, if no identifier of aprovider module 204 is included inconfiguration information 214, then thedefault provider module 204 is used as theprovider module 204 forapplication 210. -
Computing device 200 can include one ormore provider modules 204.Application 210 has an associated provider module 204 (e.g., theprovider module 204 identified inconfiguration information 214, adefault provider module 204, etc.). Theprovider module 204 associated withapplication 210 is aware of the various settings locations whereapplication settings 212 forapplication 210 are stored. Aprovider module 204 can be an application-specific provider module. An application-specific provider module is configured with or otherwise has knowledge of the various settings locations whereapplication settings 212 forapplication 210 are stored. Different applications can store application settings in different settings locations and/or in different manners, and the application-specific provider module associated with each such different application is configured with or otherwise has knowledge of the settings locations and/or manners in which the application settings are stored for the associated application. - A generic provider module can also be included on each device and can be used for multiple different applications. The generic provider module accesses one or more particular settings locations (e.g., one or more keys of an operating system registration store, one or more directories or folders, etc.) for
application settings 212. Accordingly, ifapplication 210stores application settings 212 in those one or more particular settings locations, the generic provider module roams thoseapplication settings 212. -
Controller module 216 manages loading and running ofprovider module 204. During operation,controller module 216 identifies theprovider module 204 desired byapplication 210 based onconfiguration information 214. If theprovider module 204 desired byapplication 210 is not already running,controller module 216 loads and runs theprovider module 204 desired byapplication 210. -
Controller module 216 can load and run theprovider module 204 desired byapplication 210 in response to a variety of different events. In one or more embodiments,controller module 216 loads and runsprovider module 204 when computingdevice 200 is logged into a service or is otherwise in communication with another computing device allowing roaming of application settings. For example,controller module 216 can load andrun provider module 204 when computingdevice 200 logs into a separate service via a network (e.g., a synchronization service logged into vianetwork 108 ofFIG. 1 ), when a synchronization connection is established with another computing device (e.g.,synchronization communication module 208 is communicating with a synchronization communication module of another computing device), and so forth. - In other embodiments,
controller module 216 loads and runsprovider module 204 in response to other events. For example,provider module 204 can be loaded and run in response toapplication 210 being loaded and run. By way of another example,provider module 204 alternatively can be loaded and run whenever computingdevice 200 is powered on and running (regardless of whetherapplication 210 is running at the time), whenever computingdevice 200 is in communication with a network (e.g.,network 108 ofFIG. 1 ), and so forth. - In one or more embodiments, particular applications and/or particular application settings can be selected for roaming across multiple computing devices. This selection can be performed by a variety of different entities, such as by a user of
computing device 200, by an administrator ofcomputing device 200 or service thatcomputing device 200 accesses (e.g., a synchronization service), by another component or module ofcomputing device 200 or another device, and so forth. - In one or more embodiments, a user of
computing device 200 can select particular applications and/or particular application settings viauser interface module 218.User interface module 218 displays or otherwise presents to the user of computing device 200 a representation of one or more applications that can be run oncomputing device 200. These one or more applications are identified, for example, from the information included inconfiguration information 214.User interface module 218 allows the user ofcomputing device 200 to select particular ones of the applications that can be run oncomputing device 200. These selected applications are the applications for which application settings are roamed. An indication of which applications have their application settings roamed is maintained inconfiguration information 214. - Similarly,
user interface module 218 can display or otherwise present to the user of computing device 200 a representation of different types of application settings that are to be roamed. For example, a particular application may have multiple types of settings stored inapplication settings 212, such as a list of favorite items, display formatting options, and a dictionary for spell-checking. A user can select, viauser interface module 218, to roam all of these application settings or only particular types of these application settings. For example, the user could select to roam the list of favorite items and the dictionary for spell-checking, but not roam the display formatting options. An indication of which application settings are roamed is maintained inconfiguration information 214. - The particular applications and/or application settings selected for roaming are identified to
controller module 216. For each application for which at least one type of application setting is roamed,controller module 216 loads and runs theprovider module 204 associated with the application. Thisprovider module 204 associated with the application is identified inconfiguration information 214 as discussed above. Theprovider module 204 then works withsynchronization endpoint module 206 andsynchronization communication module 208 to roam the selected types of application settings for the associated selected application, as discussed in more detail below. - Table I below illustrates
example configuration information 214. It is to be appreciated that the information included in Table I is an example ofconfiguration information 214, and that alternatively additional information can be included inconfiguration information 214 and/or some information listed in Table I can be excluded fromconfiguration information 214. -
TABLE I Name/Subkey Data/Description Provider Provider CLSID. This is the class ID identifying the provider that the application desires to use. Display Name Points to the display name in a resource file provided by the application. This is used by the UI module to display the application name in the UI. This can be a string. Description Points to the description in the resource file provided by the application. This is used by the UI module to display the application description in the UI. Icon Points to the icon in the resource file provided by the application. This is used by the UI module to display the application icon in the UI. LiveFolder If this key is present and valid, this means that the application has some settings in files in a folder for an online service (e.g., a folder located at the following path: %APPDATA%\Microsoft\Windows Live\Roaming\AppNAME). This online service can be, for example, a synchronization service that assists with roaming of the application settings. This is used by the controller module to identify additional locations where application settings are stored. Suite Name of the Subkey under\suites that corresponds to the suite the application is part of. This can be used by the UI module to display an indication of the suite that the application is part of, and/or by the controller module to identify additional locations where application settings are stored. - In one or more embodiments, the user of
computing device 200 can identify one or more other computing devices with which application settings are roamed.User interface module 218 can allow a user to select one or more other computing devices with which application settings are roamed, or alternatively this identification can be performed in other manners. These other computing devices with which application settings are roamed include, for example, other computing devices that are owned and/or used by the user ofcomputing device 200. A record of the computing devices across which application settings are roamed can be maintained at computing device 200 (e.g., byprovider module 204 or synchronization communication module 208), or alternatively can be maintained at a remote service (such as a synchronization service). - In one or more embodiments,
controller module 216 communicates with a remote service, such as a synchronization service, to identify possible other computing devices with which application settings can be roamed. This service is accessed, for example, vianetwork 108 ofFIG. 1 . These possible other computing devices can be identified in different manners, such as by including computing devices that the user selects to register with the service for roaming, computing devices from which the user logs into the service, computing devices from which the user logs into the service using the same user credentials (such as id and password), and so forth. The service maintains a record of these possible other computing devices, and this record can be accessed bycontroller module 216.User interface module 218 obtains this record fromcontroller module 216, and uses the record to display or otherwise present to the user of computing device 200 a list of other computing devices from which the user can select one or more computing devices with which application settings are roamed. - Alternatively, the one or more other computing devices with which application settings are roamed can be identified in different manners. For example, application settings can be roamed across all computing devices from which a user logs into a remote service (such as a synchronization service). By way of another example, a user can specify via a user interface presented by the remote service when the user is logged into the remote service with a particular computing device, whether application settings are to be roamed with that particular computing device.
- When
provider module 204 is loaded,provider module 204 obtains the roamedapplication settings 212. These roamedapplication settings 212 are theapplication settings 212 that have been selected for roaming.Provider module 204 thus has knowledge of thecurrent application settings 212 for application 210 (also referred to as the application settings state for application 210). - In addition to
provider module 204,synchronization module 202 includes a synchronization endpoint module 206 (also referred to as a feedsync endpoint with storage (FEWS)) and a synchronization communication module 208 (also referred to as a mesh operating environment (MOE)).Synchronization communication module 208 refers in part to the underlying synchronization platform being used to communicate application settings among the various computing devices across which the application settings are being roamed.Synchronization communication module 208 communicates with the synchronization communication modules on other computing devices across which application settings are roamed. Generally, changes to application settings on one computing device that are being roamed are identified, communicated to the other computing device, and updated in the application settings location of that other device. The application on this other device obtains and uses these application settings. Thus, for application settings being roamed, changes to application settings on one device are communicated to one or more other devices so that the applications running on the devices have the same application settings. -
Synchronization endpoint module 206 includes anendpoint control module 222 andendpoint store 224 that maintains a history of changes to roamedapplication settings 212 oncomputing device 200. For each change to a roamed application setting, an indication of the change that was made (e.g., the particular value or values that were added, deleted, or updated), as well as an identifier of the computing device that initiated the change and a timestamp of when the change was made on the computing device that initiated the change, is recorded inendpoint store 224. - From the perspective of
computing device 200, a change to an application setting can be an incoming change or an outgoing change. Whether a change is an incoming change or an outgoing change is dependent on whether the change was initiated atcomputing device 200 or another computing device. A change being initiated at a particular device refers to the computing device running theapplication 210 via which the change was made (regardless of whether the change was made in response to a user request to change the application setting, or was made automatically by theapplication 210 itself). An incoming change refers to a change in an application setting that is initiated at and received from another computing device. An outgoing change refers to a change in an application setting initiated oncomputing device 200. Incoming changes are received from the other computing device viasynchronization communication module 208 and applied toapplication settings 212 byprovider module 204. Outgoing changes are provided tosynchronization communication module 208 and communicated bymodule 208 to the other devices (where they are treated as incoming changes). -
Provider module 204 monitorsapplication settings 212 and identifies when a change to a roamed application setting 212 is made. This identification can be performed in different manners, such as obtaining (at regular or irregular intervals) the current state ofapplication settings 212 and determining whether any application settings have change since the last time the current state ofapplication settings 212 was obtained. Alternatively, this identification can be performed in different manners, such asapplication 210 or another component or module notifyingprovider module 204 of when a change to a roamed application setting 212 has been made. Regardless of how identified, a timestamp identifying when the change to the application setting 212 was made oncomputing device 200 is also identified byprovider module 204. This timestamp can be identified in different manners, such as being a timestamp on a file in whichapplication settings 212 are stored, a timestamp recorded byapplication 210 when the change is made, and so forth. - When a change to a roamed application setting 212 is made,
provider module 204 identifies the change and adds an indication of the change toendpoint store 224 ofsynchronization endpoint module 206.Endpoint store 224 maintains a record of this change, along with an identifier of computing device 200 (as the device at which the application setting change is initiated) and the timestamp. - It is to be appreciated that the changed application setting need not be stored in
application settings 212 in the same manner as the indication of the change is stored inendpoint store 224. Accordingly,provider module 204 converts the format of the application setting used inapplication settings 212 to the format of the application setting used inendpoint store 224. For example,provider module 204 can obtain the application setting from a particular portion of a file or a particular operating system registration store, and include that application setting inendpoint store 224. -
Synchronization communication module 208 includes a communication (comm)control module 226 and acommunication store 228 that maintains a history of application setting changes that have been communicated to, or received from, one or more other computing devices. Similar tosynchronization endpoint module 206, for each application setting change an indication of the change that was made (e.g., the particular value or values that were added, deleted, or updated), as well as a timestamp of when the change was made on the computing device making the change and an identifier of the computing device making the change is recorded incommunication store 228. -
Provider module 204 invokes a merge process ofendpoint control module 222 to merge the application settings included inendpoint store 224 andcommunication store 228.Provider module 204 can invoke the merge process when a change toapplication settings 212 is identified and added tosynchronization endpoint module 206, or alternatively at other times (e.g., at regular or irregular intervals). The merge process determines the differences between application setting changes recorded inendpoint store 224 and application setting changes recorded incommunication store 228. An application setting change newly identified byprovider module 204 and included inendpoint store 224 is not yet included incommunication store 228. The merge process identifies that the application setting change newly added toendpoint store 224 does not exist incommunication store 228, and adds the application setting change tocommunication store 228. It should be noted that since the merge process ofendpoint control module 222 is adding the application setting change fromendpoint store 224 tocommunication store 228,application settings 212 need not be updated because the change is already reflected inapplication settings 212. -
Communication control module 226 ofsynchronization communication module 208 communicates the application setting change that was recently added tocommunication store 228 to one or more other computing devices with which the application settings are roamed.Communication control module 226 can communicate the application setting change to the one or more other computing devices in a variety of different manners, such as directly to the other devices, via a network (e.g.,network 108 ofFIG. 1 ), via a synchronization service (e.g., which stores the application setting change until the other computing devices access the synchronization service), and so forth. Accordingly, the outgoing change is communicated to the other computing devices with which the application settings are roamed. -
Communication control module 226 also receives communications from one or more other computing devices with which the application settings are being roamed, these received communications identifying application setting changes made on those other computing devices. For such incoming changes,provider module 204 also invokes the merge process ofcontrol module 222.Provider module 204 can invoke the merge process at a variety of different times, such as in response to being notified bycommunication control module 226 that an incoming change has been received bycommunication control module 226, at regular or irregular intervals, and so forth. - As indicated above, the merge process determines the differences between application setting changes recorded in
endpoint store 224 and application setting changes recorded incommunication store 228. Accordingly, an incoming change received bycommunication control module 226 but not yet included inendpoint store 224 ofsynchronization endpoint module 206 is identified by the merge process. Such an incoming change identified by the merge process is added to bothendpoint store 224 andapplication settings 212 byprovider module 204. Thus, the change to the application settings made on the other device is also made oncomputing device 200. In one or more embodiments the change toapplication settings 212 includes a timestamp of when the application setting change was made on the computing device that initiated the change, although alternatively other timestamps can be used. - As discussed above, it is to be appreciated that the changed application setting need not be stored in
application settings 212 in the same manner as the indication of the change is stored inendpoint store 224. Accordingly,provider module 204 converts the format of the application setting used insynchronization endpoint module 206 to the format of the application setting used inapplication settings 212. - The merge process as discussed above determines differences between application setting changes recorded in
endpoint store 224 and application setting changes recorded incommunication store 228. Such differences can be determined in different manners. In one or more embodiments, the differences are determined by comparing the application setting changes recorded inendpoint store 224 to the application setting changes recorded incommunication store 228 and identifying the differences between the two. In other embodiments, the differences are identified by comparing a current state of one of thestores endpoint store 224 that were not in the previous state ofendpoint store 224 are assumed to have not yet been added tocommunication store 228. By way of another example, new application setting changes included in a current state ofcommunication store 228 that were not in the previous state ofcommunication store 228 are assumed to have not yet been added toendpoint store 224. - As part of the merge process, conflicts regarding application setting changes can occur. Conflicts regarding application setting changes occur when two or more different changes are made to the same application setting at approximately the same time. For example, conflicts can arise when two computing devices change the same application setting to different values at approximately the same time, when one computing device changes an application setting at approximately the same time another computing device deletes the application setting, and so forth.
- During the merge process,
endpoint control module 222 can identify such conflicts. A conflict is identified by theendpoint control module 222 when an incoming change and an outgoing change are to the same application setting, as well as when multiple incoming changes are to the same application setting.Endpoint control module 222 automatically resolves conflicts by applying a particular policy to determine which change to the application setting that is to be applied (in other words, to determine which setting wins). Alternatively, information regarding the changes can be provided to another component or module (such as provider module 204), which in turn can resolve conflicts by applying a particular policy to determine which change to the application setting that is to be applied. - A variety of different policies can be used to determine which change to the application setting is to be applied. For example, one such policy is that the change having the most recent timestamp is the change to the application setting that is applied. By way of another example, another policy is that the user is prompted to select one of the changes to keep, and the user-selected change is the change to the application setting that is applied.
- It should be noted that
provider module 204 can also usesynchronization endpoint module 206 to distinguish between an application setting change that is a deletion of an application setting initiated atcomputing device 200 and an application setting change that is an addition of an application setting initiated at another computing device. As the history of application setting changes is maintained insynchronization endpoint module 206, distinctions between such additions and deletions can be readily made byprovider module 204. - In addition to sending and/or receiving changes to application settings, sets of multiple application settings can be sent and/or received.
Synchronization communication module 208 can send a set of multiple application settings to another computing device to have the multiple application settings on the other computing device replaced with that set. Similarly,synchronization communication module 208 can receive a set of multiple application settings from another computing device, andprovider module 204 can replaceapplication settings 212 with the received set of multiple application settings. - The set of multiple application settings can be identified in different manners, such as
communication control module 226 receiving a communication that is identified (e.g., by a particular flag value or command in the communication) as having a set of multiple application settings.Communication control module 226 maintains the received set of multiple application settings separate fromcommunication store 228, andprovider module 204 obtains theapplication settings 212 fromcommunication control module 226. Thus, rather than invoking the merge process ofendpoint control module 222,provider module 204 obtains the received set of multiple application settings fromcommunication control module 226 and replacesapplication settings 212 with the set of multiple application settings. Similarly,provider module 204 can provide a set of application settings tocommunication control module 226 to be sent to the other computing devices across which application settings are roamed. Rather than invoking the merge process ofendpoint control module 222,provider module 204 sends the set of application settings tocommunication control module 226. - For example, a user request to retrieve a set of multiple application settings (e.g., all the application settings being roamed for a particular application) can be received by provider module 204 (e.g., via UI module 218). Such a request can be received for different reasons, such as a user desire to replace settings he or she believes have become corrupt, to configure a new computing device with application settings from another computing device, and so forth. In response to the user request,
provider module 204 sends (via communication control module 226) a request for the set of multiple application settings to the other computing devices across which the application settings are roamed. The set of multiple application settings is subsequently received from another computing device bycommunication control module 226 and provided toprovider module 204.Provider module 204 then replaces the corresponding settings inapplication settings 212 with the received set of application settings. -
FIG. 3 is a flowchart illustrating anexample process 300 for configuring a computing device and roaming application settings in accordance with one or more embodiments.Process 300 is carried out by a computing device, such ascomputing device 200 ofFIG. 2 , and can be implemented in software, firmware, hardware, or combinations thereof.Process 300 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.Process 300 is an example process for configuring a computing device and roaming application settings; additional discussions of configuring a computing device and roaming application settings are included herein with reference to different figures. - In
process 300, one or more applications each roaming one or more application settings are identified (act 302). These one or more applications can be identified by a controller based on configuration information for applications installed on the computing device as discussed above. - A provider module associated with each application identified in
act 302 is identified (act 304). This provider module can be an application-specific provider module or a generic provider module as discussed above. - Each provider module identified in
act 304 is loaded and run (act 306). The provider modules can be loaded and run at different times or in response to different events as discussed above. - Each provider module run in
act 306 retrieves the one or more application settings roamed for the application associated with the provider module (act 308), and roams these one or more application settings across the multiple computing devices (act 310). This roaming includes sending and/or receiving changes to application settings, as well as sending and/or receiving sets of multiple application settings, as discussed above. -
FIG. 4 is a flowchart illustrating anexample process 400 for a provider when roaming application settings in accordance with one or more embodiments.Process 400 is carried out by a computing device, such ascomputing device 200 ofFIG. 2 , and can be implemented in software, firmware, hardware, or combinations thereof.Process 400 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.Process 400 is an example process for a provider when roaming application settings; additional discussions of a provider when roaming application settings are included herein with reference to different figures. - In
process 400, current application settings are retrieved (act 402). These current application settings are the application settings that are being roamed, as discussed above. - Changes in the application settings are identified (act 404). The application setting changes can be identified in a variety of different manners, as discussed above.
- In
act 406, a history of application setting changes maintained in an endpoint store is updated to include the application setting changes that are identified inact 404. The endpoint store is included in a synchronization endpoint module as discussed above. - A merge process is also invoked to add the application setting changes identified in
act 404 to a communication store for communication to the other computing devices across which application settings are roamed (act 408). The communication store is included in a synchronization communication module as discussed above. - Additionally, the application settings are updated to reflect any application setting changes obtained from the communication store (act 410). Such application setting changes are application setting changes received from other computing devices across which application settings are roamed, and are incorporated into the application settings of the computing device as discussed above.
-
FIG. 5 is a flowchart illustrating anexample process 500 for roaming application settings across multiple computing devices in accordance with one or more embodiments.Process 500 is carried out by a computing device, such ascomputing device 200 ofFIG. 2 , and can be implemented in software, firmware, hardware, or combinations thereof.Process 500 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.Process 500 is an example process for roaming application settings across multiple computing devices; additional discussions of roaming application settings across multiple computing devices are included herein with reference to different figures. - In
process 500, application setting changes in the synchronization endpoint module and the synchronization communication module are compared (act 502) and a determination made as to whether any of the application settings changes in the two modules are different (act 504). The application settings changes in the two modules are different if one of the modules includes one or more application setting changes that is not included in the other module. This comparison can be performed in response to different events as discussed above. This comparison is also repeated at various intervals, as discussed above, until one or more application setting changes in the two modules are different. - If the application setting changes are different, then an application setting change is selected (act 506). This application setting change is an application setting change difference that is determined to exist in act 504 (e.g., an application setting change that is included in one of the two modules but not the other). If there are multiple application setting changes that are different, then one such application setting change is selected. The one application setting change can be selected in different manners, such as based on most recent or oldest timestamp, according to some other rules or criteria, randomly, and so forth.
- Any conflicts involving the selected application setting change are resolved (act 508). Such conflicts can be resolved in different manners, as discussed above.
- A check is made as to whether the selected application setting change is an incoming change (act 510). If the selected application setting change is an incoming change, then the selected application setting change is added to the synchronization endpoint module of the computing device (act 512) and incorporated into the application settings of the computing device (act 514).
- A check is then made as to whether there are additional application setting changes that were determined to exist in
act 504 but have not yet been selected in act 506 (act 516). If there are additional application setting changes that have not yet been selected inact 506 then process 500 returns to act 506 to select one of such application setting changes. However, if there are no such additional application setting changes then process 500 returns to act 502 to compare the application setting changes in the synchronization endpoint module and the synchronization communication module. - Returning to act 510, if the selected application setting change is not an incoming change, then the selected application setting change is an outgoing change. Accordingly, the selected application setting change is added to the synchronization communication module of the computing device (act 518) and communicated to the one or more other computing devices across which application settings are roamed (act 520). A check is then made as to whether there are additional application setting changes that were determined to exist in
act 504 but have not yet been selected in act 506 (act 516), andprocess 500 returns to act 506 or act 502 based on the result of this check as discussed above. - The roaming application settings across multiple computing devices discussed herein supports a variety of different usage scenarios. One such usage scenario is that a user can easily keep the same application settings on multiple different ones of his or her computing devices. If the user desires to change a particular setting, the user can make that change on one of his or her devices and have that change automatically applied to all of his or her other computing devices.
- Another usage scenario is that a user can obtain a new computing device and easily have the application settings on that new computing device changed to be the same as the application settings on his or her other computing devices. The user can simply indicate that the new computing device is one of the devices across which application settings are to be roamed, and the application settings from his or her other devices will automatically be applied on the new computing device.
- Another usage scenario is that a user can effectively backup his or her application settings and subsequently have them applied to one or more computing devices as he or she desires. As the application settings are roamed across multiple devices, if the application settings are lost for some reason on a particular computing device, the settings can be readily obtained from another computing device.
- Another usage scenario is that a user can start an activity on one computing device and easily finish the activity on a different computing device. For example, a user can start creating a blog entry or email message on a first device and that blog entry or email message can be a setting that is roamed across his or her computing devices. The user can then resume working on the blog entry or email message on a second device as the blog entry or email message has been roamed from the first device to the second device.
-
FIG. 6 illustrates an example computing device that can be configured to implement the roaming application settings across multiple computing devices in accordance with one or more embodiments.Computing device 600 can be, for example, acomputing device 200 ofFIG. 2 , or one ofcomputing devices FIG. 1 . -
Computing device 600 includes one or more processors orprocessing units 602, one or more computerreadable media 604 which can include one or more memory and/orstorage components 606, one or more input/output (I/O)devices 608, and abus 610 that allows the various components and devices to communicate with one another. Computerreadable media 604 and/or one or more I/O devices 608 can be included as part of, or alternatively may be coupled to,computing device 600.Bus 610 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, a processor or local bus, and so forth using a variety of different bus architectures.Bus 610 can include wired and/or wireless buses. - Memory/
storage component 606 represents one or more computer storage media.Component 606 can include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth).Component 606 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so forth). - The techniques discussed herein can be implemented in software, with instructions being executed by one or
more processing units 602. It is to be appreciated that different instructions can be stored in different components ofcomputing device 600, such as in aprocessing unit 602, in various cache memories of aprocessing unit 602, in other cache memories of device 600 (not shown), on other computer readable media, and so forth. Additionally, it is to be appreciated that the location where instructions are stored incomputing device 600 can change over time. - One or more input/
output devices 608 allow a user to enter commands and information tocomputing device 600, and also allows information to be presented to the user and/or other components or devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, and so forth. - Various techniques may be described herein in the general context of software or program modules. Generally, software includes routines, programs, objects, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. An implementation of these modules and techniques may be stored on or transmitted across some form of computer readable media. Computer readable media can be any available medium or media that can be accessed by a computing device. By way of example, and not limitation, computer readable media may comprise “computer storage media” and “communications media.”
- “Computer storage media” include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
- “Communication media” typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism. Communication media also include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
- Generally, any of the functions or techniques described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations. The terms “module” and “component” as used herein generally represent software, firmware, hardware, or combinations thereof. In the case of a software implementation, the module or component represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer readable memory devices, further description of which may be found with reference to
FIG. 6 . The features of the roaming application settings techniques described herein are platform-independent, meaning that the techniques can be implemented on a variety of commercial computing platforms having a variety of processors. - Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Claims (20)
1. A system configured to synchronize application settings across multiple computing devices, the system comprising:
one or more processors; and
a memory comprising instructions stored thereon that, responsive to execution by the one or more processors, implement a synchronization service to perform operations comprising:
causing a provider module to monitor a history of application setting changes for a particular application and on a first computing device that is associated with a user of the synchronization service, the provider module being specified in configuration information associated with the particular application;
in response to identification by the provider module of a first change to application settings on the first computing device, converting application settings associated with the first change from a format used by the particular application, to a different format that enables synchronization via the synchronization service with at least one other computing device; and
after said converting, adding the first change to a synchronization communication module and employing the synchronization communication module to communicate the first change to the at least one other computing device associated with the user for synchronization.
2. A system as recited in claim 1 , wherein causing the provider module to monitor the history of application setting changes is performed when the first computing device is logged into the synchronization service.
3. A system as recited in claim 1 , wherein the operations further comprise establishing a synchronization connection between the first computing device and the at least one other computing device.
4. A system as recited in claim 3 , wherein the synchronization communication module is employed to communicate the first change to the at least one other computing device when the synchronization connection is established between the first computing device and the at least one other computing device.
5. A system as recited in claim 1 , wherein the operations further comprise identifying computing devices that are associated with the user of the synchronization service and across which application settings are to be synchronized.
6. A system as recited in claim 5 , wherein the computing devices are identified based on selections received from the user to register the computing devices with the synchronization service for synchronization of the application settings.
7. A system as recited in claim 1 , wherein the operations further comprise maintaining a record of computing devices that are associated with the user of the synchronization service and across which the application settings are synchronized.
8. A system as recited in claim 1 , wherein the operations further comprise causing a list of one or more computing devices associated with the user of the synchronization service to be presented to the user, the one or more computing devices being selectable from the list for synchronization of the application settings.
9. A server device configured to implement a synchronization service for synchronizing application settings across multiple computing devices, the server device comprising:
one or more processors; and
a memory comprising instructions stored thereon that, responsive to execution by the one or more processors, cause the server device to implement the synchronization service by performing operations comprising:
registering at least two computing devices to a user of the synchronization service to synchronize application settings across the at least two computing devices;
causing a provider module to monitor a history of changes to the application settings for a particular application and on a first computing device registered to the user, the provider module being specified in configuration information associated with the particular application; and
in response to identification by the provider module of a first change to application settings on the first computing device registered to the user, causing the provider module to:
convert the application settings corresponding to the first change from a format that is used by the particular application to a different format that is used by the synchronization service to synchronize the application settings with other computing devices registered to the user; and
add the first change formatted in the different format to a synchronization communication module and employing the synchronization communication module to communicate the first change to the other computing devices.
10. A server device as recited in claim 9 , wherein causing the provider module to monitor the history of changes to the application settings is performed when the first computing device registered to the user is logged into the synchronization service.
11. A server device as recited in claim 9 , wherein the operations further comprise establishing a synchronization connection between the first computing device registered to the user and the other computing devices registered to the user.
12. A server device as recited in claim 9 , wherein the operations further comprise maintaining a record of computing devices that are registered to the user of the synchronization service, and wherein the synchronization service synchronizes application settings across the computing devices identified by the record.
13. A server device as recited in claim 9 , wherein the registering is performed by causing a list of computing devices associated with the user of the synchronization service to be presented to the user, wherein the list includes the at least two computing devices, and wherein the computing devices presented as part of the list are selectable from the list for synchronization of the application settings.
14. A server device as recited in claim 9 , wherein the history of changes to the application settings includes, for each change to the application settings:
an indication of one or more changed application settings;
an indication of which of the at least two computing devices that are registered to the user initiated the change; and
a timestamp of when the change was made to the one or more changed application settings.
15. A first computing device that supports roaming of application settings to one or more additional computing devices, the first computing device comprising:
one or more processors; and
a memory comprising instructions stored thereon that, responsive to execution by the one or more processors, implement a settings synchronization module to perform operations comprising:
identifying an application provider module associated with a particular application, wherein one or more application settings of the particular application are stored in one or more settings locations known to the application provider module, wherein the application provider module associated with the particular application is specified for the particular application in configuration information of the particular application and is configured to monitor the one or more application settings of the particular application for changes; and
cause the application provider module to retrieve the one or more application settings that change according to the monitoring and employ a synchronization communication module between the application provider module and one or more additional computing devices to roam changes to the one or more application settings across multiple computing devices that include both the first computing device and the one or more additional computing devices.
16. A first computing device as recited in claim 15 , wherein to roam the changes to the one or more application settings is to:
identify a change to the one or more application settings; and
in response to identification of the change,
add the change to a history of application setting changes, and
invoke a merge process to have the change added to the synchronization communication module for communication to one or more additional computing devices of the multiple computing devices.
17. A first computing device as recited in claim 15 , wherein to identify the application provider module associated with the particular application is to access the configuration information provided by the particular application when the particular application was installed on the first computing device.
18. A first computing device as recited in claim 15 , wherein the operations further comprise identifying an additional provider module associated with an additional application, and causing the additional provider module to retrieve one or more application settings of the additional application having changes that are to be roamed, and to employ the synchronization communication module to roam the changes to the one or more application settings of the additional application across the multiple computing devices.
19. A first computing device as recited in claim 15 , wherein an additional provider module is associated with the particular application and an additional application, and wherein the additional provider module is used to retrieve the one or more application settings of the particular application having changes and one or more application settings of the additional application having changes and that are to be roamed, and to employ the synchronization communication module to roam the changes to the one or more application settings of the particular application and the changes to the one or more application settings of the additional application across the multiple computing devices.
20. A first computing device as recited in claim 15 , wherein the operations further comprise:
presenting a user interface to a user of the first computing device; and
receiving a user selection of particular application settings of the application that are to be roamed across the multiple computing devices when the particular application settings are changed, wherein the user-selected particular application settings are the one or more application settings of the application.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/727,691 US20150263911A1 (en) | 2010-01-21 | 2015-06-01 | Roaming Application Settings Across Multiple Computing Devices |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29720510P | 2010-01-21 | 2010-01-21 | |
US12/725,059 US8606889B2 (en) | 2010-01-21 | 2010-03-16 | Roaming application settings across multiple computing devices |
US14/097,146 US9077733B2 (en) | 2010-01-21 | 2013-12-04 | Roaming application settings across multiple computing devices |
US14/727,691 US20150263911A1 (en) | 2010-01-21 | 2015-06-01 | Roaming Application Settings Across Multiple Computing Devices |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/097,146 Continuation US9077733B2 (en) | 2010-01-21 | 2013-12-04 | Roaming application settings across multiple computing devices |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150263911A1 true US20150263911A1 (en) | 2015-09-17 |
Family
ID=44278359
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/725,059 Active US8606889B2 (en) | 2010-01-21 | 2010-03-16 | Roaming application settings across multiple computing devices |
US14/097,146 Active US9077733B2 (en) | 2010-01-21 | 2013-12-04 | Roaming application settings across multiple computing devices |
US14/727,691 Abandoned US20150263911A1 (en) | 2010-01-21 | 2015-06-01 | Roaming Application Settings Across Multiple Computing Devices |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/725,059 Active US8606889B2 (en) | 2010-01-21 | 2010-03-16 | Roaming application settings across multiple computing devices |
US14/097,146 Active US9077733B2 (en) | 2010-01-21 | 2013-12-04 | Roaming application settings across multiple computing devices |
Country Status (4)
Country | Link |
---|---|
US (3) | US8606889B2 (en) |
EP (1) | EP2526495B1 (en) |
CN (1) | CN102713886B (en) |
WO (1) | WO2011090818A2 (en) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10755287B2 (en) * | 2008-11-25 | 2020-08-25 | Microsoft Technology Licensing, Llc | Selecting between client-side and server-side market detection |
US8606889B2 (en) | 2010-01-21 | 2013-12-10 | Microsoft Corporation | Roaming application settings across multiple computing devices |
JP5507368B2 (en) * | 2010-07-13 | 2014-05-28 | 富士通テレコムネットワークス株式会社 | SNMP agent device and setting undo method |
US8782149B2 (en) | 2010-11-09 | 2014-07-15 | Comcast Interactive Media, Llc | Smart address book |
US9201709B2 (en) | 2011-05-20 | 2015-12-01 | Citrix Systems, Inc. | Shell integration for an application executing remotely on a server |
WO2012162158A1 (en) | 2011-05-20 | 2012-11-29 | Citrix Systems, Inc. | Shell integration on a mobile device for an application executing remotely on a server |
US11756412B2 (en) * | 2011-10-28 | 2023-09-12 | Universal Electronics Inc. | Systems and methods for associating services and/or devices with a voice assistant |
US11792185B2 (en) | 2019-01-08 | 2023-10-17 | Universal Electronics Inc. | Systems and methods for associating services and/or devices with a voice assistant |
US11700412B2 (en) | 2019-01-08 | 2023-07-11 | Universal Electronics Inc. | Universal voice assistant |
US11451618B2 (en) | 2014-05-15 | 2022-09-20 | Universal Electronics Inc. | Universal voice assistant |
US9158559B2 (en) * | 2012-01-27 | 2015-10-13 | Microsoft Technology Licensing, Llc | Roaming of note-taking application features |
US9258382B2 (en) * | 2012-06-21 | 2016-02-09 | Microsoft Technology Licensing, Llc | User-specific roaming settings |
CN103595738B (en) * | 2012-08-14 | 2017-12-01 | 中国电信股份有限公司 | User multiple terminals digital reading implementation method, system and reading business platform |
US10990417B2 (en) * | 2012-08-30 | 2021-04-27 | Autodesk, Inc. | Method and system for connecting users based on a measure of correlation |
US11394790B2 (en) * | 2012-10-09 | 2022-07-19 | Cvent Inc. | Method, system and apparatus for providing activity feed for events to facilitate gathering and communicating of event information |
US20140282062A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Techniques for efficient and granular composition of a user profile |
US9531662B2 (en) | 2013-03-20 | 2016-12-27 | Microsoft Technology Licensing, Llc | Global email identity preferences |
US9336228B2 (en) * | 2013-12-18 | 2016-05-10 | Verizon Patent And Licensing Inc. | Synchronization of program code between revision management applications utilizing different version-control architectures |
KR102194306B1 (en) | 2013-12-30 | 2020-12-22 | 삼성전자주식회사 | Apparatus and method for performing an application |
US11445011B2 (en) | 2014-05-15 | 2022-09-13 | Universal Electronics Inc. | Universal voice assistant |
US10063625B2 (en) * | 2014-05-15 | 2018-08-28 | Universal Electronics Inc. | System and method for appliance detection and app configuration |
US9692748B2 (en) | 2014-09-24 | 2017-06-27 | Oracle International Corporation | Unified provisioning of applications on devices in an enterprise system |
KR102354769B1 (en) | 2014-10-29 | 2022-01-25 | 삼성전자주식회사 | Terminal apparatus and method for controlling thereof |
US9519471B2 (en) | 2014-12-31 | 2016-12-13 | Microsoft Technology Licensing, Llc | Surfacing visual representations of universal applications |
EP3104553B1 (en) * | 2015-06-12 | 2017-12-13 | Panasonic Intellectual Property Corporation of America | Method for controlling multiple devices connected via network |
US11429883B2 (en) | 2015-11-13 | 2022-08-30 | Microsoft Technology Licensing, Llc | Enhanced computer experience from activity prediction |
US10769189B2 (en) | 2015-11-13 | 2020-09-08 | Microsoft Technology Licensing, Llc | Computer speech recognition and semantic understanding from activity patterns |
US10241776B2 (en) | 2016-04-08 | 2019-03-26 | Microsoft Technology Licensing, Llc | User settings across programs |
US10904727B2 (en) | 2016-12-13 | 2021-01-26 | Universal Electronics Inc. | Apparatus, system and method for promoting apps to smart devices |
US11665757B2 (en) | 2019-01-08 | 2023-05-30 | Universal Electronics Inc. | Universal audio device pairing assistant |
US11776539B2 (en) | 2019-01-08 | 2023-10-03 | Universal Electronics Inc. | Voice assistant with sound metering capabilities |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272545B1 (en) * | 1997-10-24 | 2001-08-07 | Microsoft Corporation | System and method for interaction between one or more desktop computers and one or more mobile devices |
US20030130984A1 (en) * | 2001-11-15 | 2003-07-10 | Sean Quinlan | System and methods for asynchronous synchronization |
US20060242206A1 (en) * | 2005-04-22 | 2006-10-26 | Microsoft Corporation | System and method for peer to peer synchronization of files |
US20070014314A1 (en) * | 2005-07-13 | 2007-01-18 | Bellsouth Intellectual Property Corporation | Peer-to-peer synchronization of data between devices |
US20070283011A1 (en) * | 2006-06-02 | 2007-12-06 | Google Inc. | Synchronizing Configuration Information Among Multiple Clients |
US20080215758A1 (en) * | 2004-08-14 | 2008-09-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method For Software Program Synchronization |
US20080307414A1 (en) * | 2007-06-05 | 2008-12-11 | International Business Machines Corporation | Creating a virtual machine image with a software deployment system |
US20090259698A1 (en) * | 2006-12-27 | 2009-10-15 | Brother Kogyo Kabushiki Kaisha | Data synchronizing system, acquiring terminal, and providing terminal |
US20110173607A1 (en) * | 2010-01-11 | 2011-07-14 | Code Systems Corporation | Method of configuring a virtual application |
US8245242B2 (en) * | 2004-07-09 | 2012-08-14 | Quest Software, Inc. | Systems and methods for managing policies on a computer |
US8464242B2 (en) * | 2009-07-08 | 2013-06-11 | Tranxition Corporation | Virtualization of configuration settings |
US8909712B2 (en) * | 2003-11-25 | 2014-12-09 | Sap Ag | System and method for a generic mobile synchronization framework |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317754B1 (en) * | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
US6560655B1 (en) * | 1999-06-22 | 2003-05-06 | Microsoft Corporation | Synchronization manager for standardized synchronization of separate programs |
US7194557B1 (en) | 2004-11-08 | 2007-03-20 | Palmsource, Inc. | Data exchange between a handheld device and another computer system using an exchange manager via synchronization |
US7809384B2 (en) * | 2002-11-05 | 2010-10-05 | Microsoft Corporation | User-input scheduling of synchronization operation on a mobile device based on user activity |
US7743022B2 (en) * | 2003-02-28 | 2010-06-22 | Microsoft Corporation | Method and system for synchronizing data shared among peer computing devices |
US7536440B2 (en) | 2003-09-18 | 2009-05-19 | Vulcan Portals Inc. | Method and system for email synchronization for an electronic device |
US20050091346A1 (en) * | 2003-10-23 | 2005-04-28 | Brijesh Krishnaswami | Settings management infrastructure |
US7716651B2 (en) * | 2005-01-26 | 2010-05-11 | Microsoft Corporation | System and method for a context-awareness platform |
US7958543B2 (en) * | 2005-07-12 | 2011-06-07 | Microsoft Corporation | Account synchronization for common identity in an unmanaged network |
US7912916B2 (en) | 2006-06-02 | 2011-03-22 | Google Inc. | Resolving conflicts while synchronizing configuration information among multiple clients |
US8145200B2 (en) | 2006-07-31 | 2012-03-27 | Research In Motion Limited | Method and apparatus for configuring unique profile settings for multiple services |
US7941470B2 (en) * | 2007-03-29 | 2011-05-10 | Vmware, Inc. | Synchronization and customization of a clone computer |
US8606889B2 (en) | 2010-01-21 | 2013-12-10 | Microsoft Corporation | Roaming application settings across multiple computing devices |
-
2010
- 2010-03-16 US US12/725,059 patent/US8606889B2/en active Active
-
2011
- 2011-01-05 WO PCT/US2011/020200 patent/WO2011090818A2/en active Application Filing
- 2011-01-05 EP EP11734982.9A patent/EP2526495B1/en active Active
- 2011-01-05 CN CN201180006775.4A patent/CN102713886B/en active Active
-
2013
- 2013-12-04 US US14/097,146 patent/US9077733B2/en active Active
-
2015
- 2015-06-01 US US14/727,691 patent/US20150263911A1/en not_active Abandoned
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272545B1 (en) * | 1997-10-24 | 2001-08-07 | Microsoft Corporation | System and method for interaction between one or more desktop computers and one or more mobile devices |
US20030130984A1 (en) * | 2001-11-15 | 2003-07-10 | Sean Quinlan | System and methods for asynchronous synchronization |
US8909712B2 (en) * | 2003-11-25 | 2014-12-09 | Sap Ag | System and method for a generic mobile synchronization framework |
US8245242B2 (en) * | 2004-07-09 | 2012-08-14 | Quest Software, Inc. | Systems and methods for managing policies on a computer |
US20080215758A1 (en) * | 2004-08-14 | 2008-09-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method For Software Program Synchronization |
US20060242206A1 (en) * | 2005-04-22 | 2006-10-26 | Microsoft Corporation | System and method for peer to peer synchronization of files |
US20070014314A1 (en) * | 2005-07-13 | 2007-01-18 | Bellsouth Intellectual Property Corporation | Peer-to-peer synchronization of data between devices |
US20070283011A1 (en) * | 2006-06-02 | 2007-12-06 | Google Inc. | Synchronizing Configuration Information Among Multiple Clients |
US20090259698A1 (en) * | 2006-12-27 | 2009-10-15 | Brother Kogyo Kabushiki Kaisha | Data synchronizing system, acquiring terminal, and providing terminal |
US20080307414A1 (en) * | 2007-06-05 | 2008-12-11 | International Business Machines Corporation | Creating a virtual machine image with a software deployment system |
US8464242B2 (en) * | 2009-07-08 | 2013-06-11 | Tranxition Corporation | Virtualization of configuration settings |
US20110173607A1 (en) * | 2010-01-11 | 2011-07-14 | Code Systems Corporation | Method of configuring a virtual application |
Also Published As
Publication number | Publication date |
---|---|
EP2526495A4 (en) | 2017-02-15 |
US8606889B2 (en) | 2013-12-10 |
WO2011090818A3 (en) | 2011-11-10 |
WO2011090818A2 (en) | 2011-07-28 |
CN102713886A (en) | 2012-10-03 |
CN102713886B (en) | 2016-05-11 |
EP2526495B1 (en) | 2020-11-25 |
US9077733B2 (en) | 2015-07-07 |
US20140095710A1 (en) | 2014-04-03 |
EP2526495A2 (en) | 2012-11-28 |
US20110179149A1 (en) | 2011-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9077733B2 (en) | Roaming application settings across multiple computing devices | |
US9501484B2 (en) | Recognizing cloud content | |
US8495621B2 (en) | Catalog-based software component management | |
US8225227B2 (en) | Managing display of user interfaces | |
US9311109B2 (en) | Synchronizing device association data among computing devices | |
US20090204858A1 (en) | Server management program, system, and method, and mail server management program | |
US20130103816A1 (en) | Multiplatform management system and method for mobile devices | |
US20030065951A1 (en) | Information providing server, terminal apparatus, control method therefor, and information providing system | |
EP1577763A2 (en) | Method and system for coupling the user interface language of a software application and a web site | |
US8112552B2 (en) | Default peripheral device selection based on location | |
US10462008B2 (en) | Cart mode provisioning of shared computing devices | |
US20190230511A1 (en) | System and method for migrating data between devices | |
KR102032583B1 (en) | Access to supplemental data based on identifier derived from corresponding primary application data | |
US7574743B2 (en) | Method for ensuring security, data storage apparatus, security ensuring server, and storage medium storing program for the same | |
US20110208761A1 (en) | Coordinating content from multiple data sources | |
US20100064290A1 (en) | Computer-readable recording medium storing a control program, information processing system, and information processing method | |
US10439893B2 (en) | Information sharing system | |
US9301185B1 (en) | Mobile communication extended error codes and dynamic error handling | |
US9026618B2 (en) | System and method for expanding PC-based software capabilities | |
US20200120183A1 (en) | Method, device and program product for accessing backup server through office software | |
JP2020154882A (en) | Information processing apparatus, information processing system, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:035759/0015 Effective date: 20141014 Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KAZAN, WISSAM S.;BREZAK, JOHN E.;BAKER, MATTHEW S.;AND OTHERS;SIGNING DATES FROM 20100304 TO 20100315;REEL/FRAME:035759/0001 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |