US 11,941,355 B2
Using operational transforms to perform operations on parallel copies of a document model
Nishir Shelat, New York, NY (US); Tim Sears, New York, NY (US); Tanuj Sharma, Karnataka (IN); Srivatsan Narayanan, Karnataka (IN); Shruti Jain, Karnataka (IN); Luiz Franca Pereira Filho, Jersey City, NJ (US); Kashish Bansal, Zurich (CH); Julian Rajeshwar, Princeton Junction, NJ (US); Chris Terefinko, New York, NY (US); Asim Fazal, Robbinsville, NJ (US); and Archit Gupta, Sunnyvale, CA (US)
Assigned to GOOGLE LLC, Mountain View, CA (US)
Filed by Google LLC, Mountain View, CA (US)
Filed on Jun. 9, 2022, as Appl. No. 17/836,816.
Prior Publication US 2023/0409824 A1, Dec. 21, 2023
Int. Cl. G06F 17/00 (2019.01); G06F 16/93 (2019.01); G06F 40/12 (2020.01); G06F 40/166 (2020.01); G06F 40/197 (2020.01); G06Q 10/101 (2023.01)
CPC G06F 40/197 (2020.01) [G06F 16/93 (2019.01); G06F 40/12 (2020.01); G06F 40/166 (2020.01); G06Q 10/101 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method implemented by one or more processors, the method comprising:
identifying a first operation to be performed on a document model, wherein, in a first thread, a document is rendered in a user interface using a first parallel copy of the document model that is maintained by the first thread;
based on a task configuration corresponding to the first operation, determining that the first operation is to be performed, in a second thread, on a second parallel copy of the document model that is maintained by the second thread, before applying commands associated with the first operation to the first parallel copy of the document model that is used to render the document in the user interface; and
in response to determining that the first operation is to be performed, in the second thread, on the second parallel copy of the document model:
determining that a revision of the first parallel copy of the document model matches a revision of the second parallel copy of the document model; and
in response to determining that the revision of the first parallel copy of the document model matches the revision of the second parallel copy of the document model:
performing, in the second thread, the first operation on the second parallel copy of the document model to obtain a calculation result of the first operation, the calculation result comprising a first list of commands;
applying, in the second thread, the first list of commands to the second parallel copy of the document model;
performing an operational transform on at least one command in the first list of commands based on queued user edits to the first parallel copy of the document model, the queued user edits comprising a second list of commands, to obtain a transformed list of commands; and
applying, in the first thread, the transformed list of commands to the first parallel copy of the document model.