# US 12,001,401 B2 · Enhanced co-authoring and file syncing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,001,401 B2
- Document ID: US12001401B2
- Status: Granted
- Kind: B2
- Application number: 17/511,982
- Filed: 2021-10-27
- Published: 2023-04-27
- Granted: 2024-06-04
- Earliest claimed: 2021-10-27
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Boris Isaac Feldman; Matthew James Ruhlen; Manish Soni; Marcus Eduardo Markiewicz; Michal Krzysztof Piaseczny; Nisha Tekchand Singh; Bowen Xue
- Web page: https://patentgrep.com/patent/US12001401B2

## CPC

- G06F 16/176: Support for shared access to files; File sharing support
- G06F 16/178: Techniques for file synchronisation in file systems
- G06F 16/137: {Hash-based (content-based indexing of textual data G06F16/31)}
- G06F 16/182: Distributed file systems
- G06F 16/1873: {Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In an implementation, a sync engine running on a computing device synchronizes a local copy of a file with a copy of the file hosted by an online file service. An application on the device receives a request/command to open the file and responsively opens a temporary copy of the file in memory. The application populates the temporary file with content from the local copy of the file and also establishes a connection between the application and a co-authoring service. Note that the connection between the application and the co-authoring session bypasses the sync engine such, when connected to the co-authoring service, the application is able to synchronize the content in the temporary copy of the file with content in the hosted copy of the file over the connection.

## Claims

### Claim 1

A computing device comprising:
one or more computer readable storage media;
one or more processors operatively coupled to the one or more computer readable storage media; and
an application comprising program instructions stored on the one or more computer readable storage media that, when executed by the one or more processors, direct the computing device to at least:
receive a request to open a file, wherein a sync engine on the computing device synchronizes a local copy of the file with a hosted copy of the file hosted by a file service;
in response to the request, open a temporary copy of the file on the computing device and populate the temporary copy of the file with content from the local copy of the file;
establish a connection between the application and a co-authoring service that bypasses the sync engine;
when connected to the co-authoring service over the connection, and when the temporary copy of the file is open on the computing device:
receive user input via a user interface of the application comprising one or more edits to the content in the temporary copy of the file;
edit the content in the temporary copy of the file based on the one or more edits; and
synchronize the temporary copy of the file with the hosted copy of the file; and
upon a file close event occurring, close the temporary copy of the file without synchronizing the local copy of the file with the temporary copy of the file, and without having synchronized the local copy of the file with the temporary copy of the file since having opened and populated the temporary copy of the file with the content.

### Claim 2 (depends on 1)

The computing device of claim 1 wherein the program instructions further direct the computing device to at least:
save the temporary copy of the file to a persistent storage location upon the file close event occurring while the application is disconnected from the co-authoring service; and
open the temporary copy of the file from the persistent storage location upon an occurrence of a subsequent request to open the file.

### Claim 3 (depends on 2)

The computing device of claim 2 wherein the program instructions further direct the computing device to delete the temporary copy of the file from system memory upon the file close event occurring while the application remains connected to the co-authoring service.

### Claim 4 (depends on 1)

The computing device of claim 1 wherein, to synchronize the temporary copy of the file with the hosted copy of the file, the program instructions direct the computing device to:
identify a base state of the temporary copy of the file, wherein the base state comprises a sequence number most recently provided by the co-authoring service to the application and a base list of chunk identifiers produced by hashing the temporary copy of the file on a per-chunk basis;
after an amount of time during which one or more changes were made to the temporary copy of the file, determine an updated state of the temporary copy of the file, wherein the updated state comprises an updated list of chunk identifiers produced by re-hashing the temporary copy of the file on a per-chunk basis;
identify one or more delta chunks by comparing the base list of chunk identifiers to the updated list of chunk identifiers to determine which chunks of the temporary copy of the file were altered by the one or more changes; and
send an update to the co-authoring service comprising the updated list of chunk identifiers, the one or more delta chunks, and the sequence number.

### Claim 5 (depends on 4)

The computing device of claim 4 wherein, to synchronize the temporary copy of the file with the hosted copy of the file, the program instructions further direct the computing device to, prior to identifying the base state of the temporary copy of the file:
identify an initial state of the temporary copy of the file immediately upon populating the temporary copy of the file with the content from the local copy of the file, wherein the initial state comprises an initial list of chunk identifiers produced by hashing the temporary copy of the file on a per-chunk basis;
send an initial synchronization request to the co-authoring service comprising the initial list of chunk identifiers;
in reply to the initial synchronization request, receive from the co-authoring service an initial set of delta chunks, an initial set of chunk identifiers corresponding to the initial set of delta chunks, and the sequence number; and
update the temporary copy of the file from the initial state to the base state based on at least the initial set of delta chunks.

### Claim 6 (depends on 5)

The computing device of claim 5 wherein the initial set of delta chunks comprise one or more chunks of the hosted copy of the file that differ relative to any chunks of the temporary copy of the file in the initial state, as determined based on a comparison by the co-authoring service of the initial list of chunk identifiers to an authoritative list of chunk identifiers produced by the co-authoring service by hashing the hosted copy of the file on a per-chunk basis.

### Claim 7 (depends on 1)

The computing device of claim 1 wherein, to open the temporary copy of the file on the computing device, the program instructions direct the computing device to open the temporary copy of the file immediately in the user interface to the application, and prior to synchronizing the content in the temporary copy of the file with the content in the hosted copy of the file.

### Claim 8

One or more computer readable storage media having program instructions stored thereon that, when read and executed by one or more processors on a computing device, direct the computing device to at least:
receive a request to open a file, wherein a sync engine on the computing device synchronizes a local copy of the file with a hosted copy of the file hosted by a file service;
in response to the request, open a temporary copy of the file on the computing device and populate the temporary copy of the file with content from the local copy of the file;
establish a connection between an application and a co-authoring service that bypasses the sync engine;
when connected to the co-authoring service over the connection, and when the temporary copy of the file is open on the computing device;
receive user input via a user interface of the computing device comprising one or more edits to the content in the temporary copy of the file;
edit the content in the temporary copy of the file based on the one or more edits; and
synchronize the temporary copy of the file with the hosted copy of the file; and
upon a file close event occurring, close the temporary copy of the file without synchronizing the local copy of the file with the temporary copy of the file, and without having synchronized the local copy of the file with the temporary copy of the file since having opened and populated the temporary copy of the file with the content.

### Claim 9 (depends on 8)

The one or more computer readable storage media of claim 8 wherein the program instructions further direct the computing device to at least:
save the temporary copy of the file to a persistent storage location upon the file close event occurring while the application is disconnected from the co-authoring service; and
open the temporary copy of the file from the persistent storage location upon an occurrence of a subsequent request to open the file.

### Claim 10 (depends on 9)

The one or more computer readable storage media of claim 9 wherein the program instructions further direct the computing device to delete the temporary copy of the file from system memory upon the file close event occurring while the application remains connected to the co-authoring service.

### Claim 11 (depends on 8)

The one or more computer readable storage media of claim 8 wherein, to synchronize the temporary copy of the file with the hosted copy of the file, the program instructions direct the computing device to:
identify a base state of the temporary copy of the file, wherein the base state comprises a sequence number most recently provided by the co-authoring service to the application and a base list of chunk identifiers produced by hashing the temporary copy of the file on a per-chunk basis;
after an amount of time during which one or more changes were made to the temporary copy of the file, determine an updated state of the temporary copy of the file, wherein the updated state comprises an updated list of chunk identifiers produced by re-hashing the temporary copy of the file on a per-chunk basis;
identify one or more delta chunks by comparing the base list of chunk identifiers to the updated list of chunk identifiers to determine which chunks of the temporary copy of the file were altered by the one or more changes; and
send an update to the co-authoring service comprising the updated list of chunk identifiers, the one or more delta chunks, and the sequence number.

### Claim 12 (depends on 11)

The one or more computer readable storage media of claim 11 wherein, to synchronize the temporary copy of the file with the hosted copy of the file, the program instructions further direct the computing device to, prior to identifying the base state of the temporary copy of the file:
identify an initial state of the temporary copy of the file immediately upon populating the temporary copy of the file with the content from the local copy of the file, wherein the initial state comprises an initial list of chunk identifiers produced by hashing the temporary copy of the file on a per-file basis;
send an initial synchronization request to the co-authoring service comprising the initial list of chunk identifiers;
in reply to the initial synchronization request, receive from the co-authoring service an initial set of delta chunks, an initial set of chunk identifiers corresponding to the initial set of delta chunks, and the sequence number; and
update the temporary copy of the file from the initial state to the base state based on at least the initial set of delta chunks.

### Claim 13 (depends on 12)

The one or more computer readable storage media of claim 12 wherein the initial set of delta chunks comprise one or more chunks of the hosted copy of the file that differ relative to any chunks of the temporary copy of the file in the initial state, as determined based on a comparison by the co-authoring service of the initial list of chunk identifiers to an authoritative list of chunk identifiers produced by the co-authoring service by hashing the hosted copy of the file on a per-chunk basis.

### Claim 14 (depends on 8)

The one or more computer readable storage media of claim 8 wherein, to open the temporary copy of the file on the computing device, the program instructions direct the computing device to open the temporary copy of the file immediately in the user interface to the application, and prior to synchronizing the content in the temporary copy of the file with the content in the hosted copy of the file.

### Claim 15

A method of synchronizing copies of a file, the method comprising:
receiving a request to open the file on a computing device, wherein a sync engine on the computing device synchronizes a local copy of the file with a hosted copy of the file hosted by a file service;
in response to the request, opening a temporary copy of the file on the computing device and populating the temporary copy of the file with content from the local copy of the file;
establishing a connection between an application and a co-authoring service that bypasses the sync engine;
when connected to the co-authoring service over the connection, and when the temporary copy of the file is open on the computing device:
receiving user input comprising one or more edits to the content in the temporary copy of the file;
editing the content in the temporary copy of the file based on the one or more edits; and
synchronizing the temporary copy of the file with the hosted copy of the file; and
upon a file close event occurring, closing the temporary copy of the file without synchronizing the local copy of the file with the temporary copy of the file and without having synchronized the local copy of the file with the temporary copy of the file since having opened and populated the temporary copy of the file with the content.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
saving the temporary copy of the file to a persistent storage location upon the file close event occurring while the application is disconnected from the co-authoring service; and
opening the temporary copy of the file from the persistent storage location upon an occurrence of a subsequent request to open the file.

### Claim 17 (depends on 16)

The method of claim 16, further comprising deleting the temporary copy of the file from system memory upon the file close event occurring while the application remains connected to the co-authoring service.

### Claim 18 (depends on 15)

The method of claim 15, wherein synchronizing the temporary copy of the file with the hosted copy of the file comprises:
identifying a base state of the temporary copy of the file, wherein the base state comprises a sequence number most recently provided by the co-authoring service to the application and a base list of chunk identifiers produced by hashing the temporary copy of the file on a per-chunk basis;
after an amount of time during which one or more changes were made to the temporary copy of the file, determining an updated state of the temporary copy of the file, wherein the updated state comprises an updated list of chunk identifiers produced by re-hashing the temporary copy of the file on a per-chunk basis;
identifying one or more delta chunks by comparing the base list of chunk identifiers to the updated list of chunk identifiers to determine which chunks of the temporary copy of the file were altered by the one or more changes; and
sending an update to the co-authoring service comprising the updated list of chunk identifiers, the one or more delta chunks, and the sequence number.

### Claim 19 (depends on 18)

The method of claim 18, wherein synchronizing the temporary copy of the file with the hosted copy of the file further comprises, prior to identifying the base state of the temporary copy of the file:
identifying an initial state of the temporary copy of the file immediately upon populating the temporary copy of the file with the content from the local copy of the file, wherein the initial state comprises an initial list of chunk identifiers produced by hashing the temporary copy of the file on a per-file basis;
sending an initial synchronization request to the co-authoring service comprising the initial list of chunk identifiers;
in reply to the initial synchronization request, receiving from the co-authoring service an initial set of delta chunks, an initial set of chunk identifiers corresponding to the initial set of delta chunks, and the sequence number; and
updating the temporary copy of the file from the initial state to the base state based on at least the initial set of delta chunks.

### Claim 20 (depends on 19)

The method of claim 19, wherein the initial set of delta chunks comprise one or more chunks of the hosted copy of the file that differ relative to any chunks of the temporary copy of the file in the initial state, as determined based on a comparison by the co-authoring service of the initial list of chunk identifiers to an authoritative list of chunk identifiers produced by the co-authoring service by hashing the hosted copy of the file on a per-chunk basis.
