Patent Description:
Users sometimes use a third-party application to access electronic mailboxes. For instance, a user can use a mobile app on a smartphone to access the user's mailbox hosted and managed by a first email provider. The mobile app, however, may be provided by a second email provider who has no direct control over the user's electronic mailbox at the first email provider. Instead of directly accessing email servers of the first email provider, the mobile app can access a "mirror" electronic mailbox at the second email provider replicated from a source electronic mailbox at the first email provider. Optionally, the second email provider can also add control data or metadata to the replicated email messages to provide additional functionalities suitable for the mobile app. The mobile app can then access the mirror electronic mailbox at the second email provider to retrieve, surface, and/or provide access to the email messages to the user.

The mailbox replication technique described above, however, may cause certain issues when indirectly accessing the user's email messages via the mirror electronic mailbox at the first email provider. Typically, an electronic mailbox is organized as multiple email folders such as "Inbox," "Sent," "Outbox," "Junk email," and "Deleted items. " The user can also create customized email folders such as for different types, categories, topics, groups, projects, departments, etc. As such, the source electronic mailbox can sometimes include hundreds if not thousands of email folders. During operation, the second email provider synchronizes the various email folders at the source and mirror electronic mailboxes by transmitting synchronization requests to the first email provider and update corresponding email folders with received responses from the first email provider.

Sometimes, however, the mobile app may appear unable to receive/sent email messages due to synchronization issues between the first and second email providers. For example, the second email provider may appear "stuck" on synchronizing email messages in a first email folder while the user is attempting to access new messages in a second email folder. The first email folder may contain many email messages and/or email messages with large-size attachments, such as video files. As such, synchronization of the second email folder can be delayed because synchronizing the first email folder takes a long time to complete. As such, while the second email folder at the source electronic mailbox may contain new messages, the user would not have access to such new messages in the mirror electronic mailbox due to the synchronization delay between the first and second email providers. Thus, the mobile app may appear to have failed to update email messages in the second email folder.

In another example, synchronization of the source and mirror electronic mailboxes at the first and second email providers, respectively, may also fail for various reasons. For instance, the first email provider may allow hosting of files of certain types, sizes, file names, and/or other attributes that are not allowed by the second email provider. As such, synchronization of the first email folder with email messages of such attributes would fail. In response, the second email provider may attempt to resynchronize the first email folder by submitting repeated synchronization requests. However, throttling rules implemented at the first email provider can limit how often the second email provider (or other email providers) can submit such synchronization requests. Thus, the repeated synchronization requests by the second email provider can cause the first email provider to suspend the synchronization of the first email folder by, for instance, setting a retry delay. As a result, the second email folder with new messages may not be synchronized in a timely fashion between the source and mirror electronic mailboxes. Thus, the mobile app may also appear to have failed to update for new messages. The synchronization issues described above can thus negatively impact user experience with the mobile app as well as incurring resource consumptions (e.g., storage, network bandwidth, and/or processor usage) at both email servers at both the first and second email providers.

Several embodiments of the disclosed technology can address certain aspects of the foregoing drawbacks by implementing a real-time prioritization of email folders in an electronic mailbox based on signals of user interactions, server synchronization conditions, backend processing conditions at the second email provider, and/or other suitable operating status of the electronic mailbox. In certain implementations, a prioritization controller can be configured to track various client-side signals indicating interactions between a user and certain email folders in the mirror electronic mailbox. Example client-side interactions can include:.

The prioritization controller can also be configured to track server-side interaction signals indicating a synchronization and/or processing condition/status of the email folders. Example server-side interaction signals can include:.

In any of the foregoing embodiments, the prioritization controller can also be configured to track a lack of interactions or "inactivity" of certain interactions or conditions. For example, the prioritization controller can be configured to track that a user has not selected an email folder or interacted with an email message in the email folder for a threshold amount of time. In another example, the prioritization controller can also be configured to track that no transient/permanent failures have been detected while performing operations on an email folder for another threshold amount of time. Based on such tracked inactivity, the prioritization controller can be configured to derive or assign interaction scores, either positive or negative, to the detected interactions and/or inactivity, as described in more detail below.

Using the tracked interaction signals or inactivity, the prioritization controller can be configured to derive a prioritization score for each of the email folders in the mirror electronic mailbox. In certain embodiments, the individual tracked interactions signals can be assigned an interaction score based on certain criteria. For example, when a user selects an email folder, the prioritization controller can assign a numerical score (e.g., five) to the tracked interaction indicating positive interaction. In another example, when a user performs an action on an email message, the prioritization controller can assign another numerical score (e.g., ten) to the email folder that holds the email message. On the other hand, when the user has not selected the email folder or interacted with an email message in the email folder, the prioritization controller can assign another numerical score (e.g., minus two) to the email folder for inactivity indicating negative interaction.

In a further example, when the mobile app signals to add an email folder to "Favorites" list, the prioritization controller can assign yet another numerical value corresponding to the email folder according to the tracked interactions. In yet further examples, when any of the following is detected while performing an operation on an email folder, the prioritization controller can assign a numerical value (e.g., minus ten) to the email folder indicating operational difficulties:.

