Composite applications in the upcoming beta release of the Lotus Expeditor are going to be a very big change in the way we develop our components. One of the biggest problems with developing plugins in Eclipse is that your one plugin brings in the house whenever someone else wants to use it. There are definitely some best practices and patterns that need to be followed in order to insure good componentization. One of the problems with the plugin and bundle architecture is I do not think many people realize it is like a white canvas and what you do on that canvas is up to you. For instance, there is no direct tie to UI or a 1 to n forced relationship with anything, it’s OPEN! So from a componentization point you need to decide if it is wise to put 5 views or 1 view in a single plugin. Will people only want to use one of my views or will they always use all five.
You should ask that question for every class, package and UI component. If it has any kind of re-usability then you should consider putting it in its own plugin. This way if another application wants to bundle it with their suite they will not have to pull in a whole bunch of dependencies just to use the one view.
In the case of Hannover and the Lotus Expeditor there is no editor in play and pretty much everything is a view. I am already seeing the benefits of have an application assembler build the applications with the portal layout tool and wire the components together the way they see fit. This allows re-usable components to be wired and used in other contexts! Very cool!