This application relates to the field of computer networking and cloud computing.
The notion of “cloud computing” has become mainstream in recent years. Large data centers that are accessible to almost any computer or mobile device offer unique advantages for storing and sharing information.
Seeing the cloud as a large opportunity to capture customers many companies have been started to focus solely on building large clouds. Many established technology companies have begun to offer cloud services to their users.
Users want to be able to easily store, access, and share documents from all of the devices they use whether they be desktop computers, laptop computers, mobile phones, tablets, TV set top boxes, gaming consoles and other computing devices. The large number of devices, each based on different hardware, running different operating systems, and running different applications, make the task of building cloud services that can share document very challenging.
Many operators of large clouds find it easier—and in many cases more sensible from a business strategy standpoint—to make their cloud operate with only certain types of equipment, or operating systems. The cloud providers often offer their users a “silo”—a cloud that works with a limited number of devices, operating systems or applications. In some cases this eases the cost of operating these clouds, and in many cases makes the use of the clouds by users easier—provided the users mainly use devices of the type that the cloud operator wants them to.
Siloed clouds, however, present several challenges to users. First, users that happen to own a variety of devices, not all of which work in any single cloud, face real challenges sharing files between the devices. Second, even if a user happens to own devices that all share the same cloud, that user will face challenges to sharing his or her information with colleagues whose device operate best with a different cloud. Third, even a user that has devices that all operate within a single cloud may have multiple applications that run on those devices and not all of those applications may work with the single cloud they have decided to use.
Users can “solve” the above problems by connecting to multiple clouds, using multiple applications, or even carrying multiple devices. This adds enormous complexity to the user's use of their devices, applications, and clouds and if the user has numerous documents that she is sharing in the cloud the process of maintaining all of the relationships between devices, applications, documents and clouds becomes unwieldy.
Example of clouds in operation include GoogleDrive by Google, iCloud by Apple, SkyDrive from Microsoft, DropBox from DropBox, Inc, Box from Box, Inc. and many others. A few examples of applications that restrict which clouds they can operate with include GoogleDocs from Google and iWork from Apple.
Attempts to somehow “unite” the various cloud “silos” are very difficult for a variety of reasons. First, in many cases cloud operators do not want their clouds to interoperate with other clouds or with devices, operating systems, or applications that the cloud operator does not control or with whom the cloud operator does not have appropriate business relationships. Second, in many cases, cloud operators do not allow applications other than the ones that they approve to be able to write to documents stored in their clouds. This “cloud write” restriction makes it extremely hard for a “cross cloud” application to be written that can bridge the gap between clouds. Third, if the “cloud write” restrictions did not exist, schemes that have been proposed for sharing between clouds, devices, and applications have proven to be extremely complex involving elaborate token passing systems that are a challenge to implement. Finally, differences in document and file formats between different similar applications offered by different vendors have proven a challenge to synchronize. While many companies are able to translate file formats between different applications some of the new applications actually do not even use a file format to save their information but instead save the information in a database or in some format that is opaque to the outside world making format conversion difficult or impossible.
These limitations, and others, have prevented the creation of a system that interconnects dissimilar clouds, applications, documents, and devices in a seamless way that keeps all document synchronized and which allows users to simply edit and share their documents without the need to be aware of arbitrary barriers between these various entities.
Users faced with this problem are forced to share documents by exporting them from one cloud to another every time that they want to edit the documents or send them to a colleague. Another way users move documents to others or even between their own devices is to “self-email” them—email them to their own email account and then use the email account to retrieve the document on the other device. In addition to being inconvenient, self-emailing wastes network bandwidth and email storage. It also can result in an explosion in the number of version of a document that exist making document synchronization very labor intensive.
What is needed is a solution to the problem of interconnection of clouds, applications, documents, and devices in a comprehensive, efficient, scalable, and easy to use manner that is transparent to the user. Also, there is a need to eliminate the requirement for complex token-passing schemes and results in modest transfers of data between clouds and devices thereby reducing the load on network architectures.
Described herein are embodiments including a method comprising: detecting, within a first computer process in a multitasking environment, one or more first changes in a first data structure stored in a first digital storage medium which is part of a first digital device; wherein the first data structure comprises at least a portion of a first user-editable document corresponding to a multi-cloud document identifier; wherein the one or more first changes are made within a second computer process which is different from the first computer process; and wherein the first digital device further comprises a data transmitter in connection via a network with a mesh cloud server; and sending (A) the multi-cloud document identifier and (B) a first representation of the one or more first changes, to the mesh cloud server via the data transmitter over the network; wherein the mesh cloud server comprises a computer processor, a data receiver configured to receive the first representation, an intermediary digital storage medium, and a database comprising one or more records linking the multi-cloud document to unique identifiers of one or more user-editable documents including the first user-editable document.
In another embodiment, there is described a method comprising: receiving, in a transmission over a network from a first digital device to a mesh cloud server, (A) a multi-cloud document identifier and (B) a first representation of one or more first changes in a first data structure stored in a first digital storage medium which is part of the first digital device, wherein the first data structure comprises at least a portion of a first user-editable document corresponding to the multi-cloud document identifier, and wherein the mesh cloud server comprises: a first database record linking the multi-cloud document identifier to a unique identifier of the first user-editable document; a second database record linking the multi-cloud document identifier to a unique identifier of a second user-editable document; converting the first representation into a second representation of one or more second changes to be made in a second data structure which comprises at least a portion of the second user-editable document; and sending the second representation to a second digital device comprising a second digital storage medium that comprises the second data structure.
Various additional embodiments, including additions and modifications to the above embodiments, are described herein or would be apparent to a person working in this field.
The accompanying drawings, which are incorporated into this specification, illustrate one or more exemplary embodiments of the inventions disclosed herein and, together with the detailed description, serve to explain the principles and exemplary implementations of these inventions. One of skill in the art will understand that the drawings are illustrative only, and that what is depicted therein may be adapted, based on this disclosure, in view of the common knowledge within this field.
In the drawings:
Various example embodiments of the present inventions are described herein. Those of ordinary skill in the art will understand that the following detailed description is illustrative only and is not intended to be in any way limiting. Other embodiments of the present inventions will readily suggest themselves to such skilled persons having the benefit of this disclosure, in light of what is known in the relevant arts, the provision and operation of information systems for such use, and other related areas.
Not all of the routine features of the exemplary implementations described herein are shown and described. In the development of any such actual implementation, numerous implementation-specific decisions must be made in order to achieve the specific goals of the developer, and that these specific goals will vary from one implementation to another and from one developer to another. Moreover, such a developmental effort might be complex and time-consuming, but would nevertheless be a routine undertaking of engineering for those of ordinary skill in the art having the benefit of this disclosure.
Throughout the present disclosure, relevant terms are to be understood consistently with their typical meanings established in the relevant art.
Embodiments in the present disclosure may allow a user who has created or is editing a document (e.g., a spreadsheet, word processing document, presentation or other) using a particular application (e.g., a particular spreadsheet program or a web browser) on a particular device (e.g., a desktop computer, laptop computer, smart phone, tablet, TV set top box, gaming console or other device) to create and manage the document as what is described herein as a “multi-cloud document.” A multi-cloud document may consist of multiple copies of a document that reside on any or all of the devices and clouds being used by that user (or by another user with appropriate permissions) but with each copy residing on each device or cloud being synchronized to all others such that in one embodiment, the set of copies of the document may behave effectively as one document. In addition to propagating changes to some or all of the copies of the multi-cloud document, the format and structure (“native structure”) of each copy may be maintained in the format and structure required for the application or applications (“native applications”) that are expected to access each copy of the document.
The set of entities that are of interest—clouds, devices, applications, and documents, etc.—may be viewed as a “mesh” or matrix that represents all of the possible meaningful combinations of these entities. Described herein are systems that interconnect all of these entities. The term “mesh” refers to an implementation of all of the useful interconnections, which may be performed in a transparent fashion. The mesh may consist of several pieces of software running on the user devices and running on a cloud service. These pieces of software all may interact to create a system of sharing and synchronization that is referred to here as simply “the mesh.”
If the user, or another user with appropriate permissions, edits any of the copies of the multi-cloud document on any of the devices or clouds on which a multi-cloud copy resides, the changes resulting from the edit may be propagated to some or all of the other copies of the document on the other clouds and devices. The changes may be propagated in such a way that the native structure of each copy of the document is essentially maintained such that any native applications that may operate on the device or cloud can access the document without any special knowledge of the document. In addition to content, format, and structure, versions and access rights for the multi-cloud document may be maintained across all clouds and devices.
No distinction need be made on the native storage approach of each document. In many document storage systems, documents are stored as files that reside on a hierarchical file structure consisting of “folders” or subdirectories. In other cases, the document is stored as multiple file fragments that are associated to each other. In still other cases, the document is not stored as a file at all but consists of entries in one or more databases that are associated with one another. Embodiments described herein may operate regardless of the native storage approach of the document.
An embodiment of the system may comprise software running both in the devices (“mesh clients”) and in an intermediate cloud (“mesh cloud”). The user may install a mesh client in each device on which he or she wants to create and access multi-cloud documents. Mesh clients so installed may automatically connect to and communicate with the mesh cloud.
Mesh clients can monitor API (application programming interface) activity on the device on which they are loaded. Events that can be monitored include application startup, document create, document open, and reads and writes of the document to local storage. In addition, the volatile memory of native applications that have opted into the mesh may be monitored. The mesh client may capture data that is written by the native application to the application's volatile memory. The mesh client also may observe behavior of the application using d-trace, s-trace, and/or x-trace capabilities of the local operating system, or other tracing functions or facilities provided by the operating system or by the hardware.
The mesh client may report to the mesh cloud the changes made in native application volatile memory that were made by the native application as well as the tracing function information that the mesh client collected. The mesh cloud may use this information to develop the format and structure of the change to the document such that it can be sent to the other mesh clients so that they may properly update the local copy of the document in the correct format.
Edits made by users other than the owner of the document may be controlled by the owner of the document and may be coherently applied to all copies of the multi-cloud document on all registered devices and clouds.
The embodiments described herein represent an improvement over prior systems.
Symbols common to these diagram are set forth in the following list:
In step 205, MC1 communicates the changes to F1 that were contained in M1 to the Mesh Cloud bypassing the minimum “fragment” of F1 that has changed. MC1 may also pass other metadata to the Mesh Cloud that further describes the change contained in the fragment of F1. In particular, at some point during the connection between MC1 and the Mesh Cloud, MC1 may communicate a possibly unique multi-cloud document identifier that identifies F1. MC1 may also communicate a possibly unique device identifier that tells the Mesh Cloud which device MC1 resides on. The Mesh Cloud may keep track of which Devices and Applications are editing copies of F1. It may keep track of this information using one or more databases. (Reference to a “database” herein may equivalently refer to a single database or multiple databases.) In step 206, therefore, the Mesh Cloud may determine which devices and Mesh Clients need to be updated, and may perform a file format conversion on the file fragment that it received from MC1 in step 205 above. This file format conversion may be any such conversion known in the art, or it may preferably be conversion methods described herein.
The mesh cloud may handle management and synchronization of files across devices and applications by performing the following operations:
1. Upon startup the Mesh Cloud may initialize all previous state information including known devices, applications, files as well as pending file updates.
In step 207, The Mesh Cloud determines that the copy of F1 at D1 requires an update and transmits the required changes to F1 contained in the fragment that was translated in step 206 above to MC2. In step 208, MC2 receives the edit information (fragment and optional metadata) from MC1 and causes it to be written into the M2 memory region which A2 is using to hold F1 in D1 using techniques known in the art or the inventive techniques described herein. In step 209, A2 detects the change to its memory image. In step 210, A2 displays the changed information to the user U1. In step 211, A2 causes the change to be written to the copy of F1 contained in C2 at F1C2.
In step 307, D1 is turned on, A1 begins running, and U1 uses A1 to open an instance of F1. In step 308, the Mesh Cloud detects that D1, A1, and MC1 are running. It transmits the fragment to MC1. In step 309, MC1 updates F1 by injecting the fragment into M1. In step 310, the change to M1 causes A1 to update F1C1 at C1 and, in step 311, to update A1's screen thereby making the change apparent to U1.
In step 404, the change in M1 is detected by MC1, which in step 405 transmits the change fragment (and may transmit metadata) to the Mesh Cloud. The Mesh Cloud may then translate or convert the fragment from one file format to another. In step 406, the Mesh Cloud transmits the change to MC2. In step 407, MC2 then injects the change into the memory region M2, which in step 408 causes A2 to transmit the change to F1C2 at C2. Finally, in step 409, both A1 and A2 may update the screen image of the application making the change visible to U1.
When the mesh client needs to inject parameters into an Application running on a Device, it may in one embodiment perform the following steps as illustrated in
The mesh client may determine the size of the buffer TeleXi to ensure it is large enough to hold the parameters at 65. If it is not, the mesh client may obtain an additional buffer from the OS resource handler and nest it to the buffer TeleXi at step 604. In the final step, the mesh client may copy the contents of 65 into TeleXi (step 605) and, if necessary, into the nested buffer (step 606).
Thus, in
Although the functions implemented by both spreadsheet applications are similar, the name of the corresponding function on each application is very likely different as is the exact format of information that is passed to each function.
In order for the mesh cloud and/or mesh client to convert attributes from one application to another, it should understand how the functions of one application map into the similar functions of the other. The mesh cloud and/or mesh client therefore may include an application, referred to herein as the Radar Graph Mapping Function, that creates this mapping information and saves it for use by the mesh client and mesh cloud software components.
In
The Radar Graph Matching function may create a catalog of all mappings of all functions between all of the similar apps with which the mesh cloud can operate. This catalog may be used in conjunction with the information obtained as described in
For the mesh client to update an application App2 based on changes that occurred in an application App1 it may perform the following operations:
To perform Steps 3 and 4 above, the Data Format Discovery Function 81 may perform the following steps: In step 801, for each function 82 of App2, it may obtain the address of the function's internal buffer, for example using dTrace as described herein. In step 802 it may then record the contents of the internal buffer of the function. It may then call the App2 function 82 according to its normal calling sequence requesting that it make a change. In step 803, it may then read the new contents of the internal memory buffer and compare it to the original content. It then may call the function again telling it to undo the last operation so that the data in the internal buffer is returned to its prior state.
By comparing the contents of information obtain in steps 802 and 803, above the Data format Discovery Function 81 may determine what the format of the information in the internal buffer is. This may then be used when it writes data to the buffer as explained in the description that accompanies
A1 may communicate to the user U1 by updating the screen, and synchronizes the open file to the cloud C1. It also maintains a copy of the file in its local memory M1. Within M1 is shown a function buffer B1 which is a buffer for input parameters for one of A1's functions. When the user U1 makes a change to a file that the application A1 has open (using a keyboard and mouse, or a touch screen, for example) the following operations may occur: In step 901, the user performs and edit operation on the file. In step 902, A1 updates the image of the file in M1. In step 904, A1 updates the image of the file in the cloud C1. In step 903, A1 may also update the screen of user U1 such that the edit that the user made is reflected on the screen.
The right side of
Except for the addition of the mesh client MC, and the operations it performs, the other elements are the same as for the left side of the diagram. When mesh client MC receives an update to the multi-cloud document which application A2 has open on the Device it may cause A2 to update the user U2's screen and the cloud C2 copy of the multi-cloud document through the following steps: In step 911, an update to a portion of the multi-cloud document comes to the mesh client MC from the Mesh Cloud. In step 912, the mesh client MC, using in this embodiment the Radar Graph Mapping described herein, locates the appropriate application function buffer B2 in memory M1, and writes the update to that buffer. In step 913, the application A2 receives the update. In step 914, A2 updates the screen of user U2 such that the update is properly reflected on the screen. Finally, in step 915, A2 updates the instance of the file in cloud C2. In this way, the application A2 accepts the change that came from the Mesh Cloud, and causes application A2 to update the user and the cloud C2 copy of the document.
The sections that follow describe the Mesh Cloud in structural and functional terms. First, a “mesh data plane” is described whose function is to move data from mesh clients, through the mesh cloud, to other mesh clients, and ultimately to the native applications and documents. Second a “mesh control plane” is described that manages non-content related information that needs to be shared between components of the mesh.
When a native application running on a device that is part of the mesh changes the content of a document, the mesh data plane, which operates across all clients and the mesh cloud, ensures that all the updates occur correctly across all clouds, all devices, all applications, and all platforms.
When an edit of a document occurs on a device that has a mesh client present on it and for which, in one embodiment, the user has opted that document type into the mesh, the mesh client on the device may perform the following operations:
First, the mesh client running on the device where the edit occurs may detect and capture the native application edit to the document:
Second, the mesh client may report the edit to the document to the mesh cloud. In addition to sending the edit information itself, the mesh client may also report any API (application programming interface) or trace activity associated with the edit.
Third, the mesh cloud may receive and processes the edit information and API activity information reported by the mesh client.
Fourth, each mesh client then may receive the edit information from the mesh cloud:
The mesh “control plane” may be designed to handle version control, edits from multiple platforms, edits from non-owners and access control between users.
Exemplary embodiments have been described with reference to specific configurations. The foregoing description of specific embodiments and examples of the invention have been presented for the purpose of illustration and description only, and although the invention has been illustrated by certain of the preceding examples, it is not to be construed as being limited thereby.
This application claims priority to U.S. Provisional Application No. 61/659,404, entitled “System and Method for the Creation of, Automatic Synchronization of, and Access to Multi-Cloud Documents that Reside Across Dissimilar Clouds, Devices, and Operating Systems and that are Accessed by Multiple Dissimilar Applications,” filed 13 Jun. 2012, the entire disclosure of which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61659404 | Jun 2012 | US |