On the other hand, the prioritization can assign another numerical value (e.g., positive five) when one or more of the foregoing interactions have not been detected for a threshold amount of time indicating a lack of operational difficulties. In at least some of the foregoing examples, the prioritization controller can be configured to adjust the assigned interaction scores as a function of time, frequency, recency, or other suitable criteria. Thus, in certain instances, as time elapses, the assigned interaction score to a tracked interaction (e.g., user selects an email folder) can continuously decrease until reaching a floor value (e.g., zero) or continue to negative numbers without being limited by a floor value.

With the interaction scores, the prioritization controller can be configured to derive the prioritization score. In certain embodiments, the prioritization controller can sum all the assigned interaction scores to derive an overall prioritization score. In other embodiments, at least some of the assigned interaction scores can have corresponding weights toward the overall prioritization score. As such, an administrator or other suitable entities can adjust the weights to emphasis importance of certain interaction signals. For example, an administrator may set higher weights for server-side interaction signals when compared to client-side interaction signals, or vice versa. In certain implementations, the prioritization controller can be configured to adjust the prioritization score in real time. As such, when an interaction signal is received, the prioritization controller can be configured to recalculate the prioritization score in response to receiving the interaction signal. In other implementations, the prioritization controller can be configured to also adjust the previously calculated prioritization score periodically or in other suitable manners. For example, as time elapses, the prioritization controller can periodically decrease certain interaction scores of previously detected interactions to result in decreasing overall prioritization scores. The decreased prioritization scores can result in a new and/or different synchronization profile for the email folder corresponding to the decreased prioritization scores, as described in more detail below.

The prioritization controller can also be configured to implement different synchronization rules and adjust the implemented synchronization rules for individual email folders based on corresponding prioritization scores of these email folders. For example, the prioritization controller can be configured to determine whether a prioritization score of an email folder exceeds a threshold. In response to determine that the prioritization score exceeds the threshold, the prioritization controller can mark the email folder to be synchronized. Otherwise, the prioritization controller can mark the email folder to be not synchronized. In another example, in response to determine that the prioritization score exceeds the threshold, the prioritization controller can mark the email folder to be synchronized at a higher frequency (e.g., once an hour) than a frequency (e.g., once a day) for other email folders with prioritization scores below the threshold. In further examples, the prioritization controller can also be configured to sort the email folders into a priority sequence according to the prioritization scores and instruct the email servers to synchronize the email folders in the mirror electronic mailbox using the priority sequence. In yet further examples, the prioritization controller can be configured to exclude or delay synchronization of email folder(s) that continue to experience failures or other operational difficulties, such as failure to synchronize, high processing workload, etc..

Several embodiments of the disclosed technology can improve user experience when using the mobile app. By prioritizing synchronization of email folders using the client-side interaction signals, email folders most often used by users can be synchronized more frequent or faster than other email folders. As such, the email folders that are most often used can stay up to date with small or no synchronization delays. In addition, by not synchronizing email folders often unused by users for a long time, the first and second email providers can save storage, computing, network, or other suitable types of resources at corresponding email servers. Also, by synchronizing a reduced number of email folders, synchronization latencies of the email folders can also be reduced. As such, the mobile app can appear to be more responsive than synchronizing all email folders.

Certain embodiments of systems, devices, components, modules, routines, data structures, and processes for synchronization control of file folders in computing systems are described below. In the following description, specific details of components are included to provide a thorough understanding of certain embodiments of the disclosed technology. A person skilled in the relevant art will also understand that the technology can have additional embodiments. The technology can also be practiced without several of the details of the embodiments described below with reference to <FIG>.

In the following description, an email server can include a computer dedicated to running such applications that are configured to receive incoming emails from senders and forward outgoing emails to recipients via a computer network, such as the Internet. Examples of such applications include Microsoft Exchange®, qmail, Exim, and sendmail. An email server can maintain and/or access one or more electronic mailboxes for corresponding users. An electronic mailbox can include a logical a computer file structure in which electronic mails of a user are collected. An electronic mailbox can also include subordinate file structures such as file folders or email folders that individually include a subset of the emails of the user.

When a user uses a thirty-party application to access emails hosted by a first email provider, a second email provider of the application can create a mirror electronic mailbox that is a replication of that at the first email provider. The mailbox replication technique, however, can create certain operational issues due to synchronization between the original and the mirror electronic mailboxes. For instance, the second email provider may be synchronizing a first folder while the user is attempting to access a second folder. In another instance, synchronization of the first folder may fail, and thus rendering the synchronization process paused or terminated. Such operations issues can render the application unresponsive and negatively impact user experience. The operational issues can also incur large amount of storage, computing, network, or other types of resources at both the first and second email providers.

