Skip to main content
Jump to: navigation, search

EMF Compare/New and Noteworthy/2.0.0

Architecture Overhaul

EMF Compare 1.* presents limitations that cannot be worked around in order to fix some of the problems identified with the project : merging, scoping, memory performance... Furthermore, this version of EMF Compare proposed a somewhat complex API to its clients and we cannot easily re-design this to ease the project's use.

One of the main goals of EMF Compare 2 is to do a complete overhaul of the project's architecture in order to lift these limitations and clarify the API we provide to our adopters. Among other changes, the core model of EMF Compare will be simplified for clarity, and the main interfaces to launch comparisons and merges of two or three models will be made less convoluted.

Perfect Merge

EMF Compare 1.x was missing some information during the differencing which led to merges being, in some case, unreliables. EMF Compare 2.x is fixing this by keeping more information about the differences, computing the requirement graph of differences and computing equivalence relationships between differences (this may arise for instance, if you have eOpposite references).

The ultimate goal being a 100% reliable merge.

Support for Large models

Though this was also one of the priorities of the 1.3 release that shipped along with the Juno release train, this is one of the points for which we had to make compromises in order to cope with the aforementioned limitations of the 1.* stream. EMF Compare 1.3.0 did propose a lot of improvements on the scalability front, but we could not ensure scalability for millions of elements as can be seen in most "real-life" models used by our adopters in production.

EMF Compare 2.0 will provide the mandatory architecture and API changes required for the project to handle such a scale of input models. Namely, it will propose a "scope" feature that will be fully customizable so that the subsequent version of EMF Compare, 2.1, can provide the fragmented scope that will be able to handle extremely large input models. In short, EMF Compare will be able to function with time and memory footprints dependent on the number of actual differences instead of being dependent on the input models' size.

Integration with the Eclipse UI

EMF Compare 1 presented a user interface mimicking the standard Eclipse compare UI, but which was not really integrated with it : folder comparison was not using EMF Compare to show structural differences, the viewers were our own, the displayed elements weren't compatible with what Eclipse Compare was expecting...

EMF Compare 2 is now deeply integrated with Eclipse Compare, reusing its API in each and every possible means. This means that the icons will be the exact same as the standard "text" comparisons, the behavior will be closer to Eclipse compare (notably on folder comparisons and viewer switching)...

Performance Enhancements

Some performance bottlenecks in EMF Compare 1.3 have been identified yet cannot be solved without fully re-thinking the comparison process. EMF Compare 2.0 will provide these enhancements and will be faster than the 1.* stream even without the aforementioned changes that are planned for version 2.1.

A few missing parts

Diagram and UML Comparison have been removed for this release and will come back with the 2.1 release.

Back to the top