Implementing a consistent ordering of operations in collaborative editing of shared content items
First Claim
1. A computer-implemented method comprising:
- receiving at a server of a synchronized content management system, edit operations from a plurality of clients, the edit operations comprising collaborative edits of a shared content item, the edit operations applying to the shared content item that is shared for concurrent collaborative editing between the plurality of clients including at least a first client and a second client, the edit operations having a corresponding position and a unique identifier associated with each edit operation, wherein a native application provides the plurality of clients with an interface for concurrent viewing and editing the shared content item, and wherein the synchronized content management system synchronizes changes to content items in a local folder on each of the plurality of clients and each of the plurality of clients queues changes to the content items for subsequent synchronization when network connectivity with the server is unavailable;
based on an ordered list of edit operations received concurrently from at least the first client and the second client of the plurality of clients, at the server of the synchronized content management system, generating updates to the plurality of clients, wherein the updates instruct the plurality of clients to perform respective transform operations;
wherein generating the updates to the plurality of clients based on receiving the edit operations from the first client concurrently with the second client at the server of the synchronized content management system, further comprises;
receiving, at the server of the synchronized content management system, data describing an edit operation from the first client, the edit operation applying to the shared content item that is shared for concurrent collaborative editing between the plurality of clients;
receiving, at the server of the synchronized content management system, data describing an edit operation occurring within the native application from the second client, the edit operation applying to the shared content item and having a corresponding position, the edit operation received from the second client is received concurrent with the edit operation from the first client and-prior to sending the edit operation from the first client to the second client;
adjusting, via the server of the synchronized content management system, the edit operation from the second client and assigning a new position to the edit operation from the second client;
sending, via the server of the synchronized content management system, the edit operation from the first client to the second client along with instructions to update the position for the edit operation from the second client and instructions to perform the respective transform operations based on the adjustment;
sending, via the server of the synchronized content management system, an update of the edit operation from the second client for insertion at the updated position to the first client and instructions to perform the respective transform operations based on the insertion; and
updating, via the server of the synchronized content management system, the ordered list of edit operations for the shared content item based on the edit operations and updates sent to the first client and the second client, wherein at the end of the updating, the ordered list of edit operations for the shared content item of the synchronized content management system matches the ordered list of edit operations for the shared content item maintained by each of the first client, the second client, and the server.
4 Assignments
0 Petitions
Accused Products
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.
17 Citations
18 Claims
-
1. A computer-implemented method comprising:
-
receiving at a server of a synchronized content management system, edit operations from a plurality of clients, the edit operations comprising collaborative edits of a shared content item, the edit operations applying to the shared content item that is shared for concurrent collaborative editing between the plurality of clients including at least a first client and a second client, the edit operations having a corresponding position and a unique identifier associated with each edit operation, wherein a native application provides the plurality of clients with an interface for concurrent viewing and editing the shared content item, and wherein the synchronized content management system synchronizes changes to content items in a local folder on each of the plurality of clients and each of the plurality of clients queues changes to the content items for subsequent synchronization when network connectivity with the server is unavailable; based on an ordered list of edit operations received concurrently from at least the first client and the second client of the plurality of clients, at the server of the synchronized content management system, generating updates to the plurality of clients, wherein the updates instruct the plurality of clients to perform respective transform operations; wherein generating the updates to the plurality of clients based on receiving the edit operations from the first client concurrently with the second client at the server of the synchronized content management system, further comprises; receiving, at the server of the synchronized content management system, data describing an edit operation from the first client, the edit operation applying to the shared content item that is shared for concurrent collaborative editing between the plurality of clients; receiving, at the server of the synchronized content management system, data describing an edit operation occurring within the native application from the second client, the edit operation applying to the shared content item and having a corresponding position, the edit operation received from the second client is received concurrent with the edit operation from the first client and-prior to sending the edit operation from the first client to the second client; adjusting, via the server of the synchronized content management system, the edit operation from the second client and assigning a new position to the edit operation from the second client; sending, via the server of the synchronized content management system, the edit operation from the first client to the second client along with instructions to update the position for the edit operation from the second client and instructions to perform the respective transform operations based on the adjustment; sending, via the server of the synchronized content management system, an update of the edit operation from the second client for insertion at the updated position to the first client and instructions to perform the respective transform operations based on the insertion; and updating, via the server of the synchronized content management system, the ordered list of edit operations for the shared content item based on the edit operations and updates sent to the first client and the second client, wherein at the end of the updating, the ordered list of edit operations for the shared content item of the synchronized content management system matches the ordered list of edit operations for the shared content item maintained by each of the first client, the second client, and the server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 18)
-
-
8. A system comprising:
-
a processor; and a non-transitory computer-readable storage medium having a synchronized content management system and having stored therein processor-executable instructions for causing the processor to; receive at a server of the synchronized content management system, edit operations from a plurality of clients, the edit operations comprising collaborative edits of a shared content item, the edit operations applying to the shared content item that is shared for concurrent, collaborative editing between the plurality of clients including at least a first client and a second client, and wherein the synchronized content management system synchronizes changes to content items in a local folder on each of the plurality of clients and each of the plurality of client queues changes to the content items for subsequent synchronization when network connectivity with the server is unavailable; based on an ordered list of edit operations received concurrently from at least the first client and the second client of the plurality of clients, at the server of the synchronized content management system, generate updates to the plurality of clients, wherein the updates instruct the plurality of clients to perform respective transform operations; wherein generating the updates to the plurality of clients based on receiving the edit operations from the first client concurrently with the second client at the server of the synchronized content management system, further comprises; receiving, via the server of the synchronized content management system, data describing an edit operation from the first client, the edit operation applying to the shared content item that is shared for concurrent, collaborative editing between the plurality of clients, the edit operation having a corresponding position and a unique identifier associated with each edit operation, wherein a native application provides the plurality of clients with an interface for concurrent viewing and editing the shared content item; receiving, via the server of the synchronized content management system, data describing an edit operation occurring within the native application from the second client, the edit operation applying to the shared content item, and having a corresponding position, the edit operation received from the second client is received concurrent with the edit operation from the first client and prior to sending the edit operation from the first client to the second client; adjusting, via the server of the synchronized content management system, the edit operation from the second client and assigning a new position to the edit operation from the second client; sending, via the server of the synchronized content management system, the edit operation from the first client to the second client along with instructions to update the position for the edit operation from the second client and instructions to perform the respective transform operations based on the adjustment; sending, via the server of the synchronized content management system, an update of the edit operation from the second client for insertion at the updated position to the first client and instructions to perform the respective transform operations based on the insertion; updating, via the server of the synchronized content management system, the ordered list of edit operations for the shared content item based on the edit operations and updates sent to the first client and the second client, wherein at the end of the updating the ordered list of edit operations for the shared content item of the synchronized content management system matches the ordered list of edit operations for the shared content item maintained by each of the first client, the second client, and the server. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A non-transitory computer-readable storage medium having a synchronized content management system and having stored therein processor-executable instructions for causing a processor to:
-
receive at a server of the synchronized content management system, edit operations from a plurality of clients, the edit operations comprising collaborative edits of a shared content item, the edit operations applying to the shared content item that is shared for concurrent collaborative editing between the plurality of clients including at least a first client and a second client, wherein a native application provides the plurality of clients with an interface for concurrent viewing and editing the shared content item, and wherein the synchronized content management system synchronizes changes to content items in a local folder on each of the plurality of clients and each of the plurality of clients queues changes to the content items for subsequent synchronization when network connectivity with the server is unavailable; based on an ordered list of edit operations received concurrently from at least the first client and the second client of the plurality of clients, at the server of the synchronized content management system, generate updates to the plurality of clients, wherein the updates instruct the plurality of clients to perform respective transform operations; wherein generating the updates to the plurality of clients based on receiving the edit operations from the first client concurrently with the second client at the server of the synchronized content management system, further comprises; receiving, via the server of the synchronized content management system, data describing an edit operation from the first client, the edit operation applying to the shared content item that is shared for concurrent, collaborative editing between the plurality of clients, the edit operation having a corresponding position and a unique identifier associated with each edit operation, wherein the native application provides the plurality of clients with an interface for concurrent viewing and editing the shared content item; receiving, via the server of the synchronized content management system, data describing an edit operation occurring within the native application from the second client, the edit operation applying to the shared content item, and having a corresponding position, the edit operation received from the second client is received concurrent with the edit operation from the first client and prior to sending the edit operation from the first client to the second client; adjusting, via the server of the synchronized content management system, the edit operation from the second client and assigning a new position to the edit operation from the second client; sending, via the server of the synchronized content management system, the edit operation from the first client to the second client along with instructions to update the position for the edit operation from the second client and instructions to perform the respective transform operations based on the adjustment; sending, via the server of the synchronized content management system, an update of the edit operation from the second client for insertion at the updated position to the first client and instructions to perform the respective transform operations based on the insertion; and updating, via the server of the synchronized content management system, the ordered list of edit operations for the shared content item based on the edit operations and updates sent to the first client and the second client, wherein at the end of the updating the ordered list of edit operations for the shared content item of the synchronized content management system matches the ordered list of edit operations for the shared content item maintained by each of the first client, the second client, and the server. - View Dependent Claims (14, 15, 16, 17)
-
Specification