Several embodiments of the disclosed technology can address certain aspects of the foregoing drawbacks by implementing a real-time prioritization of email folders in an electronic mailbox based on user interactions, server synchronization conditions, and backend processing conditions at the second email provider. In example implementations, signals of the user interacting with emails or email folders, as well as synchronization status or conditions between the first and second email providers can be tracked. The tracked signals can be converted into numerical values and combined with or without weights into an aggregate prioritization score for each email folder. Suitable synchronization rules and/or sequences can then be applied to the email folders based on the prioritization scores. As such, email folders that the user interacts more often can be synchronized at higher frequency than others. Email folders that continue to have synchronization issues can be deprioritized such that other email folders can be synchronized first and/or at higher frequencies. Thus, email services via the mobile app can appear to be more responsive than randomly synchronizing email folders while computing resources at the first and second email providers can be reduced, as described in more detail below with reference to <FIG>.

Though various aspects of the disclosed technology are described below in the context of email folder synchronization control, in other implementations, at least some aspects of the disclosed technology can also be applied to synchronizing other types of folders. For example, a user may store large amount data representing documents or other types of files in many folders on a File Management System (FMS). The FMS can be configured to track user interaction with the stored files or file folders as well as backend processing loads of the files or file folders to determine prioritization of duplicate copies of the files and/or file folders. In other examples, aspects of the disclosed technology can also be applied in the context of synchronization control of text messages, online chats, or another suitable environment.

<FIG> is a schematic diagram illustrating a computing system <NUM> implementing synchronization control of file folders in accordance with embodiments of the disclosed technology. As shown in <FIG>, the computing system <NUM> can include a computer network <NUM> interconnecting a client device <NUM>, a host email server 106a, and a proxy email server 106b. The host and proxy email servers 106a and 106b are also individually interconnected with a network storage 112a and 112b containing one or more folders 116a and 116b in a source electronic mailbox 113a and mirror electronic mailbox 113b which is a replication of the source electronic mailbox 113a. Each folder 116a and 116b can include a collection of emails <NUM>. The proxy email server 106b is also operatively connected and a data store <NUM> containing priority records <NUM>.

The computer network <NUM> can include an intranet, a wide area network, the Internet, or other suitable types of network. Even though particular components of the computing system <NUM> are shown in <FIG>, in other embodiments, the computing system <NUM> can also include additional and/or different components or arrangements. For example, the computing system <NUM> can also include additional network storage devices, additional hosts, and/or other suitable components (not shown). In other embodiments, the network storage 112a and 112b and/or the data store <NUM> may be integrated into respective host or proxy email servers 106a and 106b.

The client devices <NUM> can include a computing device that is configured to facilitate a user <NUM> to access computing services provided by the host and proxy email servers 106a and 106b via the computer network <NUM>. For example, in the illustrated embodiment, the client devices <NUM> include a smartphone configured to execute suitable instructions to provide a mobile app <NUM> that allows the user <NUM> to view, reply, send, or perform other actions on emails <NUM>. In the illustrated example, the emails <NUM> are in an Inbox folder <NUM>. In other examples, the emails <NUM> can be in other suitable folders while the mobile app <NUM> provides facilities for the user <NUM> to switch between the folders to view corresponding emails <NUM>. In other embodiments, the client devices <NUM> can also include laptops, tablets, gaming consoles, or other suitable computing devices. Even though a single user <NUM> is shown in <FIG> for illustration purposes, in other embodiments, the computing system <NUM> can facilitate any suitable numbers of users <NUM> to access suitable types of computing services provided by the host and/or proxy email servers 106a and 106b.

The host and proxy email servers 106a and 106b can be configured to facilitate email reception, storage, forwarding, and other related functionalities. For example, as shown in <FIG>, a sender (not shown) can generate and transmit an email <NUM> to the host email server 106a either directly or via other intermediate email servers (not shown). The email <NUM> is destined to the user <NUM> and can include an email header, an email body, and one or more optional attachments (not shown). Upon receiving the email <NUM> from the sender, the host email server 106a can store a copy of the email <NUM> in an electronic mailbox 113a on the network storage 112a that correspond to the user <NUM>. As shown in <FIG>, the electronic mailbox 113a of the user <NUM> can include multiple folders 116a. Upon receiving the email <NUM>, the host email server 106a can be configured to store the email <NUM> in one of the multiple folders 116a according to certain setup rules. For instance, the email <NUM> can be placed in an "Inbox" folder 116a of the electronic mailbox 113a. Alternatively, the email <NUM> may be placed in another folder 116a designated to store emails <NUM> from the sender.

In the illustrated scenario, the mobile app <NUM> can be provided by an email service provider (not shown) corresponding to the proxy email server 106b. As such, in order to allow the user <NUM> to access the emails <NUM> at the host email server 106a, the proxy email server 106b can replicate the source electronic mailbox 113a at the network storage 112a to the network storage 112b. As such, the network storage 112b can include a mirror electronic mailbox 113b that is a copy of the source electronic mailbox 113a having the same or similar folder structure. In operation, the proxy email server 106b can continuously, periodically, or on other suitable basis to synchronize the various folders 116b in the mirror electronic mailbox 113b with those in the source electronic mailbox 113a. For example, the proxy email server 106b can periodically transmit synchronization requests (not shown) to the host email server 106a for any changes in the folders 116a at the source electronic mailbox 113a. In response, the host email server 106a can provide the newly received email <NUM> from the sender to the proxy email server 106b. In turn, the proxy email server 106b can store a copy of the email <NUM> in a corresponding folder 116b and provide another copy of the email <NUM> to the mobile app <NUM> for surfacing to the user <NUM>.

