IP Library Granted Patent US 9,875,221
Granted Patent B1
US 9,875,221 · App. 13/967,727 · Granted Jan 23, 2018

Real-time document sharing and editing

Inventors: Steve Newman (Portola Valley, CA); Sam Schillace (Portola Valley, CA); Claudia Carpenter (Los Altos, CA)
Assignee: GOOGLE LLC
G06F17/2288
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 9,875,221
App. No.
13/967,727
Filed
Aug 15, 2013
Granted
Jan 23, 2018
Kind
B1
Art Unit
2176
USPC
715/255
Abstract

Methods, systems and apparatus, including computer program products, for real-time document sharing and editing. In one aspect, a method includes comparing a first user's and a second user's changes to a document, the document being edited by the first user and the second user concurrently; and notifying the first user of a conflicting change and content of any conflicting change to the document made by the first user but not made to the document because of the conflicting change. In another aspect, a method includes recording a saved position of a cursor of a user editing a client-side copy of a document; receiving an update to the document and generating an updated client-side copy of the document; using the saved position to determine an updated position of the cursor; and displaying to the user the updated client-side copy of the document with the cursor displayed at the updated position.

Claims (59)

1. A method comprising:

automatically receiving, at a server, a first set of changes to a first version of a document from a first device and a second set of changes to a second version of the document from a second device in periodic time intervals, respectively, wherein one of the first version and the second version is an earlier version and another version of the first version and the second version is a later version, and wherein the first version and second version are being concurrently open for editing;

determining a common version of the document between the first version of the document including the first set of changes from the first device, the second version of the document including the second set of changes from the second device, and a current version of the document at the server;

identifying a set of overlapping changes within the first set of changes and the second set of changes using the common version of the document, the first set of changes and the second set of changes;

normalizing the overlapping changes between the first version of the document and the second version of the document;

comparing the normalized overlapping changes to determine which of the overlapping changes conflict;

sending a notification message to the first device and the second device about the conflicting changes pertaining to the document stored at the server before any of the conflicting changes are incorporated into the document stored at the server;

merging non-conflicting changes into the document; and

presenting the document for display to the first device and the second device.

2. The method of claim 1 , wherein the notification message comprises changes that were not merged into the document.

3. The method of claim 1 , wherein the normalizing overlapping changes comprises applying a set of rules to components of the plurality of versions of the document so that differences that do not affect an appearance of the document are not identified as changes.

4. The method of claim 1 , wherein the automatically receiving further comprises receiving a document identifier and a version identifier for each of the first version of the document and the second version of the document.

5. The method of claim 1 , further comprising:

recording a position of a cursor for each of a plurality of users associated with the plurality of versions of the document by recording one or more types of one or more HTML tags being traversed to reach the position of the cursor.

6. The method of claim 1 , wherein the notification message is presented to the plurality of users in a format for each user from the plurality of users to copy or paste the notification message.

7. The method of claim 1 , wherein the server provides the first version of the document to display at the first device and the second version of a document to display at the second device.

8. The method of claim 1 , wherein the server provides an indication to the first user device that a first user and a second user are simultaneously editing the document from a first user device and a second user device.

9. A non-transitory computer storage medium storing instructions that, when executed by a data processing apparatus, cause the data processing apparatus to perform operations comprising:

automatically receiving, at a server, a first set of changes to a first version of a document from a first device and a second set of changes to a second version of the document from a second device in periodic time intervals, respectively, wherein one of the first version and the second version is an earlier version and another version of the first version and the second version is a later version, and wherein the first version and second version are being concurrently open for editing;

determining a common version of the document between the first version of the document including the first set of changes from the first device, the second version of the document including the second set of changes from the second device, and a current version of the document at the server;

identifying a set of overlapping changes within the first set of changes and the second set of changes using the common version of the document, the first set of changes and the second set of changes;

normalizing the overlapping changes between the first version of the document and the second version of the document;

comparing the normalized overlapping changes to determine which of the overlapping changes conflict;

sending a notification message to the first device and the second device about the conflicting changes pertaining to the document stored at the server before any of the conflicting changes are incorporated into the document stored at the server;

