1. A system for editing a data object, the system comprising: a first computing device, the first computing device comprising a processing unit and a system memory including instructions that, when executed by the processing unit, cause the processing unit to executing one or more applications; a first application applying editing operations to one or more data objects to produce new states of the one or more data objects; a first data object being edited by a first user using the first application, the first data object including a content and a history, the history including a plurality of snapshot pairs, each snapshot pair being associated with an editing operation applied to the first data object by the first application, and each snapshot pair including a first snapshot indicating a prior state of the first data object before a respective editing operation was applied and a second snapshot indicating a state of the first data object after the respective editing operation was applied; a second data object edited by a second application, the second data object including a content and a history, the history including a plurality of snapshot pairs, each snapshot pair being associated with an editing operation applied to the second data object by the second application, and each snapshot pair including a first snapshot indicating a prior state of the second data object before a respective editing operation was applied and the second snapshot indicating the prior state of the second data object after the respective editing operation was applied; upon receiving a selection of an undo operation from the first application, comparing a first snapshot pair formed upon the edit by the first application to a second snapshot pair formed upon the edit by the second application to perform the undo operation; and wherein the system displays a label showing a difference between the first snapshot pair and the second snapshot pair and identifying one or more editing operations to perform the undo operation.