The mailbox replication technique described above, however, may cause certain issues when indirectly accessing the user's email <NUM> at the host email server 106a via the proxy email server 106b. As shown in <FIG>, the source and mirror electronic mailboxes 113a and 113b can be organized as multiple folders 116a and 116b such as "Inbox," "Sent," "Outbox," "Junk email," and "Deleted items. " The user <NUM> can also create customized folders 116a and 116b such as for different types, categories, topics, groups, projects, departments, etc. As such, the source and mirror electronic mailboxes 113a and 113b can sometimes include hundreds if not thousands of folders 116a and 116b, respectively.

The large number of folders 116a and 116b may sometimes cause the mobile app <NUM> to appear unable to receive/sent email <NUM> due to synchronization issues between the host and proxy email servers 106a and 106b. For example, the proxy email server 106b may appear "stuck" on synchronizing emails <NUM> in a first folder 116b while the user <NUM> is attempting to access the new messages from the sender in a second folder 116b'. The first folder 116b may contain many emails <NUM> and/or emails <NUM> with large-size attachments, such as video files. As such, synchronization of the second folder 116b' can be delayed because synchronizing the first folder 116a takes a long time to complete. As such, while the second email folder 116b' at the source electronic mailbox 113a may contain new messages, the user <NUM> would not have access to such new messages in the mirror electronic mailbox 113b due to the synchronization delay. Thus, the mobile app <NUM> may appear to have failed to update emails <NUM> in the second email folder 116b'.

In another example, synchronization of the source and mirror electronic mailboxes 113a and 113b at the first and proxy email servers 106a and 106b, respectively, may also fail for various reasons. For instance, the host email server 106a may allow hosting of files of certain types, sizes, and/or other attributes that are not allowed by the proxy email server 106b. As such, synchronization of the first folder 116b with emails <NUM> of such attributes would fail. In response, the proxy email server 106b may attempt to resynchronize the first folder 116b by submitting repeated synchronization requests. However, throttling rules implemented at the host email server 106a can limit how often the proxy email server 106b (or other email providers) can submit such synchronization requests. Thus, the repeated synchronization requests by the proxy email server 106b can cause the host email server 106a to suspend the synchronization process by, for instance, setting a retry delay. As a result, the second email folder 116b' with new messages may not be synchronized in a timely fashion between the source and mirror electronic mailboxes 113a and 113b. Thus, the mobile app <NUM> may also appear to have failed to update. The synchronization issues described above can thus negatively impact user experience with the mobile app <NUM> as well as incurring large amounts of resource consumptions (e.g., storage, network bandwidth, and/or processor usage) at both host and proxy email servers 106a and 106b.

Several embodiments of the disclosed technology can address certain aspects of the foregoing drawbacks by implementing a real-time prioritization of the folders 116b at the network storage 112b based on user interactions, server synchronization conditions, and backend processing conditions at the proxy email server 106b. As shown in <FIG>, the computing system <NUM> can include a prioritization controller <NUM> configured to perform synchronization control of the folders 116b in the mirror electronic mailbox 113b with the folders 116a in the source electronic mailbox 113a. In one example, the prioritization controller <NUM> can be a component of the proxy email server 106b. In other examples, the prioritization controller <NUM> can be a component hosted on one or more additional servers (not shown) separate from the proxy email server 106b while still having access to priority records <NUM> in the data store <NUM>.

In accordance with embodiments of the disclosed technology, the prioritization controller <NUM> can be configured to control synchronization of the folders 116b int eh mirror electronic mailbox 113b by tracking various signals indicating user interactions, server synchronization conditions, and backend processing conditions at the proxy email server 106b. For example, as shown in <FIG>, the prioritization controller <NUM> can be configured to receive client-side interaction signals 118a. In certain embodiments, the client-side interaction signals 118a can be generated by an interaction agent (not shown) that is a component of the mobile app <NUM>. Upon detecting user interactions with the emails <NUM> and/or folders 116b, the interaction agent can be configured to generate, store, and transmit data indicating the detected interactions to the prioritization controller <NUM>. Example client-side interactions can include:.

In other embodiments, the client-side interaction signals 118a can be generated by the client device <NUM> in other suitable manners.

The prioritization controller <NUM> can also be configured to track server-side interaction signals 118b indicating a synchronization and/or processing condition of the folders 116b. Example server-side interaction signals 118b can include:.

In any of the foregoing embodiments, the prioritization controller <NUM> can also be configured to track a lack of interactions or "inactivity" of certain interactions. For example, the prioritization controller <NUM> can be configured to track that the user <NUM> has not selected an email folder 116b for a threshold amount of time. In another example, the prioritization controller <NUM> can also be configured to track that no transient/permanent failures have been detected while performing operations on an email folder 116b for another threshold amount of time. Based on such tracked inactivity, the prioritization controller <NUM> can be configured to derive or assign interaction scores, either positive or negative, to the detected interactions and/or inactivity, as described in more detail below.

