EMF Compare/Release Review/2.0.0
Juno Release Review - EMF Compare 1.3
Laurent Goubet (firstname.lastname@example.org)
Release Review : July 31, 2012
Communication Channel : eclipse.modeling.emf newsgroup
Process Documentation : http://www.eclipse.org/projects/dev_process/development_process.php
2.0 Release Highlights
EMF Compare 2.0 is a full overhaul of the design, architecture and code of the project. It aims at providing the same functionality as 1.3 did while lifting the limitations that it presented.
The 2.0 release only targets the comparison of models that present IDs of some sort : XMI ID, functional ID... The subsequent 2.1 version will catch up to 1.3 in terms of UML-specific differences and graphical comparison.
New and noteworthy
The model that constitutes the core of the comparison process has been fully reworked. What was previously split in two (diff.ecore and match.ecore) has now been merged into a single "compare.ecore" which provides all of the core API for EMF Compare. Furthermore, the number of concepts defined by this core model has been drastically reduced as compared to the 1.* stream.
The API in general has been simplified to ease adoption and re-use of EMF Compare in other projects. For example, programmatically launching a comparison can now be done through a single entry point instead of the previous minimum of two.
Do note that the general process of EMF Compare has not been altered : it is still separated into isolated phases. Matching the elements, computing the differences between matched elements, then merging the changes from one side to the other. However, the differencing process itself has been further divided into customizable units : computing the differences, computing the requirements between distinct differences, computing the conflicts between differences...
Though EMF Compare was already useable in standalone environments, this has been improved further such that the core of EMF Compare is now only comprised of a single plugin that only depends on a very limited set of other plugins.
EMF Compare 2.0 provides the mandatory architecture and API for the project to handle large input models. Though 2.0 only provides a default scope which ends up in the same functionality as the 1.3 release (loading everything in memory and comparing the input models as a whole), this scope can (and will be) used by the subsequent version of EMF Compare, 2.1, to be able to handle extremely large input models.
Some performance bottlenecks of EMF Compare 1.3 have been identified yet cannot be solved without fully re-thinking the comparison process. EMF Compare 2.0 fixes these problems and is generally faster than the 1.* stream even using the default scoping mechanism.