Wednesday, October 1, 2008

What’s an example doing in my SDK?

At the planning council meeting today, we had a short discussion about what components put into their SDK features. We have had this debate several times in the past and want to tackle the issue once and for all in the Galileo release.

You figured I had an opinion on this and here is what we did for GEF (and the GMF Runtime).

It is pretty much obvious that the runtime feature has just the runtime plug-ins. No source, documentation or examples.

Now what goes into the SDK features?

Since we are Eclipse plug-in developers using GEF, we need the source and programmer documentation for GEF, so both are in the GEF SDK.

I could probably use the GEF examples as well, but how to handle this?

If I install the examples, I get the examples in my Eclipse workbench. I also get the UI contributions, preference pages, a bunch of wizards, and so on. And I do not really want to create a new GEF logic editor in my development workbench anyway, I want the source code.

This is exactly why the Eclipse platform does not include examples in the SDK; we do not want to pollute our workbench with a bunch of UI contributed by the examples.

What the platform does provide for the plug-in developer is examples as templates in the new plug-in wizards. I can create a new plug-in and use the hello world template or the plug-in with a view template. I get source code examples to assist the plug-in developer.

For plug-in developers using GEF, we wanted to provide something similar. So we added the new plug-in example wizards.

GEF has a PDE examples plug-in in the SDK feature. You can do a File + New + GEF Plug-in Example + Logic. It will load the source code for the GEF logic editor as plug-ins in the workspace.

And there is no examples in my SDK.

p.s. UI pollution by the examples would be solved if projects provided capabilities to disable the example features. We are going to take a run at having each project provide basic capability/activity definitions to allow for their UI contributions to be hidden for Galileo.