Using the tracked client- and server-side interaction signals 118a and 118b, the prioritization controller <NUM> can be configured to derive a prioritization score for each of the folders 116b in the mirror electronic mailbox 113b. In certain embodiments, the individual tracked client- and server-side interactions signals 118a and 118b can be assigned an interaction score based on certain criteria. For example, when the user <NUM> selects a folder 116b, the prioritization controller <NUM> can assign a numerical score (e.g., five) to the tracked interaction. In another example, when the user <NUM> performs an action on an email <NUM>, the prioritization controller <NUM> can assign another numerical score (e.g., ten) to the folder 116b that holds the email <NUM>. On the other hand, when the user <NUM> has not selected the email folder 116b or interacted with an email <NUM> in the email folder, the prioritization controller <NUM> can assign another numerical score (e.g., minus two) to the email folder 116b for inactivity. In a further example, when the mobile app <NUM> can signal to add a folder 116b to "Favorites" list, the prioritization controller <NUM> can assign yet another numerical value to the folder 116b. In yet further examples, when any of the following is detected while performing an operation on a folder 116b, the prioritization controller <NUM> can assign a numerical value (e.g., minus ten) to the folder 116b:.

In at least some of the foregoing examples, the prioritization controller <NUM> can be configured to adjust the assigned interaction scores as a function of time, frequency, recency, or other suitable criteria. Thus, in certain instances, as time elapses, the assigned interaction score to a tracked interaction (e.g., user selects a folder) can continuously decrease until reaching a floor value (e.g., zero) or continue to negative numbers without being limited by a floor value.

With the interaction scores, the prioritization controller <NUM> can be configured to derive a prioritization score for each of the folders 116b in the mirror electronic mailbox 113b. In certain embodiments, the prioritization controller <NUM> can sum all the assigned interaction scores to derive an overall prioritization score. In other embodiments, at least some of the assigned interaction scores can have corresponding weights (e.g., from zero to one) toward the overall prioritization score. As such, an administrator (not shown) or other suitable entities can adjust the weights to emphasis importance of certain interaction signals. For example, an administrator may set higher weights for server-side interaction signals 118b compared to client-side interaction signals 118a, or vice versa. In certain implementations, the prioritization controller <NUM> can be configured to adjust the prioritization score in real time. As such, when a client- or server-side interaction signal 118a or 118b is received, the prioritization controller <NUM> can be configured to recalculate the prioritization score in response to receiving the client- or server-side interaction signal 118a or 118b. In other implementations, the prioritization controller <NUM> can be configured to adjust the prioritization score periodically or in other suitable manners. For example, as time elapses, the prioritization controller <NUM> can periodically decrease certain interaction scores of previously detected client- or server-side interaction signals 118a and 118b to result in decreasing overall prioritization scores. The decreased prioritization scores can result in a new and/or different synchronization profile for the email folders <NUM> corresponding to the decreased prioritization scores.

As shown in <FIG>, the prioritization controller <NUM> can also be configured to implement different synchronization rules and adjust the implemented synchronization rules for individual folders 116b in the mirror electronic mailbox 113b based on corresponding prioritization scores of these folders 116b. For example, the prioritization controller <NUM> can be configured to determine whether a prioritization score of a folder 116b exceeds a threshold. In response to determine that the prioritization score exceeds the threshold, the prioritization controller <NUM> can mark the folder 116b to be synchronized. Otherwise, the prioritization controller <NUM> can mark the folder 116b to be not synchronized (shown in <FIG> in reverse contrast for illustration purposes). In another example, in response to determine that the prioritization score exceeds the threshold, the prioritization controller <NUM> can mark the folder 116b to be synchronized at a higher frequency (e.g., once an hour) than a frequency (e.g., once a day) for other folders 116b with prioritization scores below the threshold. In further examples, the prioritization controller <NUM> can also be configured to sort the folders 116b into a priority sequence according to the prioritization scores and instruct the email servers to synchronize the folders 116b in the mirror electronic mailbox using the priority sequence. In yet further examples, the prioritization controller <NUM> can be configured to exclude or delay synchronization of folders 116b that continue to experience failures or other operational difficulties, such as failure to synchronize, high processing workload, etc..

Several embodiments of the disclosed technology can improve user experience when using the mobile app <NUM>. By prioritizing synchronization of folders 116b using the client- and/or server-side interaction signals 118a and 118b, folders 116b most often used by the user <NUM> can be synchronized more frequent or faster than other folders 116b. As such, the folders 116b that are most often used can stay up to date with small or no synchronization delays. In addition, by not synchronizing certain folders 116b often unused by the user <NUM> for a long time, the host and proxy email servers 106a and 106b can save storage, computing, network, or other suitable types of resources at corresponding email servers 106a and 106b. Also, by synchronizing a reduced number of folders 116a and 116b, synchronization latencies of the folders 116b can also be reduced. As such, the mobile app <NUM> can appear to be more responsive than synchronizing all folders 116b. Example components of the prioritization controller <NUM> are described in more detail below with reference to <FIG> while adjustment of synchronization priorities is described below in more detail with reference to <FIG>.

