Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EMF Compare/Roadmap"

(2012)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= Plan =
+
= Overall Goal =
== Long Term ==
+
EMF Compare's focus is on providing a powerful, stable and proven framework for model comparison and merging. The API should be usable
+
in any context from the plain Java application to the complete IDE customization.
+
  
=== Framework Enhancements ===
+
EMF Compare's focus is on providing a powerful, stable and proven framework for model comparison and merging. The API should be usable in any context from the plain Java application to the complete IDE customization.  
==== per namespace MatchEngine selection and dynamic switching ====
+
Right now EMF compare allows adopters to define specific match or diff engines associated with file extensions.  As EMF is more and more
+
broadly used we often encounter cases where a given file contains model elements conformed to several Ecore models.
+
  
A MatchEngine (and respectively Diff Engine) should be associated with one or several EPackages and not with the serialization mechanism. Furthermore
+
= Plan  =
that would require the Match process in general to be able to switch from a MatchEngine to another depending on the elements it is matching.
+
  
 +
== Short Term ==
 +
== Mid-Term  ==
 +
== Short Term  ==
  
==== Two ways and Three ways merge robustness =====
+
=Release Schedule=
We have a bunch of issues reported by the adopters about the merge support, we need to work on building a strong test basis to make sure the merge is perfect in any kind of scenarios for instance fragmented models, scoped matching ...
+
  
==== High Performances during matching phase ====
+
<googlecalendar width="100%" title="Schedule">gchs7nm4nvpm837469ddj9tjlk%40group.calendar.google.com</googlecalendar>
The matching phase is critical for performances, several optimization could be done (some being addressed by the Google Summer of Code 2010).
+
  
==== Match/Diff/Merge on elements not contained in a EMF Resource ====
+
The calendar is available in the following formats:
The framework can be used on any kind of EObjects, but as historically it was about providing model comparison support for file based models many parts of the code are making assumptions about a resource being there or not.
+
[http://www.google.com/calendar/ical/gchs7nm4nvpm837469ddj9tjlk%40group.calendar.google.com/public/basic.ics ICal], [http://www.google.com/calendar/feeds/gchs7nm4nvpm837469ddj9tjlk%40group.calendar.google.com/public/basic ATOM News Feed], [http://www.google.com/calendar/embed?src=gchs7nm4nvpm837469ddj9tjlk%40group.calendar.google.com HTML]
  
We should build a strong test basis with eObjects not being in resources, being compared and merged.
+
[[Category:EMF_Compare]]
 
+
==== MatchModel maintenance on incremental changes ====
+
 
+
Right now the match process is not split in several parts, and as such when one of the matched models has been changed all the resource set needs to be matched again.
+
We should be able to maintain parts of the match model and update those when the matched models have been changed.
+
 
+
==== DiffModel maintenance on incremental changes ====
+
 
+
Once the match model is maintained incrementaly, the next step is to maintain the diff model accordingly.
+
 
+
==== Re-Usable Comparison UI Component ====
+
 
+
Several adopters expressed their will to reuse parts of the compare UI. Right now it's nor really doable as the UI is pretty tied to the Eclipse compare framework.
+
 
+
This task is about defining a new API one can easily reuse splitting content provider and viewers just like JFace.
+
 
+
==== Undo/Redo support in comparison editor ====
+
This involve having a proper editing domain and using commands for merging. It can quickly become tricky as our editing domain would need to operate on 2 resourcesets keeping them separated.
+
 
+
==== ChangeModel to DiffModel and DiffModel to ChangeModel ====
+
The ChangeModel is a model defined in EMF representing changes. It semantically overlap a bit with the DiffModel from EMF compare. It would be interesting to at least bridge these models or even try to replace our DiffModel by the EMF ChangeModel if possible.
+
 
+
=== Tooling Enhancements ===
+
 
+
==== CodeGen ====
+
 
+
When you starts your own Ecore model you quickly want to :
+
* compare instances in an controlled and efficient way
+
* process these deltas
+
 
+
We'll work on integrating EMF Compare more with EMF providing you codegen facility to get, with a single click :
+
* an efficient dedicated match engine with areas providing you the ability to customize the process
+
* an efficient dedicated delta processor so that you can easily plug your own logic to process deltas
+
 
+
A user will be able to generate these artifacts directly from the genmodel with a right-click action. The generated code will be very similar to the XYZSwitch generated by EMF Core.
+
 
+
==== Integration with the Team Model Synchronization UI ====
+
 
+
The Eclipse Compare API provides what they call a "Comparison Model" which might be used in the synchronization view. It would allow to display the differences grouping them by dependencies even when several resources are involved.
+
 
+
 
+
==== Generating a Custom Match Engine from Ecore Annotations ====
+
 
+
The Generic Match Engine is pretty powerful though based on heuristics. When you defined your own Ecore model you often want's to make sure you control the way elements are being matched and not rely on statistics. Right now to do so you have to write your own match engine as Java code but this induce un-necessary overhead for many cases.
+
We could define a small set of annotations at the Ecore level so that one can specify for instance :
+
* attributes to ignore during the match
+
* features which  - if they are different - means the elements can't be matched.
+
 
+
the GenericMatchEngine would either adapt its behavior depending on these annotations, or we could provide a code generator generating the MatchEngine from the annotated Ecore model.
+
 
+
== 2011 ==
+
* [http://www.eclipse.org/emf/compare/doc/features/videos/index.html Videos of 2011 new features]
+
* [[EMF Compare 1.2.0 New And Noteworthy | New and Noteworthy : 1.2.0]]
+
* [[EMF Compare/CompareUMLPapyrusAPI | EMF Compare enhancements (tree editor, API, UML, Papyrus)]]
+
 
+
== 2012 ==
+
* [[EMF Compare/2012EMFCompareEnhancements | EMF Compare improvements (architecture, usability, performance, and APIs for integration)]]
+
 
+
== 2013 ==
+
 
+
= Released bits =
+
== 2010 ==
+
* [[EMF Compare 1.1.0 New And Noteworthy | New and Noteworthy : 1.1.0]]
+
== 2009 ==
+
* [[EMF Compare 1.0.0 New And Noteworthy | New and Noteworthy : 1.0.0]]
+
== 2008 ==
+
* [[EMF Compare 0.8.0 New And Noteworthy | New and Noteworthy : 0.8.0]]
+
 
+
* Initial project description : [[Media:EMFCompareDescription.pdf | EMF Compare Description (PDF)]]
+

Latest revision as of 08:20, 6 October 2014

Overall Goal

EMF Compare's focus is on providing a powerful, stable and proven framework for model comparison and merging. The API should be usable in any context from the plain Java application to the complete IDE customization.

Plan

Short Term

Mid-Term

Short Term

Release Schedule

The calendar is available in the following formats: ICal, ATOM News Feed, HTML

Back to the top