IP Library Granted Patent US 12,475,309
Granted Patent B2
US 12,475,309 · App. 17/916,351 · Granted Nov 18, 2025

Systems and methods for collaborative editing of electronic objects

Inventors: David Hearnden (Sydney, AU); Mindaugas Kazlauskas (Sydney, AU)
Assignee: CANVA PTY LTD
G06F40/197G06F9/546G06F16/1767G06F16/1873G06F40/123G06F40/151G06F40/166
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 12,475,309
App. No.
17/916,351
Granted
Nov 18, 2025
Kind
B2
Abstract

Described herein is a computer implemented method for editing an electronic object. The method includes maintaining a local version of the electronic object and a local buffer that includes one or more local deltas. A plurality of server deltas are received from a server system, each server delta being in respect of a remote edit made to the electronic object. The plurality of server deltas are composed to generate a single composed server delta which is then transformed against the one or more local deltas to generate a transformed server delta. The local version of the electronic document is then edited by applying the transformed server delta to the local version of the electronic document.

Claims (93)

1 . A computer implemented method for editing an electronic object, the electronic object being edited in real time by multiple client applications, wherein the method is performed by a first client application operating on a first client system and includes:

maintaining, at the first client system, a local version of the electronic object;

maintaining, at the first client system, a local buffer, the local buffer including one or more local deltas, each local delta describing one or more edits made to the local version of the electronic object by a user of the first client application;

receiving, at the first client system, a first local edit made to the local version of the electronic object by the user of the first client application;

in response to receiving the first local edit:

generating a first local delta describing the first local edit;

generating a first client submit message that includes the first local delta and communicating the first client submit message to a server system; and

adding the first local delta to the local buffer;

receiving, from the server system, a plurality of server deltas, each server delta being in respect of a remote edit made to the electronic object;

composing the plurality of server deltas to generate a single composed server delta;

transforming the single composed server delta against the one or more local deltas in the local buffer to generate a transformed server delta; and

editing the local version of the electronic object by applying the transformed server delta to the local version of the electronic object.

2 . The computer implemented method of claim 1 , wherein adding the first local delta to the local buffer includes flagging the first local delta as unacknowledged.

3 . The computer implemented method of claim 2 , further including:

receiving a first server acknowledgement message from the server system, the first server acknowledgement message acknowledging the first local delta; and

in response to receiving the first server acknowledgement message, clearing the first local delta from the local buffer.

4 . The computer implemented method of claim 3 , wherein:

the first client submit message further includes a first client version identifier;

the first server acknowledgement message includes the first client version identifier;

the local buffer includes one or more additional local deltas, each of the one or more additional local deltas being flagged as unacknowledged at the time the first server acknowledgement message is received, each of the one or more additional local deltas being associated with a client version identifier that indicates an earlier version than the first client version identifier; and

in response to receiving the first server acknowledgement message the method further includes clearing the one or more additional local deltas from the client buffer.

5 . The computer implemented method of claim 1 , further comprising:

receiving a second local edit made to the local version of the electronic object by the user of the first client application;

generating a second local delta corresponding to the second local edit;

receiving a third local edit made to the local version of the electronic object by the user of the first client application;

generating a third local delta corresponding to the second local edit;

composing the second local delta and the third local delta to generate a fourth local delta; and

adding the fourth local delta to the local buffer.

6 . A computer processing system comprising:

a processing unit;

a communications interface; and

a non-transitory computer-readable storage medium storing instructions, which when executed by the processing unit, cause the processing unit to:

maintain, at the computer processing system, a local version of an electronic object being edited in real time by multiple client applications;

maintain, at the computer processing system, a local buffer, the local buffer including one or more local deltas, each local delta describing one or more edits made to the local version of the electronic object by a user of the computer processing system;

receive, at the computer processing system, a first local edit made to the local version of the electronic object by the user of the computer processing system;

in response to receiving the first local edit:

generate a first local delta describing the first local edit;

generate a first client submit message that includes the first local delta and communicate the first client submit message to a server system; and

add the first local delta to the local buffer;

receive, from the server system via the communications interface, a plurality of server deltas, each server delta being in respect of a remote edit made to the electronic object;

compose the plurality of server deltas to generate a single composed server delta;

transform the single composed server delta against the one or more local deltas in the local buffer to generate a transformed server delta; and

edit the local version of the electronic object by applying the transformed server delta to the local version of the electronic object.

7 . The computer processing system of claim 6 , wherein execution of the instructions further causes the processing unit to:

generate a fourth local delta by:

receiving a second local edit made to the local version of the electronic object by the user of the computer processing system;

generating a second local delta corresponding to the second local edit;

receiving a third local edit made to the local version of the electronic object by the user of the computer processing system;

generating a third local delta corresponding to the second local edit; and

composing the second local delta and the third local delta to generate the fourth local delta; and

add the fourth local delta to the local buffer;

generate a second client submit message, the second client submit message including the fourth local delta; and

communicate second client submit message to the server system.

8 . The computer processing system of claim 6 , wherein adding the first local delta to the local buffer includes flagging the first local delta as unacknowledged.