<FIG> is a schematic diagram illustrating certain hardware/software components of the prioritization controller <NUM> in accordance with embodiments of the disclosed technology. In <FIG>, only certain components of the computing system <NUM> of <FIG> are shown for clarity. In <FIG> and in other Figures herein, individual software components, objects, classes, modules, and routines may be a computer program, procedure, or process written as source code in C, C++, C#, Java, and/or other suitable programming languages. A component may include, without limitation, one or more modules, objects, classes, routines, properties, processes, threads, executables, libraries, or other components. Components may be in source or binary form. Components may include aspects of source code before compilation (e.g., classes, properties, procedures, routines), compiled binary units (e.g., libraries, executables), or artifacts instantiated and used at runtime (e.g., objects, processes, threads).

Components within a system may take different forms within the system. As one example, a system comprising a first component, a second component and a third component can, without limitation, encompass a system that has the first component being a property in source code, the second component being a binary compiled library, and the third component being a thread created at runtime. The computer program, procedure, or process may be compiled into object, intermediate, or machine code and presented for execution by one or more processors of a personal computer, a network server, a laptop computer, a smartphone, and/or other suitable computing devices.

Equally, components may include hardware circuitry. A person of ordinary skill in the art would recognize that hardware may be considered fossilized software, and software may be considered liquefied hardware. As just one example, software instructions in a component may be burned to a Programmable Logic Array circuit or may be designed as a hardware circuit with appropriate integrated circuits. Equally, hardware may be emulated by software. Various implementations of source, intermediate, and/or object code and associated data may be stored in a computer memory that includes read-only memory, random-access memory, magnetic disk storage media, optical storage media, flash memory devices, and/or other suitable computer readable storage media excluding propagated signals.

As shown in <FIG>, the prioritization controller <NUM> can include a signal tracker <NUM>, an interaction scorer <NUM>, a prioritization scorer <NUM>, and a sync controller <NUM> operatively coupled to one another. Though particular components of the prioritization controller <NUM> are shown in <FIG>, in other embodiments, the prioritization controller <NUM> can also include network, database, input/output, or other suitable types of components in addition to or in lieu of those shown in <FIG>. In further embodiments, certain components of the prioritization controller <NUM> may be combined into a single logic entity. For example, the interaction scorer <NUM> and the prioritization scorer <NUM> may be combined into a signal logic entity. In another example, the interaction scorer <NUM>, the prioritization scorer <NUM>, and the sync controller <NUM> can be combined into another single logic entity.

The signal tracker <NUM> can be configured to track client- and server-side interaction signals 118a and 118b (<FIG>). In certain embodiments, the signal tracker <NUM> can be configured to periodically poll the mobile app <NUM> (<FIG>) and the proxy email server 106b for detection of any of the example interactions discussed above with reference to <FIG>. In other embodiments, the signal tracker <NUM> can be configured to receive the client- and server-side interaction signals 118a and 118b transmitted by, for instance, an interaction agent on the mobile app <NUM> and/or on the proxy email server 108b. Upon receiving a client- or server-side interaction signals 118a and 118b, the signal tracker <NUM> can optionally store a copy of the received signal in, for instance, the data store <NUM> and provide an indication to the interaction scorer <NUM> for further processing.

The interaction scorer <NUM> can be configured to assign an interaction score to an interaction indicated in the received client- and server-side interaction signals 118a and 118b. In one embodiment, an administrator (not shown) can provide user input <NUM> that defines values of the interaction score assigned. In other embodiments, the interaction scorer <NUM> can be configured to assign the interaction score based on historical values, frequency of the interaction type, or other suitable criteria. In at least some examples, the interaction scorer <NUM> can be configured to adjust any previously assigned interaction scores as a function of time, frequency, recency, or other suitable criteria. Thus, in certain instances, as time elapses, the assigned interaction score to a tracked interaction (e.g., user selects an email folder) can continuously decrease until reaching a floor value (e.g., zero) or continue to negative numbers without being limited by a floor value. Upon assigning the interaction score, the interaction scorer <NUM> can forward the assigned interaction score to the prioritization scores <NUM> for further processing.

The prioritization scorer <NUM> can be configured to derive an overall prioritization score based on the assigned interaction scores. In certain embodiments, at least some of the assigned interaction scores can have corresponding weights toward the overall prioritization score. As such, an administrator or other suitable entities can adjust the weights, for instance, as user input <NUM>, to emphasis importance of certain interaction signals. For example, an administrator may set higher weights for server-side interaction signals compared to client-side interaction signals 118a and 118b, or vice versa. In certain implementations, the prioritization scorer <NUM> can be configured to adjust the prioritization score in real time. As such, when an interaction signal is received, the prioritization scorer <NUM> can be configured to recalculate the prioritization score in response to receiving the interaction signal. In other implementations, the prioritization scorer <NUM> can be configured to adjust the prioritization score periodically or in other suitable manners. Upon obtaining the prioritization score, the prioritization scorer <NUM> can generate or update a priority record <NUM> corresponding to the folder 116b in the data store <NUM>.

