Real-Time Collaboration in a Hosted Word Processor
Abstract
A computer-implemented method for coordinating documents between computer systems includes identifying, on a computing device, changes made by a user to a document having a model stored on the computing device, with corresponding models stored on a remote client and a server system; generating from the identified changes, one or more mutations that describe the changes and a one or more locations that correspond to positions in the model where the changes are to be provided; receiving one or more mutations from the server system and transforming the generated mutations using the received mutations; and updating the model stored on the computing device using the transformed mutations.
Claims
exact text as granted — not AI-modified1 . A computer-implemented method for coordinating documents between computer systems, the method comprising:
downloading, from a document server system and to a client computing device, a document model that defines a word processing document that is in an initial state; displaying on the client computing device a visual representation of the word processing document that is in the initial state; receiving changes to the word processing document from a user of the first client computing device, the changes including edits that add or remove characters from the word processing document; receiving downloads of data from the document server system that define changes made to the document model by other users editing the word processing document; substantially simultaneously with receiving the downloads of data from the document server system, uploading to the document server system information that defines the changes to the word processing document from the user; applying, on the client computing device, rules for resolving conflicts between changes made by the user and changes made by the other users, the rules being complementary to rules applied on devices of the other users and on the document server system, and displaying a representation of the document model, as edited by the user and the other user, based on the applied rules, on a display of the first client computing device.
2 . The computer-implemented method of claim 1 , further comprising presenting, via a web browser, an editing surface, and displaying the representation of the document model on the editing surface, based upon application of the rules for resolving conflicts between changes made by the user and changes made by the other users.
3 . The computer-implemented method of claim 2 , further comprising generating a synthetic cursor over the editing surface and causing the synthetic cursor to move in coordination with character inputs from the user.
4 . The computer-implemented method of claim 1 , wherein the document model comprises a one-dimensional character string that includes content for the displayed representation of the document, and a style map that has pointers to indexed locations in the character string and that represents formatting for the characters in the character string.
5 . A computer-implemented method for coordinating documents between computer systems, the method comprising:
downloading, from a document server system and to a first client computing device, a document model that defines a word processing document; receiving changes to the document from a user of the first client computing device; substantially simultaneously downloading changes to the document model made other users who are editing the word processing document, and uploading information that defines the changes to the document from the user; and applying, on the client computing device, rules for resolving conflicts between changes made by the user and changes made by the other users, the rules being complementary to rules applied on device of the other users and the document server system, and displaying a representation of the document model, based on the applied rules, on a display of the first client computing device.
6 . The computer-implemented method of claim 5 , further comprising uploading, to the computer server system and with particular uploads of changes to the document from the first user, information that identifies to the computer server system a last upload made by the first client computing device.
7 . The computer-implemented method of claim 5 , further comprising presenting, via a web browser, an editing surface, and displaying a representation of the model on the editing surface, based upon application of the rules for resolving conflicts between changes made by the user and changes made by the other users.
8 . The computer-implemented method of claim 7 , further comprising determining locations for characters on the editing surface by writing characters into an HTML span element and identifying sizes for the written characters.
9 . The computer-implemented method of claim 7 , further comprising generating a synthetic cursor over the editing surface and moving the cursor in response to character inputs from the user.
10 . The computer-implemented method of claim 9 , further comprising showing synthetic cursors over an editing surface, the cursors indicating current locations of cursors for the other users.
11 . The computer-implemented method of claim 5 , wherein uploading information that defines the changes to the document from the user is triggered by determining that the user has made a keystroke to enter a character on the first client computing device.
12 . The computer-implemented method of claim 5 , wherein the document model comprises a one-dimensional character string that includes content for the displayed representation of the document, and a style map that has pointers to indexed locations in the character string and that represents formatting for the characters in the character string.
13 . The computer-implemented method of claim 5 , further comprising periodically receiving a model reset signal and an updated model definition from the document server system, and replacing a current model on the first client computing device with the updated model definition.
14 . The computer-implemented method of claim 5 , further comprising caching at the first client computing device mutations made to the model by the user and, upon receiving one or more mutations from the document server system, applying conflict resolution rules between the cached mutations and the received mutations.
15 . A computer-implemented system for coordinating electronic document changes between computer systems, comprising:
a document model stored on a first computing device, the document model defining content and formatting for an electronic document and corresponding to document models stored on a document server system and on one or more other computing devices; an interface arranged to receive, from the document server system, mutations in the document model made with the other computing devices, and to transmit, to the document server system, mutations in the document model made with the first computing device; a layout engine in communication with the document model store on the first computing device, and programmed to render the document model as a displayed representation of the document model on the first computing device; a mutation resolver on the first computing device programmed to apply rules to reconcile the mutations made with the other computing devices, with mutations made with the first computing device, the rules corresponding to rules on the document server system and the other devices in a manner that each of the first computing device, the other computing devices, and the document server system apply the rules to optimistically converge on a matching document model after edits have been made at the first computing device and the other computing devices.
16 . The computer-implemented system of claim 15 , wherein the document model stored on the first computing device and the other computing devices comprises a one-dimensional character string that includes content for a document, and a style map having pointers to indexed locations in the character string.
17 . The computer-implemented system of claim 15 , further comprising the document server system, the document server system being programmed to periodically send to the first computing device and the other computing devices a model reset signal and, in coordination, an updated model definition for the for use in refreshing document models at each of the first computing device and the other computing devices.
18 . The computer-implemented system of claim 15 , further comprising a mutation cache that stores mutations waiting to be uploaded to the document server system, and wherein the mutation resolver is programmed to operate on mutations received from the document server system by comparing them to mutations in the mutation cache.
19 . The computer-implemented system of claim 15 , wherein the first computing device is programmed to render the document model by generating a document object model (DOM) from the document model.
20 . The computer-implemented system of claim 15 , further comprising a web browser arranged to execute on the first computing device and programmed to generate an editing surface and display a representation of the document model on the editing surface using output from the mutation resolver.
21 . The computer-implemented system of claim 20 , wherein the layout engine is programmed to determine locations for characters on the editing surface by writing characters into an HTML span element and identifying sizes for the written characters.
22 . The computer-implemented system of claim 15 , wherein the document model comprises a one-dimensional character string that includes content for the displayed representation of the document, and a style map that has pointers to indexed locations in the character string and that represents formatting for the characters in the character string.
23 . One or more tangible, computer-readable media having recorded thereon instructions, that when executed by one or more processors, perform operations comprising:
downloading, from a document server system and to a first client computing device, a document model that defines a word processing document; receiving changes to the document from a user of the first client computing device; substantially simultaneously downloading changes to the document model made other users who are editing the word processing document, and uploading information that defines the changes to the document from the user; and applying, on the client computing device, rules for resolving conflicts between changes made by the user and changes made by the other users, the rules being complementary to rules applied on device of the other users and the document server system, and displaying a representation of the document model, based on the applied rules, on a display of the first client computing device.
24 . The tangible, computer-readable media of claim 23 , wherein the operations further comprise uploading, to the computer server system and with particular uploads of changes to the document from the first user, information that identifies to the computer server system a last upload made by the first client computing device.
25 . The tangible, computer-readable media of claim 23 , wherein the operations further comprise presenting, via a web browser, an editing surface, and displaying a representation of the model on the editing surface, based upon application of the rules for resolving conflicts between changes made by the user and changes made by the other users.
26 . The tangible, computer-readable media of claim 23 , wherein the document model comprises a one-dimensional character string that includes content for the displayed representation of the document, and a style map that has pointers to indexed locations in the character string and that represents formatting for the characters in the character string.
27 . The tangible, computer-readable media of claim 23 , wherein the operations further comprise caching at the first client computing device mutations made to the model by the user and, upon receiving one or more mutations from the document server system, applying conflict resolution rules between the cached mutations and the received mutations.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.