1. A method for providing a file in response to a request by a second client when the file is already opened by a first client, the method comprising: instructing a message server to add the file to a subscription list of the second client; instructing a transaction coordinator to retrieve and store raw file data associated with the file; transmitting the raw file data to the second client; instructing the message server to notify the first client that the file is now shared; receiving uncommitted transactions from the first client; instructing the transaction coordinator to commit the uncommitted transactions; and instructing the message server to notify the first client and the second client of the committed transactions.