The sync controller <NUM> can be configured to perform synchronization control for the folders 116b in the mirror electronic mailbox 113b. In certain embodiments, the sync controller <NUM> can be configured to implement different synchronization rules for individual folders 116b based on corresponding prioritization scores of these folders 116b. For example, the sync controller <NUM> can be configured to determine whether a prioritization score of a folder 116b exceeds a threshold. In response to determine that the prioritization score exceeds the threshold, the sync controller <NUM> can mark the folder 116b to be synchronized. Otherwise, the sync controller <NUM> can mark the folder 116b to be not synchronized. In another example, in response to determine that the prioritization score exceeds the threshold, the sync controller <NUM> can mark the folder 116b to be synchronized at a higher frequency (e.g., once an hour) than a frequency (e.g., once a day) for other folder 116bs with prioritization scores below the threshold. In further examples, the sync controller <NUM> can also be configured to sort the folder 116bs into a priority sequence according to the prioritization scores and instruct the email servers to synchronize the folders 116b in the mirror electronic mailbox 113b using the priority sequence. In yet further examples, the sync controller <NUM> can be configured to exclude or delay synchronization of folder s 116b that continue to experience operational difficulties, such as failure to synchronize, high processing workload, etc..

<FIG> are schematic diagrams illustrating synchronization control of file folders in accordance with embodiments of the disclosed technology. As shown in <FIG>, a first folder 116b and a second folder 116b' can have corresponding prioritization scores greater than a threshold while the third folder 116b" has a prioritization score that is below the threshold. As such, in certain implementations, the first and second folders 116b and 116b' can be marked as being synchronized while the third folder 116b" is marked as not to be synchronized. In other implementations, the first and second folders 116b and 116b' can be synchronized at a first frequency higher than a second frequency according to which the third folder 116b" is synchronized. In further implementations, the first and second folders 116b and 116b' can be sorted according to respective prioritization scores to generate a synchronization sequence according to which the first and second folders 116b and 116b' can be synchronized.

As shown in <FIG>, in further implementations, the first and second folders 116b and 116b' have respective prioritization scores higher than a first threshold while the third folder 116b" has a prioritization score lower than the first threshold. As such, the first and second folders 116b and 116b' can be marked as to be synchronized or synchronized at the first frequency while the third folder 116b" is marked as not to be synchronized or synchronized at a second frequency lower than the first frequency. As shown in <FIG>, upon determining that the first folder 116b has a prioritization score that is higher than a second threshold, the prioritization controller <NUM> (<FIG>) can mark the first folder 116b to be synchronized at a higher frequency than that of the second folder 116b'.

As shown in <FIG>, upon receiving another client- or server-side interaction signal 118a or 118b (<FIG>) corresponding to the third folder 116b", the prioritization controller <NUM> can recalculate the prioritization score of the third folder 116b". Upon determining that the new prioritization score is higher than the threshold, the prioritization controller <NUM> can mark the third folder 116b" as to be synchronized, to be synchronized at the first frequency, or sorting the folders 116b, 116b', and 116b" to place synchronization of the third folder 116b" ahead of the second folder 116b'.

<FIG> are flowcharts illustrating example processes of synchronization control of file folders in accordance with embodiments of the disclosed technology. Though aspects of the processes are described below in the context of the computing system <NUM> in <FIG>, in other embodiments, the processes may be implemented in other computing systems with additional and/or different components.

As shown in <FIG>, a process <NUM> can include receiving interaction signals at stage <NUM>. In certain embodiments, the interaction signals can include client-side interaction signals and/or server-side interaction signals such as those described above with reference to <FIG>. In other embodiments, the interaction signals can also include other suitable types of signals. The process <NUM> can then include updating a prioritization score of a folder corresponding to the received interaction signals at stage <NUM>. Example operations of updating the prioritization score are described in more detail below with reference to <FIG>. The process <NUM> can then include adjusting synchronization of folders in an electronic mailbox at stage <NUM>. Example operations of adjusting synchronization of folders are described in more detail below with reference to <FIG>.

As shown in <FIG>, operations of updating the prioritization score can include assigning an interaction score to a folder based on an interaction indicated in the received interaction signals at stage <NUM>. The operations can then include calculating or recalculating a prioritization score based on the assigned interaction score at stage <NUM>. Various examples of assigning an interaction score and calculating a prioritization score are described above with reference to <FIG>.

As shown in <FIG>, example operations of adjusting synchronization of folders can include a decision stage <NUM> to determine whether the calculated prioritization score exceeds a threshold. In response to determining that the calculated prioritization score exceeds the threshold, the operations can proceed to increasing a synchronization priority at stage <NUM>. Otherwise, the operations can proceed to decreasing the synchronization priority at stage <NUM>. Example techniques of increasing/decreasing synchronization priority based on the prioritization score are described above with reference to <FIG>.

<FIG> is a computing device <NUM> suitable for certain components of the computing system <NUM> in <FIG>. For example, the computing device <NUM> can be suitable for the host or proxy email server 106a and 106b or the client device <NUM> of <FIG>. In a very basic configuration <NUM>, the computing device <NUM> can include one or more processors <NUM> and a system memory <NUM>. A memory bus <NUM> can be used for communicating between processor <NUM> and system memory <NUM>.

