2. The method as recited in claim 1 , further comprising interpreting the transactions propagated to the second client computing device and updating the version of the file stored locally on the second client computing device.
1. A method implemented in computer-executable instructions that, when executed by a computer processor, satisfies a request by a second client computing device to open a file that is open by a first client computing device, the method comprising: on a server computing device, retrieving from a file server and caching in memory on the server computing device file data associated with a file requested to be opened by the first client computing device; transmitting to the first client computing device the file data associated with the file requested to be opened; transmitting the file data to the second client computing device in response to a request by the second client computing device to open the file; notifying the first client computing device that the file is concurrently opened by more than one client computing device; obtaining any previously uncommitted transactions from the first client computing device, wherein a transaction is a code fragment that semantically describes an update to the file data implemented on the first client computing device, and wherein the transaction does not include all of the file data; notifying the second client computing device that the file is concurrently opened by more than one client computing device; and propagating any uncommitted transactions obtained from the first client computing device to the second client computing device, the transactions configured to allow the version of the file on the second client computing device to be updated with the updates to the file data implemented on the first client computing device before the file was opened by the second client computing device.