Abstract:
The present disclosure relates to systems and methods for context-aware adaptive computing. In one embodiment, the present disclosure includes a method comprising receiving a request at a first information handling system (IHS) to perform an application computation. The method also includes determining a user&#39;s context, the user operating the first IHS, and ascertaining a battery state of the first IHS. The method further includes allocating the application computation between the first IHS and a second IHS based at least on the user&#39;s context and the battery state of the first IHS. The present disclosure also includes associated systems and apparatuses.

Description:
TECHNICAL FIELD 
       [0001]    The present disclosure relates generally to information handling systems, and more particularly to systems and methods for context-aware adaptive computing. 
       BACKGROUND 
       [0002]    As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems. 
         [0003]    As the mobility of information handling systems increases, the need to address considerations associated with mobility also increases. 
       SUMMARY 
       [0004]    In one embodiment, the present disclosure includes a method comprising receiving a request at a first information handling system (IHS) to perform an application computation. The method also includes determining the user&#39;s context, the user operating the first IHS, and ascertaining a battery state of the first IHS. The method further includes allocating the application computation between the first IHS and a second IHS based at least on the user&#39;s context and the battery state of the first IHS. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]    A more complete understanding of the disclosed embodiments and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein: 
           [0006]      FIG. 1  illustrates an example of a variety of information handling systems with a variety of connections, in accordance with the present disclosure; 
           [0007]      FIG. 2  illustrates an example set of operations in accordance with the present disclosure; and 
           [0008]      FIG. 3  illustrates an alternative example set of operations in accordance with the present disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0009]    The present disclosure may relate to systems and methods for context-aware adaptive computing. For example, a user at a local information handling system may be request some application computation be performed. However, in some situations it may be beneficial to shift that computation burden to a remote information handling system rather than performing it at the local information handling system, for example, when the battery of the local information handling system is low. The local information handling system may perform an analysis to determine where, from a variety of options, the optimal location is to perform the application computation. For example and in no way limiting, the analysis may consider the battery state of the local information handling system and the context in which the user is using the information handling system and/or the application. 
         [0010]    For the purposes of this disclosure, an information handling system (IHS) may include any instrumentality or aggregate of instrumentalities operable to compute, calculate, determine, classify, process, transmit, receive, retrieve, originate, switch, store, display, communicate, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, or other purposes. For example, an information handling system may be a personal computer (e.g., desktop or laptop), tablet computer, mobile device (e.g., personal digital assistant (PDA) or smart phone), server (e.g., blade server or rack server), a network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include random access memory (RAM), one or more processing resources such as a central processing unit (CPU) or hardware or software control logic, ROM, and/or other types of nonvolatile memory. Additional components or the information handling system may include one or more disk drives, one or more network ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, touchscreen and/or a video display. The information handling system may also include one or more buses operable to transmit communication between the various hardware components. 
         [0011]    For the purposes of this disclosure, computer-readable media may include any instrumentality or aggregation of instrumentalities that may retain data and/or instructions for a period of time. Computer-readable media may include, without limitation, storage media such as a direct access storage device (e.g., a hard disk drive or floppy disk), a sequential access storage device (e.g., a tape disk drive), compact disk, CD-ROM, DVD, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), and/or flash memory; as well as communications media such as wires, optical fibers, microwaves, radio waves, and other electromagnetic and/or optical carriers; and/or any combination of the foregoing. 
         [0012]      FIG. 1  illustrates an example of a variety of information handling systems (IHSs) with a variety of connections. As shown in  FIG. 1 , IHS  110  may be a mobile IHS, for example, a tablet, smart phone, laptop, or some other IHS. When an application computation is requested, IHS  110  may perform an analysis to determine where to allocate the application computation to be performed, for example, whether the application computation should be offloaded to IHS  120  or  130  or should be performed locally at IHS  110 . 
         [0013]    IHS  110  may include a processor  112  communicatively coupled to a memory  114 , a connection device  116 , and a battery  118 . IHS  120  may include a processor  122  communicatively coupled to a memory  124  and a connection device  126 . IHS  130  may include a processor  132  communicatively coupled to a memory  134  and a connection device  136 . IHSs  110 ,  120 , and  130  may be in communication with each other via network  140 . 
         [0014]    A processor, for example, processors  112 ,  122 , and  132  may include any system, device, or apparatus configured to interpret and/or execute program instructions and/or process data, and may include, without limitation a microprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit (ASIC), or any other digital or analog circuitry configured to interpret and/or execute program instructions and/or process data. In some embodiments, a processor may interpret and/or execute program instructions and/or process data stored in a memory and/or another component of an information handling system. Although  FIG. 1  depicts information handling systems  110 ,  120 , and  130  as including one processor, information handling systems  110 ,  120 , and  130  may include any suitable number of processors. 
         [0015]    Memories  114 ,  124 , and  134  may be communicatively coupled to processors  112 ,  122 , and  132  respectively, and may include any system, device, or apparatus configured to retain program instructions and/or data for a period of time (e.g., computer-readable media). Memory may include random access memory (RAM), electrically erasable programmable read-only memory (EEPROM), a PCMCIA card, flash memory, magnetic storage, opto-magnetic storage, or any suitable selection and/or array of volatile or non-volatile memory that retains data after power to an information handling system is turned off. Although  FIG. 1  depicts IHSs  110 ,  120 , and  130  as including one memory  114 ,  124 , and  134  respectively, IHSs  110 ,  120 , and  130  may include any suitable number and variety of memories. 
         [0016]    Connection devices  116 ,  126 , and  136  may include any system, device, or apparatus configured to facilitate communication to or from an IHS. A connection device may include a modem, a network interface card (NIC), a wireless receiver and/or transmitter, an antenna, or other related devices to facilitate communication, or any combinations thereof. Although  FIG. 1  depicts IHSs  110 ,  120 , and  130  as including one connection device  116 ,  126 , and  136  respectively, IHSs  110 ,  120 , and  130  may include any suitable number and variety of connection devices. For example, IHS  110  may include a connection device configured to allow communication with a cellular network and a connection device configured to allow communication with a Wi-Fi or other wireless network. In some embodiments, this may be accomplished by a single connection device with multiple functionalities. 
         [0017]    Battery  118  may include any system, device, or apparatus configured to store electrochemical, electromechanical, or other forms of energy and may provide electrical energy to one or more components of IHS  110 . In some embodiments, battery  118  may be a rechargeable battery, meaning that its electrochemical energy may be restored by the application of electrical energy (e.g., a lead and sulfuric acid battery, nickel cadmium (NiCad) battery, nickel metal hydride (NiMH) battery, lithium ion (Li-ion) battery, lithium ion polymer (Li-ion polymer) battery, smart battery, or any combination thereof, or any other suitable battery). While IHS  110  is shown as only having a single battery, it will be appreciated that any number and combination of batteries may be used. Additionally, while IHSs  120  and  130  are not shown having a battery, they may include one or more batteries. Further, while IHS  110  is shown having battery  118 , IHS  110  may additionally include an additional or alternative power source, for example, solar cells, an electric plug (for example to allow IHS  110  to be plugged into an electrical outlet), or any other source of power to allow IHS  110  to operate, or any combination thereof. 
         [0018]    Battery  118  may have an associated battery state. This may indicate whether the battery is operational or defective, a degree of charge of the battery, a time until complete discharge of the battery, whether the battery is currently charging or not, whether the degree of charge is below a predetermined or critical threshold, or any combination thereof. For example, a current battery state of battery  118  may indicate that battery  118  is currently being used to power IHS  110 , that it is 57% charged, and that it will be completely discharged in six hours. An alternative battery state may indicate that IHS  110  is plugged into an electrical outlet so battery  118  is currently charging, that it is 58% charged, and that it will take four hours to fully charge battery  118 . As another example, the battery state may only indicate that battery  118  is below an ideal level. 
         [0019]    Network  140  may include any network and/or fabric configured to allow communication between IHSs  110 ,  120 , and  130 . Network  140  may be implemented as, or may be a part of, a storage area network (SAN), personal area network (PAN), local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a wireless local area network (WLAN), a virtual private network (VPN), a cellular network, an intranet, the Internet, or any other appropriate architecture or system that facilitates the communication of signals, data and/or messages (generally referred to as data), or any combinations thereof. Network  140  may transmit data using any storage and/or communication protocol, including without limitation, Fibre Channel, Frame Relay, Asynchronous Transfer Mode (ATM), Internet protocol (IP), other packet-based protocol, small computer system interface (SCSI), Internet SCSI (iSCSI), advanced technology attachment (ATA), serial ATA (SATA), advanced technology attachment packet interface (ATAPI), serial storage architecture (SSA), integrated drive electronics (IDE), and/or any combination thereof. Network  140  and its various components may be implemented using hardware, software, or any combination thereof. 
         [0020]    In some embodiments, network  140  may include a home network region  142 , an office network region  146 , and a cellular network region  144 . For example, IHS  110  and IHS  120  may be connected to a Wi-Fi router  143  providing access to home network region  142  of network  140 . As an alternative example, IHS  110  may be connected to cellular network region  144  of network  140  via one of service provider  145   a  or  145   b . Service providers  145   a  and  145   b  may provide different speeds of access to the same or a similar cellular network, or may provide access to different cellular networks, or may provide access to cellular network region  144  at a variety of locations, or any combinations thereof. IHS  130  may be connected to network  140  via access point  147  in office network region  146 . In some embodiments, office network  146  may be a secured network. While only a small number of routers, access points, and service providers may be shown, it will be appreciated that any number and/or variety of infrastructure may be utilized in the implementation of network  140 . Additionally, it will be appreciated that any number and/or variety of regions may be included in network  140 . 
         [0021]    One non-limiting example of how the IHSs may be connected may be that IHS  110  may be in communication with IHS  120  via a home-based Wi-Fi network. IHS  110  may be in communication with IHS  130  via a cellular network using 4G Long Term Evolution (LTE). IHS  120  may be in communication with IHS  130  via a VPN. 
         [0022]    In some embodiments, network  140  may include physical connections or close proximity wireless connections. For example, IHS  110  may be connected to IHS  120  via a universal serial bus (USB) cable or a BLUETOOTH® connection. 
         [0023]    IHS  110  may employ remote computing, but need not do so. For example, some portion of the computing requested at IHS  110  may be offloaded to a remote IHS like IHS  120  and/or  130 . Each of IHSs  110 ,  120 , and  130  may have an associated computing capability indicating the capacity and/or capability of that information handling system to perform computing tasks. This may be based on a variety of factors, for example, the number and speed of processors, the number of applications and/or operating systems running, the amount and type of memory available on the IHS, software compatibilities, software plug-ins, video capabilities, display capabilities, power level, or any combination thereof. 
         [0024]    Computing tasks or application computing may include any calculating, executing, processing, generating, modifying, coding, decoding, compressing, decompressing, displaying, translating, or combinations thereof utilized in conjunction with the use of an application, operating system, or other information handling system program. 
         [0025]    In some embodiments, IHS  110  may create and maintain a database of each IHS&#39;s computing capability in memory  114 . The database may be updated on a periodic basis or on the occurrence of a pre-determined event (for example, when a decision must be made as to what IHS should perform application computing, or when IHS  110  is powered on). 
         [0026]    In some embodiments, an application may be completely executed on a remote IHS (for example IHS  120  or  130 ) and resulting data or a display transmitted to a mobile IHS (for example IHS  110 ) and commands from the mobile IHS transmitted to the remote IHS for execution. In other embodiments, an application may be completely executed on the mobile IHS, with limited or no interaction with the remote IHS. In still other embodiments, the application computing may be divided between multiple IHSs. For example, when using a video-heavy application, the application may be processed at a remote IHS and an uncompressed video stream may be sent to the mobile IHS. Alternatively, the application may be processed and the video stream compressed and sent to the mobile IHS, and the video stream may be decompressed at the mobile IHS. Additionally, there may be varying levels of compression that may occur with a trade-off between size in video stream to be transmitted and loss in quality and/or processing required to decompress the video stream. Wherever the application computing is performed, there may be a computing cost associated with performing the application computing. This may include the power used by the IHS to perform the application computing, as well as the resource cost to perform the computing (for example, the processor cycle and/or memory blocks used to perform the application computing). 
         [0027]    In addition to the actual application computing, data may have to be located and utilized in conjunction with the application computing. For example, if the application computing is to be performed at a mobile IHS but the data to be used in the computing is stored at a remote IHS, the data must be transmitted to the mobile IHS before it can perform the application computing. In like manner, if the application computing is to be performed at the remote IHS but the data to be used in the computing is stored at the mobile IHS, the data must be transmitted to the remote IHS before the application computing may be performed. This may be referred to as a communication cost, and may include the power required to power a communication device to communicate data, as well as the communication resources to communicate the data (for example, the Wi-Fi bandwidth or cellular data that is transmitted or received). As described above, communication costs may also include the transmission and/or reception of data produced by the application computing. Using the example from above, a video stream may be created at the remote IHS which must be transmitted to the mobile IHS. 
         [0028]    When a user operates IHS  110 , that user may have a user context in which IHS  110  is being operated. This may include a variety of factors, including, but not limited to, the user&#39;s user style (for example, a power user, a knowledge worker, a professional nomad, a task worker, an institutional collaborator, a temporary user, or others), the user&#39;s habits and patterns of use, the connection IHS  110  has with network  140 , the connection IHS has with each of IHSs  120  and  130 , the application being used, the physical location of IHS  110 , or combinations thereof. 
         [0029]    A user style may be based on a generic or default set of typical requirements or usage for a particular category of user. For example, a power user may require a large amount of resources because of the heavy resource-utilizing application computing performed and the number and complexity of applications employed. As an alternative example, a task worker may require a lower amount of resources because the number and complexity of applications is low. As a further example, a professional nomad may require a medium level of resources, but may require a high level of connectivity and bandwidth because of the frequent travel the user may experience. The user style may be designated by the user themselves or may be designated by some other party, for example, a system administrator. Any number and variation of user styles may be used. In some embodiments, a user style may also correspond to a default application profile that may be transmitted to IHS  110  to be stored in memory  114  or some other storage device and updated and refined as a local application profile. IHS  110  may also store the user style. 
         [0030]    A user&#39;s habits and patterns of use may be stored or recorded as a local application profile. This may allow predictions to be made as to the style and frequency of a user&#39;s use of an IHS. For example, a particular user may check their email on their smart phone after waking up, not use their smart phone for an hour while they get ready, and then may use their smart phone continuously for an hour while they ride a train to work. The user may then stream videos during their lunch hour, and not use their smart phone again until the ride home. Saturday afternoons, the user may go for a run in a particular park and stream music from their smart phone while running Over time, patterns of use will emerge regarding the type of use (for example, business or personal), the type of application being used (for example, a web browser, a word processing program, or a software coding program), the location of use (for example, their home, their office, the train, the park), and combinations thereof. This information may be stored locally on a user&#39;s IHS as a local application profile. 
         [0031]    The connection between IHS  110  and network  140  may be a component of the user&#39;s context. For example, and in no way limiting, at a single location, a smart phone may be connected via a home Wi-Fi network, via a 4G LTE cellular connection, or via a 3G cellular connection. The connection may have an associated speed or bandwidth and latency for both upload and download. The connection may also have an associated bit rate, error rate, or any other of a variety of factors that may contribute to the quality of service of a connection. The location of IHS  110  may also be determined in some embodiments based on the type of connection. For example, if IHS  110  is connected to a home Wi-Fi network, the location of IHS  110  is the same as the home Wi-Fi network. As an alternative example, if IHS  110  is connected to a cellular 4G LTE network, the nearest cellular tower may provide an approximate location of IHS  110 . In some embodiments, a global positioning system (GPS), triangulation, or some other means or method may be used to determine the location of IHS  110 . 
         [0032]    The connection between IHS  110  and each of IHSs  120  and  130  may be a component of the user&#39;s context. As non-limiting examples of connections between the IHSs, IHS  110  may be connected to IHS  130  through a VPN, or a secure connection, or IHS  110  may be connected to IHS  120  through an unsecured Wi-Fi network. Alternatively, IHS  110  may be connected to IHS  120  via a BLUETOOTH® connection or a USB cable. 
         [0033]    The application being used may be part of the user&#39;s context. For example, a user may seek to utilize a web browser, a word processing program, a database program, a spreadsheet program, a computer-assisted design (CAD) program, or any other of a variety of applications. Each application may have an associated set of application requirements. This may indicate any of a minimum or suggested operating system, processor, graphic processor, memory, disk space, software or software components, or any combination thereof. In some embodiments, not all applications to be utilized may run natively on IHS  110 . 
         [0034]      FIG. 2  illustrates an example set of operations to be performed. At operation  210  an information handling system may receive a request at a local IHS to perform an application computation. This may include launching an application that was not previously running on the local IHS, performing a particular task in a running application, or any other application computation. At operation  220 , the user&#39;s context is determined. As described above, the user&#39;s context may be based on a variety of factors, any combination of which may be included at operation  220 . 
         [0035]    At operation  230 , the available computation capabilities may be determined. The local IHS may recall its own computation capabilities and receive the computation capabilities of the alternative IHS. This may be performed each time an application computation is requested, or this may be periodically updated. The local IHS may maintain a database reflecting this information. 
         [0036]    At operation  240 , the battery state of the local IHS may be ascertained. As described above, this may include a variety of factors. At operation  250 , the connection between the IHS and a network may be modified. For example, if a user is currently not connected to a network or is connected through a slow connection, the connection may be created or modified to utilize an alternative connection. This may be done to optimize the application computation. An example description of modifying the connection may be described in application Ser. No. 13/604,906, incorporated herein by reference in its entirety. 
         [0037]    At operation  250 , the application computation is allocated between the IHS and an alternative IHS. The allocation at operation  250  may be based on a variety of factors and considerations, including but not limited to, the user context (for example, any of user style, the user&#39;s habits and patterns, the connection of the IHS with a network, the connection of the IHS with the alternative IHS, the application being used, and the location of the IHS), the battery state, a security policy, and the location of data to be used in the application computation. Some factors favor locally performing the application computation. For example and in no way limiting, a high energy state (for example, when the IHS is connected to an electrical socket or has a high battery charge), the application being available on the IHS, a low connectivity speed, a high cost of connectivity, and data required for the application computation being available at the IHS may all favor allocating the application computation to the IHS. As an alternative example, a low cost of connectivity, a low power communication means, a high resource computation, the application not being available on the IHS, and data required for the application computation only being available at the alternative IHS may all favor allocating the application computation to the alternative IHS. This may allow an IHS to adaptively determine where an application computation will be allocated. 
         [0038]    In some embodiments, the allocation may be based on optimizing battery life for the local IHS. For example, if a communication cost in battery power will exceed the computation cost in battery power, the application computation may be allocated to the local IHS. Alternatively, if the communication cost is less than the computation cost in battery power, the application computation may be allocated to the remote IHS. In some embodiments, the battery life may be optimized subject to certain qualifications. For example, certain multi-media processing may be allocated to the local IHS for a particular application, but the remainder of application computations may be allocated to the remote IHS. 
         [0039]    In some embodiments, a security policy may be location-based relative to the IHS and/or the data. Such a policy may prevent the transmission of data to or from an IHS based on certain aspects of the user context, for example, the location of the user. As a non-limiting example, there may be a security policy in place that secure data will not be sent to Iran for an application computation. If the user operating the local IHS is physically located in Iran and data needed for the application computation is located in the United States near the alternative IHS, the security policy may dictate that the application computation be performed at the alternative IHS rather than at the local IHS. This may be the case even if other factors may favor allocating the local IHS to perform the application computation such that all else being equal, if the same application computation were requested while the user was in the United States, it would be performed locally. 
         [0040]    At operation  260 , alternative application computations may be performed at a different IHS than where the application computation has been allocated. For example, if the application computation has been allocated to the alternative IHS, some related or associated alternative application computations may be performed at the local IHS. In some embodiments, the local IHS may perform multi-media processing, ADOBE FLASH® processing, OPEN GL® execution, DIRECTX® execution, web browsing processing (for example, hyper text markup language (HTML) processing), JAVA® processing, voice over internet protocol (IP) (VOIP) processing, video over IP processing, other associated tasks, or any combinations thereof. This may facilitate an increased user experience for some situations. For example, a user&#39;s web browsing experience may be enhanced by allowing local processing of ADOBE FLASH® elements, or a user&#39;s video conference may provide higher quality video and audio experience when executed locally. 
         [0041]    While operations  210 - 270  are shown in a linear fashion, it will be appreciated that these steps may be done in a different order, done simultaneously, or some steps completely omitted. For example,  230 ,  250 , or  270  may all be omitted. Alternatively, operations  220 ,  230 ,  240 , and  250  may be done in any order. As another example, operation  230  may be performed before operation  210 . 
         [0042]      FIG. 3  illustrates an alternative example set of operations in accordance with the present disclosure. At operation  310 , a default application profile may be received at a local IHS as a local application profile. For example, the local IHS may receive a default application profile from an alternative IHS, the default application profile based on a user style of the user operating the IHS. 
         [0043]    At operation  320 , a request may be received for an application computation. At operation  330 , the local application profile may be updated to reflect the request for an application computation at operation  320 . The local application profile, when updated, may reflect what the application computation requested, what application (if any) was involved, the date and time of the request, the computing capability change, the location of the IHS when the request occurred, or any other information beneficial in predicting the use patterns of the user. This information may be stored in a memory of the local IHS, or some other storage device. In addition to being performed after operation  320 , operation  330  may be performed at other times to update the local application profile. For example, operation  330  may be periodically performed to update what applications are running at certain times throughout a day or week. In some embodiments, rather than proceeding to operation  340 , the process may repeatedly cycle through operations  320  and  330 , and will only occasionally proceed on to operations  340  and/or  350 . 
         [0044]    At operation  340 , the local application profile may be transmitted from the local IHS. For example, the local application profile may be transmitted to the alternative IHS such that the alternative IHS may modify and refine the default application profile. In some embodiments, this information may be transmitted anonymously. This may only be done periodically, for example, once per month or once every three months. In some embodiments, this may be an optional feature that a user may opt into. For example, upon initialization, a user may be asked if they are willing to periodically transmit their local application profile to refine the default application profile. 
         [0045]    At operation  350 , patterns of use of the user may be predicted based on the local application profile. For example, algebraic equations including a variable for a future event (for example, a request for an application computation) may be arranged based on the previous use reflected in the local application profile. The future event variable may then be solved for. 
         [0046]    While operations  310 - 350  are shown in a linear fashion, it will be appreciated that these steps may be done in a different order, done simultaneously, or some steps completely omitted. For example, any of operations  310  and  340  may be omitted. Alternatively, operations  320 ,  330 ,  340 , and  350  may be done in any order. As another example, operation  350  may be performed before or simultaneously with operation  340 . As another example, operation  350  may be performed after operation  330 , and then the process may proceed to return to operation  320 . 
         [0047]    In no way limiting, and merely by way of illustration, two examples are provided of how an application computation may be allocated. In one example, a user may want to run AutoCAD® from home from a work laptop. The user&#39;s AutoCAD® files may be stored at a cloud-based system at work. When the user launches AutoCAD®, the cloud-based AutoCAD® instance may be launched as it is next to their data and the communication costs of remotely running the application computation may be less than the computation cost coupled with the communication cost of retrieving the data. When the user is back in the office, when they launch AutoCAD® it may launch directly from their laptop as the laptop may now be plugged in and have a high bandwidth connection to access their AutoCAD® data. In a second example, before a user leaves for a flight, they may launch an email application from a tablet. The tablet may determine from the user&#39;s calendar that the user will be in flight shortly and so may need a mobile email application that allows an offline mode for email. Rather than launching a cloud-based instance of Outlook®, the tablet may instead launch the mobile email application. When the user connects at night from their hotel, the tablet may launch the cloud-based instance of Outlook®. 
         [0048]    While a variety of examples have been provided and described, it will be appreciated that none of the examples is intended to be limiting. Rather, the examples are provided merely for illustrative purposes to provide assistance in understanding the present disclosure. 
         [0049]    Although the present disclosure has been described in detail, it should be understood that various changes, substitutions, and alterations can be made hereto without departing from the spirit and the scope of the disclosure as defined by the appended claims.