This week I went to a demo of Matisse4MyEclipse, a port of the NetBeans GUI editor to the Eclipse platform done by Genuitec engineers. The special guest was Sun's director for Java Tools Tim Cramer:
Tim stunned the audience by announcing that "[Eclipse Director]Mike Milinkovich invited us to join Eclipse again, and we decided to go ahead and do it". Everybody held their breath, and you could hear a pin drop. "Just kidding," he added, to roars of laughter.
He admitted the port came as a surprise to him and at first he didn't know how to react. When Todd called him about a week before the announcement, "I went through the whole 5 stages - Denial, Anger, etc.". But finally came Acceptance. "Matisse4MyEclipse is positive for the Java community", he said, adding, "It validates Matisse as a premiere feature set".
Also in attendance were several Genuitec engineers and leaders including Todd Williams (VP of Technology) and Wayne Parrott (VP of Product Management). After a presentation by Todd and Wayne, Tim answered a few questions about the technical and political ramifications of this port.
I was intrigued by the port so I tried to learn as much as possible about how it was implemented. If you're not into that kind of thing, you can skip this section.
The engineers showed Matisse running in both NetBeans and Eclipse, and it looked almost exactly the same except for a few changes to make the tool fit in better with the rest of the IDE. The main Matisse design surface (i.e., the editor) was preserved intact, using the SWT_AWT bridge. In other words, that part is running Swing code. All the views around the editor are standard Eclipse views, rewritten in SWT.
An Eclipse multi-page editor is used, with the Matisse designer hosted in the "Form" page (see above). The "Source" page (below) hosts the standard Eclipse java editor. In this preview, you can see and edit Matisse-generated code in the source page but the engineers were working on a way to hide that to prevent accidental modification.
A few modifications to the Matisse code base were made, and these will be donated back to Sun under the Sun Public License (which is equivalent to the Mozilla license). Sun is already talking to Genuitec on how to collaborate and keep things in sync, so Genuitec can pick up new versions of Matisse without having to redo the port from scratch.
With this port Genuitec is trying to put to rest, once and for all, that they are a "bundler". Indeed, one of Todd's slides pointed out many innovations that Genuitec is proud of, including:
First source-level JSP debugger for Eclipse
First public Eclipse RCP concept article in early 2002
First "hot sync" JEE application deployer
And now they're the first to demonstrate integration of non-Eclipse technologies into Eclipse, which, after all, is supposed to be a tools integration platform.
Genuitec is also distancing themselves from the semi-religious camps that have grown up around the different platforms. "We're technology agnostic", says Wayne Parrott, opening the door to further infusions of technology from NetBeans and other projects.
The excitement about Matisse is considered by some to be an indictment of the Eclipse Visual Editor project. One reason for this might be VE's ambitious scope. A more focused designer like Matisse can concentrate on the most commonly used and needed functionality. According to Wayne, "We gave our users the choice between VE and Mattise, and they overwhelmingly picked Mattise".
Genuitec also looked at Instantiation's critically acclaimed WindowBuilder Pro product. However sources say that the pricing models were too much of a mismatch. Genuitec would have had to raise its prices in order to incorporate royalties for WindowBuilder.
Speaking of prices, Genuitec made it clear that they were profitable and very happy with their pricing model in which users pay a small yearly fee for the latest code and support. According to Todd Williams, the MyEclipse portal has about 230,000 members and expects to hit 400,000 by the end of 2006. The Matisse port will not be free, but will be available for no extra charge for customers using the MyEclipseIDE Pro version.
For Sun's part, they will be continue to work on NetBeans and Matisse. For example, according to Tim, 2-way editing (i.e., being able to edit the GUI interchangeably using drag-n-drop or by changing the source code) is high on the priority list. He said more details on NetBeans versions 5.5 and 6.0 would be forthcoming at Java One.
Take-away quote: "No way." -- Tim Cramer (when asked if NetBeans would ever support SWT).