1. A system for editing a data object, the system comprising: a first computing device executing applications; a first application executing within a first environment, the first application being configured to apply editing operations to one or more data objects to produce new states of the data objects; and a first data object configured to be edited by 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 prior state of the first data object after the respective editing operation was applied.