Wednesday, December 17, 2008

Why Source Bundles?

I came across a question in Bugzilla on why providing source bundles is one of the "must do" items for the Galileo Simultaneous Release ? How do our clients benefit from it? It would be a nice motivating question to have answered.

The Eclipse platform went to source bundles in Eclipse 3.4 / Ganymede. The PDE build has documentation in place and it is supposed to be a "trivial" item for projects to adopt.

The benefit is that it helps to solve the long pathname limit issue on windows. In the Microsoft API (with some exceptions), the maximum length for a path is MAX_PATH, which is defined as 260 characters.

As an example, In Ganymede, there exists the source folder
[eclipse]\plugins\org.eclipse.draw2d.source_3.4.0.v20080115-33-7w3119163_\src\org.eclipse.draw2d_3.4.0.v20080529\ . Because of the path length limit, "C:\Program File\Some Vendor\Some Product\eclipse" may not be an option to install your Eclipse based application that includes GEF source. At worst, the length of "Some
Vendor\Some Product\eclipse" is significantly limited.

By adopting source bundles, the path is reduced to \plugins\org.eclipse.draw2d.source_3.4.0.v20080529.jar , a significant reduction in path length for Galileo.

Saturday, December 13, 2008

Draw2D Enhancements in GEF 3.5 M4

Marc Gobeil has just finished completing some Draw2D Enhancements for GEF 3.5 M4. Marc completed adding anti-alias support and filling out the missing SWT line attributes in the Draw2D graphics implementation. Draw2D now supports fractional line widths, line offsets, line cap and line mitres.

Marc also provided a pretty cool Draw2d example that demonstrates the various line and drawing options available in Draw2d. Check out a couple of screenshots below:


Thursday, November 13, 2008

I just don't have any capabilities

One of the new Requirements For Participation for the Eclipse Galileo Simultaneous Release is Capabilities . As the guy who championed this new "must do", I thought I would post an email I saved about this.

Things are progressing here, and I have what may be a stupid question, but I can't seem to find the answer via google or online help anywhere....

Lets assume that I ship the first release of this product I'm working on as a eclipse platform application, rather than an RCP. Given the numerous dependencies on EMF, GEF, GMF etc that I'll have how do I disable/remove their contributions to the File->New menu? My reasoning is that I really don't want to confuse the user with wizards they should not be looking at or using...

Any ideas on where I can look for examples on how to do this?

The obvious answer for the customer is to take advantage of capabilities in Eclipse. I know several teams have provided example capabilities, such as the platform and EMF, but they are just that, examples. Trying to get a set of working capabilities without the knowledge of how everyone's plug-ins and features fit together is not a fun task.

As part of our Galileo packages, wouldn't it be nice if we provided some out of the box, fully functioning capabilities to do just what our Eclipse customers are asking for. What parts should and should not be active when I am a C++ developer or a PDE developer? What are the advanced features? Do I need an extra capability to allow the end user to turn off the advanced features?

And by coming up with a proper set of capabilities, we will be able to do a little better job of integration testing and be able to turn off the tens of contributions to file -> new.

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.

Wednesday, August 6, 2008

Eclipse Galileo Simultaneous Release

For those who missed the ongoing discussion, it is official. Galileo will be the fourth Eclipse simultaneous release following Callisto, Europa, and Ganymede.

Io was due up to be the name of the release as the fourth of the Galilean moons, but given that "Io" looks a lot like "10" and "I/O", the planning council went with the name of the astronomer who discovered these four moons. An excellent choice.

Cheers to Galileo.

Wednesday, June 11, 2008

Mama Don't Let Your Babies Grow Up To Be Release Engineers

The talk today on cross-project-issues-dev about JAR signing, update sites and getting booted from a release sure brought back memories. This release, GEF was able to migrate to Nick's common modeling build. This is a big deal.

You see, during Europa I was in the exact same position. I was the release engineer for GEF and had to deal with all these release engineering issues. I was lucky to have JAR signing and pack2000 optional in Europa as GEF did not get these things done. The GEF downloads site did not have the phoenix look. I had a battle with the update site. I could go on. We say it is no big deal to complete all these little details, but until you try, it is a big deal.

The most important aspect with the common modeling build is that there are now more projects using it than I have fingers. Everytime there is one of these releng issues, rest assured all the projects using the common build can work together to get it fixed. And when the common build supported all the Ganymede must do's, we all get a free ride.

Thanks again goes out to Nick for his release engineering support.

Thursday, March 27, 2008

New Look for the Palette

Way back in March 2006, the visual design team at IBM started working on a new UI for the palette. Well it has taken a while and some refresh to the design, but the Eclipse modeling team at IBM has finally implemented a new palette.

A shot of the Palette view for the GMF logic example:
The new palette includes:
  • New color treatment for drawers: Closed, expanded and hover.
  • New color treatment for groups and tools: white background, mouse hover and selected.
  • New color treatment for stacks: white background, mouse hover and selected.
  • New Pin in and Pin out icons.
  • New Palette icon.
  • New dock and expanded look.
  • Drawer icon optional.
  • Toolbar group (the top tool group above is in icon mode: selection tool, zoom in, zoom out, notes stack).
  • A completely new look for stack, including flyouts and pinned stack (above shows the Rectangle Types stack pinned).
Cherie has already committed most of her work and is finishing up the stack work for GEF 3.4 M6.

Best part of the new palette is that there are no API changes, all GEF (and GMF) clients get a new modern look for free.

Feel free to bang away and raise any Bugzillas on us if you find any issues.