Realtime synchronized document editing by multiple users
First Claim
1. A server system comprising:
- at least one processor;
memory; and
one or more programs, wherein the one or more programs are stored in the memory andconfigured to be executed by the one or more processors, the one or more programs includinginstructions for;
storing a document as an ordered set of revision records, wherein the document is accessible to a plurality of client computer systems including a first client and a second client;
receiving, from the first client, a representation of a first changeset specifying one or more changes relative to a first version of the document;
receiving, from the second client, a representation of a second changeset specifying one or more changes relative to the first version of the document;
identifying a respective revision record for the document, wherein the respective revision record corresponds to one or more changes that were made to the document prior to receiving the representation of the first changeset and the representation of the second changeset;
generating a translated changeset;
based on a merge of the first changeset and the second changeset, and one or more revision records including the respective revision record;
adding a new revision record that includes the translated changeset to an end of the ordered set of revision records;
transmitting a first representation of the translated changeset to the first client; and
transmitting a second representation of the translated changeset to the second client, wherein each of the first changeset and the second changeset further comprises;
a first length of a version of the document before a change is applied;
a second length of a next version of the document subsequent to the change; and
an array indicating which characters from the version of the document are retained, the characters represented by indices in the version of the document, and which characters are being added to the next version of the document.
3 Assignments
0 Petitions
Accused Products
Abstract
Collaborative editing of electronic documents in realtime is provided. A host serves a client code over a network to a plurality of clients that each employ a browser to run the client code. The client code revises the text document locally in response to user input, frequently sends those edits to the host, receives updates from the other clients via the host, and revises the local text document accordingly. Each client, in some embodiments, stores three variables, one for edits not yet reported to the host, one for edits reported by not yet acknowledged, and one for the text document as modified by the acknowledged edits. Updates from the other clients are applied to the three variables according to certain rules. A composition of the three variables yields a version of the text document. The host keeps records of which edits were introduced by which client.
122 Citations
19 Claims
-
1. A server system comprising:
-
at least one processor; memory; and one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for; storing a document as an ordered set of revision records, wherein the document is accessible to a plurality of client computer systems including a first client and a second client; receiving, from the first client, a representation of a first changeset specifying one or more changes relative to a first version of the document; receiving, from the second client, a representation of a second changeset specifying one or more changes relative to the first version of the document; identifying a respective revision record for the document, wherein the respective revision record corresponds to one or more changes that were made to the document prior to receiving the representation of the first changeset and the representation of the second changeset; generating a translated changeset;
based on a merge of the first changeset and the second changeset, and one or more revision records including the respective revision record;adding a new revision record that includes the translated changeset to an end of the ordered set of revision records; transmitting a first representation of the translated changeset to the first client; and transmitting a second representation of the translated changeset to the second client, wherein each of the first changeset and the second changeset further comprises; a first length of a version of the document before a change is applied; a second length of a next version of the document subsequent to the change; and an array indicating which characters from the version of the document are retained, the characters represented by indices in the version of the document, and which characters are being added to the next version of the document. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method comprising:
-
at a server system having one or more processors and memory storing one or more programs that when executed by the one or more processors cause the server system to perform the method, the method comprising; storing a document as an ordered set of revision records, wherein the document is accessible to a plurality of client computer systems including a first client and a second client; receiving, from the first client, a representation of a first changeset specifying one or more changes relative to a first version of the document; receiving, from the second client, a representation of a second changeset specifying one or more changes relative to the first version of the document; identifying a respective revision record for the document, wherein the respective revision record corresponds to one or more changes that were made to the document prior to receiving the representation of the first changeset and the representation of the second changeset; generating a translated changeset;
based on the a merge of first changeset and the second changeset, and one or more revision records including the respective revision record;adding a new revision record that includes the translated changeset to an end of the ordered set of revision records; transmitting a first representation of the translated changeset to the first client; and transmitting a second representation of the translated changeset to the second client, wherein each of the first changeset and the second changeset further comprises; a first length of a version of the document before a change is applied; a second length of a next version of the document subsequent to the change; and an array indicating which characters from the version of the document are retained, the characters represented by indices in the version of the document, and which characters are being added to the next version of the document. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by a computer system with one or more processors, cause the computer system to:
-
store a document as an ordered set of revision records, wherein the document is accessible to a plurality of client computer systems including a first client and a second client; receive, from the first client, a representation of a first changeset specifying one or more changes relative to a first version of the document; receive, from the second client, a representation of a second changeset specifying one or more changes relative to the first version of the document; identify a respective revision record for the document, wherein the respective revision record corresponds to one or more changes that were made to the document prior to receiving the representation of the first changeset and the representation of the second changeset; generate a translated changeset;
based on a merge of the first changeset and the second changeset, and one or more revision records including the respective revision record;add a new revision record that includes the translated changeset to an end of the ordered set of revision records; transmit a first representation of the translated changeset to the first client; and transmit a second representation of the translated changeset to the second client, wherein each of the first changeset and the second changeset further comprises; a first length of a version of the document before a change is applied; a second length of a next version of the document subsequent to the change; and an array indicating which characters from the version of the document are retained, the characters represented by indices in the version of the document, and which characters are being added to the next version of the document. - View Dependent Claims (19)
-
Specification