9 . The computer processing system of claim 6 , wherein execution of the instructions further causes the processing unit to:

receive a first server acknowledgement message from the server system, the first server acknowledgement message acknowledging the first local delta; and

in response to receiving the first server acknowledgement message, clear the first local delta from the local buffer.

10 . The computer processing system of claim 9 , wherein:

the first client submit message further includes a first client version identifier;

the first server acknowledgement message includes the first client version identifier;

the local buffer includes one or more additional local deltas, each of the one or more additional local deltas being flagged as unacknowledged at the time the first server acknowledgement message is received, each of the one or more additional local deltas being associated with a client version identifier that indicates an earlier version than the first client version identifier; and

execution of the instructions further causes the processing unit to, in response to receiving the first server acknowledgement message, clear the one or more additional local deltas from the client buffer.

11 . A non-transitory computer-readable storage medium storing instructions, which when executed by a processing unit, cause the processing unit to:

maintain, at a computer processing system, a local version of an electronic object being edited in real time by multiple client applications;

maintain, at the computer processing system, a local buffer, the local buffer including one or more local deltas, each local delta describing one or more edits made to the local version of the electronic object by a user of the computer processing system;

receive, at the computer processing system, a first local edit made to the local version of the electronic object by the user of the computer processing system;

in response to receiving the first local edit:

generate a first local delta describing the first local edit;

generate a first client submit message that includes the first local delta and communicate the first client submit message to a server system; and

add the first local delta to the local buffer;

receive, from the server system via a communications interface, a plurality of server deltas, each server delta being in respect of a remote edit made to the electronic object;

compose the plurality of server deltas to generate a single composed server delta;

transform the single composed server delta against the one or more local deltas in the local buffer to generate a transformed server delta; and

edit the local version of the electronic object by applying the transformed server delta to the local version of the electronic object.

12 . The non-transitory computer-readable storage medium of claim 11 , wherein execution of the instructions further causes the processing unit to:

generate a fourth local delta by:

receiving a second local edit made to the local version of the electronic object by the user of the computer processing system;

generating a second local delta corresponding to the second local edit;

receiving a third local edit made to the local version of the electronic object by the user of the computer processing system;

generating a third local delta corresponding to the second local edit; and

composing the second local delta and the third local delta to generate the fourth local delta; and

add the fourth local delta to the local buffer;

generate a second client submit message, the second client submit message including the fourth local delta; and

communicate second client submit message to the server system.

13 . The non-transitory computer-readable storage medium of claim 11 , wherein adding the first local delta to the local buffer includes flagging the first local delta as unacknowledged.

14 . The non-transitory computer-readable storage medium claim 11 , wherein execution of the instructions further causes the processing unit to:

receive a first server acknowledgement message from the server system, the first server acknowledgement message acknowledging the first local delta; and

in response to receiving the first server acknowledgement message, clearing the first local delta from the local buffer.

15 . The non-transitory computer-readable storage medium of claim 14 , wherein:

the first client submit message further includes a first client version identifier;

the first server acknowledgement message includes the first client version identifier;

the local buffer includes one or more additional local deltas, each of the one or more additional local deltas being flagged as unacknowledged at the time the first server acknowledgement message is received, each of the one or more additional local deltas being associated with a client version identifier that indicates an earlier version than the first client version identifier; and

execution of the instructions further causes the processing unit to, in response to receiving the first server acknowledgement message, clear the one or more additional local deltas from the client buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2022
From: HEARNDEN, DAVID; KAZLAUSKAS, MINDAUGAS
To: CANVA PTY LTD
Reel/Frame 061274/0276 →
Priority Claims (1)
AU 2020901040 · Apr 3, 2020 · national
Continuity (1)
Related Publication 20230124659A1 · Apr 20, 2023
References Cited (11)
US 10757171B1 · Lucco · 2020 [cited by examiner]
US 20130232109A1 · Deffler · 2013 [cited by applicant]
US 20150373068A1 · Allen · 2015 [cited by examiner]
US 20170357675A1 · Underwood et al. · 2017 [cited by applicant]
US 20190155791A1 · Kasetty et al. · 2019 [cited by applicant]
WO 2005050625A2 · 2005 [cited by applicant]
WO 2012065127A1 · 2012 [cited by applicant]
Operational Transformation, Wikipedia, https://web.archive.org/web/20200218182859/https://en.wikipedia.org/wiki/Operational_ transformation (last visited Sep. 27, 2022), published on Feb. 18, 2020 as per Wayback Machine… [cited by applicant]
David Wang, Google Wave Operational Transformation, 1.1—Jul. 2010, https://svn.apache.org/repos/asf/incubator/wave/whitepapers/operational-transform/operational-transform.html (last visited Sep. 27, 2022) (Entire Docume… [cited by applicant]
Written Opinion of the ISA for PCT/AU2021/050299 mailed Jun. 17, 2021 (Entire Document). [cited by applicant]
European Search Report for EP Application No. 21779622.6, mailed Feb. 27, 2024, pp. 1-13. [cited by applicant]