merging non-conflicting changes into the document; and

presenting the document for display to the first device and the second device.

10. The non-transitory computer storage medium of claim 9 , wherein the notification message comprises changes that were not merged into the document.

11. The non-transitory computer storage medium of claim 9 , wherein the normalizing overlapping changes comprises applying a set of rules to components of the plurality of versions of the document so that differences that do not affect an appearance of the document are not identified as changes.

12. The non-transitory computer storage medium of claim 9 , wherein the automatically receiving further comprises receiving a document identifier and a version identifier for each of the first version of the document and the second version of the document.

13. The non-transitory computer storage medium of claim 9 , further comprising:

recording a position of a cursor for each of a plurality of users associated with the plurality of versions of the document by recording one or more types of one or more HTML tags being traversed to reach the position of the cursor.

14. The non-transitory computer storage medium of claim 9 , wherein the notification message is presented to the plurality of users in a format for each user from the plurality of users to copy or paste the notification message.

15. 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:

automatically receiving, at a server, a first set of changes to a first version of a document from a first device and a second set of changes to a second version of the document from a second device in periodic intervals, respectively, wherein one of the first version and the second version is an earlier version and another version of the first version and the second version is a later version, and wherein the first version and second version are being concurrently open for editing;

determining a common version of the document between the first version of the document including the first set of changes from the first device, the second version of the document including the second set of changes from the second device, and a current version of the document at the server;

identifying a set of overlapping changes within the first set of changes and the second set of changes using the common version of the document, the first set of changes and the second set of changes;

normalizing the overlapping changes between the first version of the document and the second version of the document;

comparing the overlapping changes to determine which of the overlapping changes conflict;

sending a notification message to the first device and the second device about the conflicting changes pertaining to the document stored at the server before any of the conflicting changes is are incorporated into the document stored at the server;

merging non-conflicting changes into the document; and

presenting the document for display to the first device and the second device.

16. The apparatus of claim 15 , wherein the notification message comprises changes that were not merged into the document.

17. The apparatus of claim 15 , wherein the normalizing overlapping changes comprises applying a set of rules to components of the plurality of versions of the document so that differences that do not affect an appearance of the document are not identified as changes.

18. The apparatus of claim 15 , wherein the automatically receiving further comprises receiving a document identifier and a version identifier for each of the first version of the document and the second version of the document.

19. The apparatus of claim 15 , further comprising:

recording a position of a cursor for each of a plurality of users associated with the plurality of versions of the document by recording one or more types of one or more HTML tags being traversed to reach the position of the cursor.

20. The apparatus of claim 15 , wherein the notification message is presented to the plurality of users in a format for each user from the plurality of users to copy or paste the notification message.

21. A method for real-time document sharing and editing, comprising:

automatically receiving, at a the server storing a central copy of a document, a first set of changes to a first version of the document from a first user at a first device and a second set of changes to a second version of the document from a second user at a second device, in periodic time intervals, respectively, wherein one of the first version and the second version is an earlier version and another one of the first version and the second version is a later version, and wherein the first version and second version are being concurrently open for editing;

determining a common version of the document between the first version of the document including the first set of changes from the first device, the second version of the document including the second set of changes from the second device, and the central copy of the document;

identifying a set of overlapping changes within the first set of changes and the second set of changes using the common version of the document, the first set of changes and the second set of changes;

identifying a set of overlapping changes between the first set of changes and the second set of changes;

normalizing the identified set of overlapping changes between the first version of the document and the second version of the document;

determining conflicting changes among the identified set of overlapping changes;

sending a notification message to the first device or the second device about the conflicting changes pertaining to the document stored at the server before any of the conflicting changes is incorporated into the central copy of the document stored at the server;

receiving a user confirmation of at least one of the conflicting changes from the first user or the second user; and

updating the central copy of document at the server based on the at least one of the conflicting changes.

Assignments (2)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2013
From: NEWMAN, STEVE; SCHILLACE, SAM; CARPENTER, CLAUDIA
To: GOOGLE INC.
Reel/Frame 031018/0803 →
Continuity (2)
Continuation 13875371 · May 2, 2013
Division 11506181 · Aug 16, 2006