IP Library Granted Patent US 10,360,536
Granted Patent B2
US 10,360,536 · App. 15/667,827 · Granted Jul 23, 2019

Implementing a consistent ordering of operations in collaborative editing of shared content items

Inventors: Rian Hunter (San Francisco, CA); Alex Zhai (San Francisco, CA)
Assignee: Dropbox, Inc.
G06Q10/101G06F17/2288G06F17/24H04L65/4015H04L67/10
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,360,536
App. No.
15/667,827
Granted
Jul 23, 2019
Kind
B2
Abstract

Systems, methods, and computer-readable storage media for ordering editing operations in collaborative editing of shared content items. The content management system can receive an edit operation from a first client for a content item that is shared for collaborative editing between the first client and a second client. In response to receiving the operation, the system can send an update to the first client including a previous operation received from the second client prior to receiving the operation from the first client, wherein the update can instruct the first client to perform a transform operation to transform a parameter of the operation according to an effect of the previous operation received from the second client. The system can then receive a result of the transform operation from the first client and update the shared content item based on the previous operation and the result of the transform operation.

Claims (41)

1. A computer-implemented method comprising:

receiving at a synchronized content management system from an application associated with the synchronized content management system on a first device, first edit operations for a first copy of a shared content item stored on the first device;

receiving from an application associated with the synchronized content management system on a second device, second edit operations for a second copy of the shared content item stored on the second device, wherein the first and second edit operations comprise concurrent collaborative edits of the shared content item, the first and second edit operations having a corresponding position and a unique identifier associated with each edit operation, and wherein the synchronized content management system synchronizes changes to the first copy of a shared content item and the second copy of the shared content item;

instructing the first and second devices to perform respective transform operations based on an ordered list of edit operations received from the application associated with the synchronized content management system on the first device and the application associated with the synchronized content management system on the second device, at the synchronized content management system;

adjusting, via the synchronized content management system, the second edit operation received from the application associated with the synchronized content management system on the second device and assigning a new position to the second edit operation from the second device; and

sending, via the synchronized content management system to the application associated with the synchronized content management system on the second device, the first edit operation from the first device along with instructions to update the position for the second edit operation from the second device and instructions to perform the respective transform operations based on the adjustment.

2. The method of claim 1 , wherein the first copy of the shared content item and the second copy of the shared content item are shared for real-time editing by the first device and the second device.

3. The method of claim 1 , wherein the first edit operation and second edit operation includes at least the ability to perform an action and reverse the action.

4. The method of claim 1 , wherein the synchronized content management system stores the ordered list of edit operations received from the first device and the second device.

5. The method of claim 1 , wherein the synchronized content management system stores the ordered list of edit operations received from the first device and the second device, and wherein the synchronized content management system analyzes the ordered list of the edit operations to determine when a received operation must be transformed according to a respective transform operation.

6. The method of claim 1 , wherein the synchronized content management system assigns each unique identifier to a respective edit operation to define an ordering of the edit operations based on when the respective edit operation is received at the synchronized content management system in relation to other edit operations.

7. The method of claim 1 , wherein the received first edit operations for the first copy of the shared content item stored on the first device includes edits from a native application and the received second edit operations for the second copy of the shared content item stored on the second device includes edits from a native application.

8. The method of claim 1 , further comprising:

receiving results of the respective transform operations; and

updating the shared content item based on the results of the respective transform operations.

9. A system comprising:

a processor; and

a non-transitory computer-readable storage medium associated with a synchronized content management system and having stored therein processor-executable instructions for causing the processor to:

receiving at a synchronized content management system from an application associated with the synchronized content management system on a first device, first edit operations for a first copy of a shared content item stored on the first device;

receiving from an application associated with the synchronized content management system on a second device second edit operations for a second copy of the shared content item stored on the second device, wherein the first and second edit operations comprise concurrent collaborative edits of the shared content item, the first and second edit operations having a corresponding position and a unique identifier associated with each edit operation, and wherein the synchronized content management system synchronizes changes to the first content item and the second content item;

