Migrating Archi to Eclipse 4

Background

Archi is built upon the Eclipse Rich Client Platform (RCP) version 3.8 and is also developed in the Eclipse Integrated Development Environment (IDE). Development on Archi began in January 2010 when the current version of Eclipse was 3.6. The code has been written in accordance with the APIs of Eclipse 3.x.

Eclipse 4 (e4)

From June 2012 things have changed. Eclipse has moved to version 4.x, and consequently Eclipse 3.8 (also released in June 2012) will be the last version of Eclipse using the old APIs to be officially supported. After June 2013, Eclipse 4 will be the only officially supported platform. Eclipse 4 uses a completely different programming paradigm. Eclipse 4 introduces:

What does this mean for Archi?

The following is a list of issues found so far running Archi using Eclipse 4.2. There are probably many more issues...

* There is a "Quick Access" Search toolbar added by default. We don't want this and there isn't a way to remove it, nor does it seem that they want to - so all RCP apps must have one! See Bugzilla 362420

* The GEF toolbar is on the right instead of the left

* Application title bar is missing

* Splash screen progress bar shows when not supposed to (385128)

* The org.eclipse.ui.actionsSets extension point is deprecated. Will need to use the extension points org.eclipse.ui.menus and org.eclipse.ui.commands instead. However, some menu actions extend from AbstractModelSelectionAction which update their enabled state depending on selection. Action Handlers update their enabled state only when the app loses and regains focus

* Registering context sub-menu contributions causes NPE (385123)

* "preferenceCustomization" setting in product is ignored, so not able to over-ride Eclipse's key binding scheme (385126)

* The workbench uses only square style tabs. Rounded ones cannot be shown.

* Assorted UI oddities (tabs are not highlighted when in focus, max/min button on empty editor area wrong size, UI seems sluggish compared to 3.7)

* In ShowToolbarAction, a call to the system always returns true (385125)

* More...

It means that Archi does not work correctly using Eclipse 4's "compatibility layer" out of the box, due to Eclipse 4 being half baked. Some things can be resolved, whilst many other things are due to bugs in the backward compatibility layer. Because Eclipse is extremely difficult to code and get working on all the OS platforms, some workarounds have been in employed in Archi. Eclipse 4 breaks some of these workarounds. Of course, this means that new workarounds will have to be found.

Recommended Roadmap

Eclipse 3.8 will be officially supported up until June 2013. This is the version used for Archi as of June 2012. This works for Windows XP and 7, Mac OS 10.6 (Snow Leopard) and 10.7 (Lion), and some flavours of Linux (Ubuntu). However, there's no guarantee things won't break when Windows 8 and Mac 10.8 are released this year. We should stick with this version of Eclipse up until June 2013. After this there will be no more 3.x versions of Eclipse, only the 4.x series.

If Archi is to be sustained and supported beyond this, we need to re-write Archi using the new APIs and programming model of Eclipse 4. I don't think it's worth fixing the issues so that it works using Eclipse 4's "compatibility layer". I think for future-proofing it should be completely re-written in Eclipse 4. The target for this should be Eclipse 4.3.

Also, I think we should move to using Graphiti for better diagramming, CDO for local model repository support, and Java 7.

We also need to be thinking out moving to mobile apps (iPad and tablet).

 

Resources

Eclipse 4 Home
Eclipse 4 Tutorials