Thursday, October 27, 2011

Eclipse 4: Beyond Compatibility

The bulk of the work for the past two Eclipse 4 releases has been on getting the compatibility layer (which allows all API clean 3.x components to 'just work' in 4.x) complete, robust and scalable. This is, however, a 'one off' exercise (thank's been a bear!!) so we can expect to be back to a more normal 'development' cycle in 4.3.

While we're not done yet by Juno's release we will now is the time to start thinking about where we want to take the platform in 4.3 and on into the future. The underlying architecture (called e4) upon which Eclipse 4 is implemented is capable of doing far more than just what 3.x provides in its presentation, the question is how we can leverage these new abilities to enhance the Eclipse User Experience.

I've recently presented a webinar called "Leveraging Eclipse 4 API to Build Components for the Future" which can be found on Eclipse Live. It gives a fairly general description of the basic 'e4' architecture (Modeled UI and Dependency Injection), suitable for folks that are just getting their first look at Eclipse 4.

Here's a screen shot of the webinar's demo showing a real PackageExplorer view hosted within a WizardPage.

This is just one example of the flexibility inherent in Eclipse 4. This turns out to be easy to do, here's a ZIP file ( containing the project used to implement this wizard. To run it though its paces:
  1. Install a recent version of Eclipse 4 and fire it up
  2. Unzip the file somewhere and Import the project into your workspace
  3. Make a new Run Configuration and fire up the inner
  4. You will see that there's a new entry in the 'New...' drop down called 'Local View', opening it will get you to the state captured in the image above.
  5. It'll look pretty boring since your inner won't have any projects...but it's the PackageExplorer, just right-click and create a new project...;-).

(Gratuitous Plug Warning...;-) I'm heading off next week to EclipseCon Europe where (along with helping Tom Schindl out with some of his presentations) I'll be giving a talk entitled "Eclipse 4: Where do we go from here ?" that will cover some of these same questions, albeit from a slightly different angle. Folks lucky enough to be going to the talk will still want to view the webinar which will fill in more background than I'll be able to cover in a 25 minute presentation.

Late Breaking News !! Here's a screen capture taken from work that Bogdan Gheorghe is doing on creating an XText based CSS editor. While folks writing new e4 RCP apps can use this as a regular editor to define their app's CSS file here it's presented under the Appearance Preference page, where it will modify the CSS of the currently running Eclipse 4 session (replacing a slew of formerly discreet preferences).

This demonstrates one of the new approaches we've already identified; the Eclipse 4 tooling will allow itself to be hosted in two places; as a regular editor to define content for projects within the workspace as well as in an appropriate preference page to facilitate changes to the currently running Eclipse session. That way users don't have to learn two different mechanisms (and we only have one piece of code to improve...;-).

Got any ideas ? Remember when you opened an enhancement request that was eventually closed as 'undo-able' ? Now is the time to dust them off again or open new ones. If you just want to discuss them you can reach us on IRC at "#eclipse-e4' or feel free to send me an email at, it's not only my pleasure to discuss cool ideas, it's my job !