IP Library Granted Patent US 10,678,999
Granted Patent B2
US 10,678,999 · App. 14/989,417 · Granted Jun 9, 2020

Real-time collaboration in a hosted word processor

Inventors: Micah Lemonik (Great Neck, NY); Olga Sergeyevna Saviano (Jersey City, NJ); Janani R. Ravi (Jersey City, NJ); Nicholas Cooper (Annandale, AU); Alexey Kalinichenko (New York, NY); John Day-Richter (Denver, CO)
Assignee: Google LLC
G06F40/197G06F40/14G06F40/186H04L67/02H04L67/42
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,678,999
App. No.
14/989,417
Granted
Jun 9, 2020
Kind
B2
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 (60)

1. A computer-implemented method for coordinating documents between computer systems, the method comprising:

maintaining, by a server system, a master copy of an electronic document;

providing, by the server system, a first client copy of the electronic document to a first client computing device, wherein the first client copy of the electronic document is associated with a first user account of a plurality of user accounts, and wherein the plurality of user accounts have access to respective client copies of the electronic document;

receiving, from the first client computing device and by the server system, a first batch of mutations and a first revision identifier indicative of a latest revision number of the first client copy of the electronic document that has been synchronized with the master copy of the electronic document at the server system;

adding the first batch of mutations to a queue of pending mutations;

identifying, by the server system and based on the first revision identifier, a record of mutations that have been received from other user accounts of the plurality of user accounts and that have been received since the latest revision number of the first client copy of the electronic document has been synchronized with the master copy of the electronic document at the server system;

transforming, by the server system, the first batch of mutations from the queue of pending mutations against mutations of the record of mutations to create a first group of transformed mutations;

updating, by the server system, the master copy of the electronic document with the first group of transformed mutations at the server system; and

sending, by the server system, a confirmation message to the first client computing device indicating that the first batch of mutations have been synchronized with the master copy of the electronic document and that the first revision identifier is to be updated to a second revision identifier.

2. The method of claim 1 , further comprising:

sending the first group of transformed mutations at the server system to a second client computing device associated with a second user account of the plurality of user accounts.

3. The method of claim 1 , further comprising:

receiving, from a second client computing device and by the server system, a second batch of mutations associated with a second client copy of the electronic document, wherein a first change from the first batch of mutations and a second change from the second batch of mutations include conflicting edits to a same part of the electronic document.

4. The method of claim 3 , further comprising:

identifying a set of conflict resolution scenarios including a first conflict resolution scenario and a second conflict resolution scenario relating to the conflicting edits, wherein:

the first conflict resolution scenario transforms the first change to conform with the second change, and

the second conflict resolution scenario transforms the second change to conform with the first change; and

sending, to the first client computing device, a message presenting the set of conflict resolution scenarios.

5. The method of claim 3 , further comprising:

determining that the first change has a higher priority than the second change.

6. The method of claim 5 , further comprising:

rejecting the second change to the master copy of the electronic document; and

synchronizing the second client copy with the master copy of the electronic document.

7. A non-transitory computer-readable medium storing instructions, that responsive to execution by a computer processor, cause the computer processor to:

maintain a master copy of an electronic document at a server system;

provide a first client copy of the electronic document to a first client computing device, wherein the first client copy of the electronic document is associated with a first user account of a plurality of user accounts, and wherein the plurality of user accounts have access to respective client copies of the electronic document;

receive, from the first client computing device, a first batch of mutations and a first revision identifier indicative of a latest revision number of the first client copy of the electronic document that has been synchronized with the master copy of the electronic document at the server system;

add the first batch of mutations to queue of pending mutations;

identify, based on the first revision identifier, a record of mutations that have been received from other user accounts of the plurality of user accounts and that have been received since the latest revision number of the first client copy of the electronic document has been synchronized with the master copy of the electronic document at the server system;

transform the first batch of mutations from the queue of pending mutations against mutations of the record of mutations to create a first group of transformed mutations;

update the master copy of the electronic document with the first group of transformed mutations at the server system; and

send a confirmation message to the first client computing device indicating that the first batch of mutations have been synchronized with the master copy of the electronic document and that the first revision identifier is to be updated to a second revision identifier.

8. The non-transitory computer-readable medium of claim 7 , the computer processor further to:

send the first group of transformed mutations to a second client computing device associated with a second user account to the plurality of user accounts.

9. The non-transitory computer-readable medium of claim 7 , the computer processor further to:

receive, from a second client computing device, a second batch of mutations associated with a second client copy of the electronic document, wherein a first change from the first batch of mutations and a second change from the second batch of mutations include conflicting edits to a same part of the electronic document.

10. The non-transitory computer-readable medium of claim 9 , the computer processor further to:

determine that the first change has a higher priority than the second change.

11. The non-transitory computer-readable medium of claim 10 , the computer processor further to:

reject the second change to the master copy of the electronic document.

12. The non-transitory computer-readable medium of claim 11 , the computer processor further to:

synchronize the second client copy with the master copy of the electronic document.

13. A system comprising:

a memory; and

a processor, coupled to the memory, the processor to:

maintain a master copy of an electronic document at a server system;

provide a first client copy of the electronic document to a first client computing device, wherein the first client copy of the electronic document is associated with a first user account of a plurality of user accounts, and wherein the plurality of user accounts have access to respective client copies of the electronic document;

receive, from the first client computing device, a first batch of mutations and a first revision identifier indicative of a latest revision number of the first client copy of the electronic document that has been synchronized with the master copy of the electronic document at the server system;

add the first batch of mutations to a queue of pending mutations;

identify, based on the first revision identifier, a record of mutations that have been received from other user accounts of the plurality of user accounts and that have been received since the latest revision number of the first client copy of the electronic document has been synchronized with the master copy of the electronic document at the server system;

transform the first batch of mutations from the queue of pending mutations against mutations of the record of mutations to create a first group of transformed mutations;

update the master copy of the electronic document with the first group of transformed mutations at the server system; and

send a confirmation message to the first client computing device indicating that the first batch of mutations have been synchronized with the master copy of the electronic document and that the first revision identifier is to be updated to a second revision identifier.

14. The system of claim 13 , the processor further to:

send the first group of transformed mutations to a second client computing device associated with a second user account to the plurality of user accounts.

15. The system of claim 13 , the processor further to:

receive, from a second client computing device, a second batch of mutations associated with a second client copy of the electronic document, wherein a first change from the first batch of mutations and a second change from the second batch of mutations include conflicting edits to a same part of the electronic document;

determine that the first change has a higher priority than the second change;

reject the second change to the master copy of the electronic document; and

synchronize the second client copy with the master copy of the electronic document.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2020
From: LEMONIK, MICAH; SAVIANO, OLGA SERGEYEVNA; RAVI, JANANI R.; COOPER, NICHOLAS; KALINICHENKO, ALEXEY; DAY-RICHTER, JOHN
To: GOOGLE LLC
Reel/Frame 053010/0792 →
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →
Continuity (4)
Continuation 13271682 · Oct 12, 2011
Continuation 13085325 · Apr 12, 2011
Provisional Application 61323275 · Apr 12, 2010
Related Publication 20160117298A1 · Apr 28, 2016