Depending on the desired configuration, the processor <NUM> can be of any type including but not limited to a microprocessor (µP), a microcontroller (µC), a digital signal processor (DSP), or any combination thereof. The processor <NUM> can include one more level of caching, such as a level-one cache <NUM> and a level-two cache <NUM>, a processor core <NUM>, and registers <NUM>. An example processor core <NUM> can include an arithmetic logic unit (ALU), a floating-point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller <NUM> can also be used with processor <NUM>, or in some implementations memory controller <NUM> can be an internal part of processor <NUM>.

Depending on the desired configuration, the system memory <NUM> can be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.) or any combination thereof. The system memory <NUM> can include an operating system <NUM>, one or more applications <NUM>, and program data <NUM>. This described basic configuration <NUM> is illustrated by those components within the inner dashed line.

The computing device <NUM> can have additional features or functionality, and additional interfaces to facilitate communications between basic configuration <NUM> and any other devices and interfaces. For example, a bus/interface controller <NUM> can be used to facilitate communications between the basic configuration <NUM> and one or more data storage devices <NUM> via a storage interface bus <NUM>. The data storage devices <NUM> can be removable storage devices <NUM>, non-removable storage devices <NUM>, or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard-disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD), and tape drives to name a few. Example computer storage media can include volatile and nonvolatile, 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. The term "computer readable storage media" or "computer readable storage device" excludes propagated signals and communication media.

The system memory <NUM>, removable storage devices <NUM>, and non-removable storage devices <NUM> are examples of computer readable storage media. Computer readable storage media include, but 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 media which can be used to store the desired information, and which can be accessed by computing device <NUM>. Any such computer readable storage media can be a part of computing device <NUM>. The term "computer readable storage medium" excludes propagated signals and communication media.

The computing device <NUM> can also include an interface bus <NUM> for facilitating communication from various interface devices (e.g., output devices <NUM>, peripheral interfaces <NUM>, and communication devices <NUM>) to the basic configuration <NUM> via bus/interface controller <NUM>. Example output devices <NUM> include a graphics processing unit <NUM> and an audio processing unit <NUM>, which can be configured to communicate to various external devices such as a display or speakers via one or more A/V ports <NUM>. Example peripheral interfaces <NUM> include a serial interface controller <NUM> or a parallel interface controller <NUM>, which can be configured to communicate with external devices such as input devices (e.g., keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (e.g., printer, scanner, etc.) via one or more I/O ports <NUM>. An example communication device <NUM> includes a network controller <NUM>, which can be arranged to facilitate communications with one or more other computing devices <NUM> over a network communication link via one or more communication ports <NUM>.

The network communication link can be one example of a communication media. Communication media can typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and can include any information delivery media. A "modulated data signal" can be 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 can include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), microwave, infrared (IR) and other wireless media. The term computer readable media as used herein can include both storage media and communication media.

The computing device <NUM> can be implemented as a portion of a small-form factor portable (or mobile) electronic device such as a cell phone, a personal data assistant (PDA), a personal media player device, a wireless web-watch device, a personal headset device, an application specific device, or a hybrid device that include any of the above functions. The computing device <NUM> can also be implemented as a personal computer including both laptop computer and non-laptop computer configurations.

Claim 1:
A method of synchronization control of folders (<NUM>) containing emails (<NUM>) in a first electronic mailbox (113b) hosted by a first server (106b) and folders (<NUM>) in a second electronic mailbox (113a) hosted on a second server (106a) in a computing system (<NUM>), the first electronic mailbox (113b) being replicated from the second electronic mailbox (113a), wherein the method comprising:
receiving data representing signals indicating
an interaction of a user (<NUM>) with an email (<NUM>) in a first folder (116b) in the first electronic mailbox (113b) or an interaction of a user with the first folder (116b) directly; and
a failure of performing a synchronization operation between a second folder (116b') in the first electronic mailbox (113b) at the first server (106b) and a corresponding folder (116a) of the second electronic mailbox (113a) at the second server (106a); and
upon receiving the interaction signals,
calculating a prioritization score corresponding to each of the first and second folders (<NUM>) based on the interaction and failure indicated in the received signals, wherein calculating the prioritization score corresponding to each of the first and second folders (<NUM>) based on the interaction and failure indicated in the received signals includes:
assigning a first score to the interaction of the first folder (116b) and a second score to the failure corresponding to the second folder (116b'); and
deriving a first prioritization score by summing the assigned first score with other scores assigned to additional interactions or failures corresponding to the first folder (116b); and
deriving a second prioritization score by summing the assigned second score with further scores assigned to additional interactions or failures corresponding to the second folder (116b');
performing a comparison of the calculated prioritization scores of the first and second folders (<NUM>); and
based on the performed comparison, synchronizing the first folder (116b) at the first electronic mailbox (113b) hosted at the first server (106b) with another corresponding folder at the second electronic mailbox (113a) hosted at the second server (106a) according to a first synchronization rule and the second folder (116b') at the first electronic mailbox (113b) with the corresponding folder at the second electronic mailbox (113a) according to a second synchronization rule different than the first synchronization rule.