Important part of the middle layer is filtering. Diff engine tells us which lines are different. After that we must apply our custom filtering to filter out differences user doesn't want to see. In WinMerge 2.x we used regular expression to match lines that we wanted to remove from diffs. Even though there were lots of problems with the implementation the idea is solid.
-GUI gets the data from middle layer and visualizes it for the user. GUI doesn't do any file or difference processing it just tells middle layer what user wants to do.
+GUI gets the data from middle layer and visualizes it for the user. GUI doesn't do any file or difference processing it just tells middle layer what user wants to do.
+=== Qt Plugin Architecture ===
+I think we should take Qt's plugin architecture heavily into use. I don't mean "plugins" as in WinMerge 2.x. But I mean plugins as in Qt Creator. We can have many features implemented as plugins. Meaning pretty lightweight core and then possibility to expand it with the plugins. For example things like filtering fits naturally implemented as plugins.
+==== Using Qt Creator plugins? ====
+We need to study if we could use some of the work done by Qt Creator, in editor, version control integration etc. That would mean we can use heavily tested (in practice) code instead of writing our own versions.