Realtime synchronized document editing by multiple users
First Claim
1. A method comprising:
- storing a document as an ordered set of revision records;
receiving, from a first client, a representation of a first changeset specifying one or more changes relative to a first version of the document;
receiving, from a second client, a representation of a second changeset specifying one or more changes relative to the first version of the document;
identifying a revision record for the document, wherein the 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 third changeset based on a merge of the first changeset and the second changeset, and the revision record;
adding a new revision record that includes the third changeset to an end of the ordered set of revision records;
computing a first follows changeset from the first changeset and the second changeset;
computing a second follows changeset, different from the first follows changeset, from the first changeset and the second changeset;
transmitting the first follows changeset to the first client; and
transmitting the second follows changeset to the second client;
wherein a second version of the document is determined by applying the first and second follows changesets at the first and second clients respectively.
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.
106 Citations
15 Claims
-
1. A method comprising:
-
storing a document as an ordered set of revision records; receiving, from a first client, a representation of a first changeset specifying one or more changes relative to a first version of the document; receiving, from a second client, a representation of a second changeset specifying one or more changes relative to the first version of the document; identifying a revision record for the document, wherein the 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 third changeset based on a merge of the first changeset and the second changeset, and the revision record; adding a new revision record that includes the third changeset to an end of the ordered set of revision records; computing a first follows changeset from the first changeset and the second changeset; computing a second follows changeset, different from the first follows changeset, from the first changeset and the second changeset; transmitting the first follows changeset to the first client; and transmitting the second follows changeset to the second client; wherein a second version of the document is determined by applying the first and second follows changesets at the first and second clients respectively. - View Dependent Claims (2, 3, 4, 5)
-
-
6. An apparatus comprising:
-
a processor; and a memory to store computer program instructions, the computer program instructions when executed on the processor cause the processor to perform operations comprising; storing a document as an ordered set of revision records; receiving, from a first client, a representation of a first changeset specifying one or more changes relative to a first version of the document; receiving, from a second client, a representation of a second changeset specifying one or more changes relative to the first version of the document; identifying a revision record for the document, wherein the 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 third changeset based on a merge of the first changeset and the second changeset, and the revision record; adding a new revision record that includes the third changeset to an end of the ordered set of revision record; computing a first follows changeset from the first changeset and the second changeset; computing a second follows changeset, different from the first follows changeset, from the first changeset and the second changeset; transmitting the first follows changeset to the first client; and transmitting the second follows changeset to the second client; wherein a second version of the document is determined by applying the first and second follows changesets at the first and second clients respectively. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A non-transitory computer readable medium storing computer program instructions, which, when executed on a processor, cause the processor to perform operations comprising:
-
storing a document as an ordered set of revision records; receiving, from a first client, a representation of a first changeset specifying one or more changes relative to a first version of the document; receiving, from a second client, a representation of a second changeset specifying one or more changes relative to the first version of the document; identifying a revision record for the document, wherein the 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 third changeset based on a merge of the first changeset and the second changeset, and the revision record; adding a new revision record that includes the third changeset to an end of the ordered set of revision records; computing a first follows changeset from the first changeset and the second changeset; computing a second follows changeset, different from the first follows changeset, from the first changeset and the second changeset; transmitting the first follows changeset to the first client; and transmitting the second follows changeset to the second client; wherein a second version of the document is determined by applying the first and second follows changesets at the first and second clients respectively. - View Dependent Claims (12, 13, 14, 15)
-
Specification