instructing the first and second devices to perform respective transform operations based on an ordered list of edit operations received from the application associated with the synchronized content management system on the first device and the application associated with the synchronized content management system on the second device, at the synchronized content management system;

adjusting, via the synchronized content management system, the second edit operation received from the application associated with the synchronized content management system on the second device and assigning a new position to the second edit operation from the second device; and

sending, via the synchronized content management system to the application associated with the synchronized content management system on the second device, the first edit operation from the first device along with instructions to update the position for the second edit operation from the second device and instructions to perform the respective transform operations based on the adjustment.

10. The system of claim 9 , wherein the first copy of the shared content item and the second copy of the shared content item are shared for real-time editing by the first device and the second device, wherein editing includes at least the ability to perform an action and reverse the action.

11. The system of claim 9 , wherein the synchronized content management system stores the ordered list of edit operations received from the first device and the second device.

12. The system of claim 9 , wherein the synchronized content management system stores the ordered list of edit operations received from the first device and the second device, and wherein the processor analyzes the ordered list of the edit operations to determine when a received edit operation must be transformed according to a respective transform operation.

13. The system of claim 9 , wherein the processor assigns each unique identifiers to a respective edit operation to define an ordering of the edit operations based on when the respective edit operation is received at the synchronized content management system in relation to other edit operations.

14. The system of claim 9 , further comprising:

the received first edit operations for the first copy of the shared content item stored on the first device includes edits from a native application and the received second edit operations for the second copy of the shared content item stored on the second device includes edits from a native application.

15. A non-transitory computer-readable storage medium associated with a synchronized content management system and having stored therein processor-executable instructions for causing a least one processor to:

receive at a synchronized content management system from an application associated with the synchronized content management system on a first device, first edit operations for a first copy of a shared content item stored on the first device;

receive from an application associated with the synchronized content management system on a second device second edit operations for a second copy of the shared content item stored on the second device, wherein the first and second edit operations comprise concurrent collaborative edits of the shared content item, the first and second edit operations having a corresponding position and a unique identifier associated with each edit operation, and wherein the synchronized content management system synchronizes changes to the first content item and the second content item;

instruct the first and second devices to perform respective transform operations based on an ordered list of edit operations received from the application associated with the synchronized content management system on the first device and the application associated with the synchronized content management system on the second device, at the synchronized content management system;

adjust, via the synchronized content management system, the second edit operation received from the application associated with the synchronized content management system on the second device and assigning a new position to the second edit operation from the second device; and

send, via the synchronized content management system to the application associated with the synchronized content management system on the second device, the first edit operation from the first device along with instructions to update the position for the second edit operation from the second device and instructions to perform the respective transform operations based on the adjustment.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the first copy of the shared content item and the second copy of the shared content item are shared for real-time editing by the first device and the second device, wherein editing includes at least the ability to perform an action and reverse the action.

17. The non-transitory computer-readable storage medium of claim 15 , further storing processor-executable instructions for causing the synchronized content management system to store the ordered list of edit operations received from the first device and the second device.

18. The non-transitory computer-readable storage medium of claim 15 , further storing processor-executable instructions for causing the synchronized content management system to store the ordered list of edit operations received from the first device and the second device, and to analyze the ordered list of the edit operations to determine when a received edit operation must be transformed according to a respective transform operation.

19. The non-transitory computer-readable storage medium of claim 15 , further storing processor-executable instructions for causing the processor to assign each unique identifier to the edit operations to define an ordering of the respective edit operations based on when the respective edit operation is received at the synchronized content management system in relation to other edit operations.

20. The system of claim 15 , further comprising:

the received first edit operations for a first copy of the shared content item stored on the first device includes edits from a native application and the second edit operations for the second copy of the shared content item stored on the second device includes edits from a native application.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2017
From: HUNTER, RIAN; ZHAI, ALEX
To: DROPBOX, INC.
Reel/Frame 043201/0095 →
Continuity (2)
Continuation 13795417 · Mar 12, 2013
Related Publication 20170330149A1 · Nov 16, 2017