Abstract: The need to merge different versions of an object to a common state arises in collaborative computing due to several reasons including optimistic concurrency control, non-WYSWIS coupling, absence of access control, latecomers, and mobile computing. We have developed a flexible object merging framework that allows definiton of the merge policy depending on the particular application and the context of the collaborative activity. It supports automatic, semi-automatic, and interactive merges; uses semantic information to find and merge the differences between object versions; handles object versions with arbitrary structure and semantics; and allows fine-grained specification of merge policies. It is based on an object-based collaboration system and consists of of a merge matrix, which defines the merge parameters and allows definition of multiple merge policies; a merge algorithm, which performs the merge based on the merge parameters; and a set of merge policies, which automate five important kinds of merges we have identified. This paper motivates the need for a general approach to merging, identifies some important merging issues, surveys previous research in merging, identifies a list of merge requirements, describes our merging framework and illustrates it with examples, and evaluates the framework with respect to the requirements and other research efforts in merging objects.