Thursday, March 27, 2008

Kettle, XUL, SWT and a Bit of Theory...

I've been working on a very fun and challenging proof of concept / usability project that involves Pentaho Data Integration (Kettle), XUL, SWT, Swing and a very cool, slightly controversial theory: with a lot of work frontloaded, we should be able to port user interfaces to any UI technology, and expect consistent behavior AND look and feel without much, if any, additional code .

The project I'm in the middle of encompasses three different but equally compelling goals:
  1. To move Pentaho forward in providing common layers across our core pillars (reporting , analysis, data mining, ETL and dashboards).
  2. To provide a proof of concept for the Pentaho XUL Framework, an architecture built to help us support common UIs across all of our applications and tools .
  3. To provide a common way of describing and managing the information needed to connect to a database.
So, we began by taking Pentaho Data Integration's connection dialog ( a powerhouse of detail and metadata concerning over 30 different database connection types), applied some usability design to it, and are in the middle of rewriting the dialog using XUL and some new design concepts.

This required a lot of up front work on the part of our lead Pentaho XUL developer, Nick Baker. Nick has plumbed an architecture for Pentaho that makes it possible for us to define a user interface in XML (specifically, using the Mozilla XUL specification), and use a common set of wrapper libraries to render the UI in SWT or Swing, without rewriting any of the UI, and reusing a great amount of the business logic code. There are also plans to begin a XUL-to-Web 2.0 library as well, which will cover most of the UI technologies that we use for the Pentaho projects.

Interested? Download the source and demo, take it for a ride, inspect the code and let me know what you think. Here are the home pages for both the Pentaho XUL Framework project, and the Common Database Connection Dialog proof of concept.

Common Database Connection Dialog

Pentaho XUL Framework Project

Go ahead and post here, on the wiki, or shoot me an email. I look forward to your reactions and suggestions:)

kind regards,
Gretch

PS. All you Kettle users & developers, here's a chance to weigh in on some needed UI changes for Kettle's database UI... don't miss the opportunity!

6 comments :

Daniel Einspanjer said...

This sounds interesting. I'm looking forward to poking around with it.

Daniel Einspanjer
Metrics Software Engineer
Mozilla Corporation

Unknown said...

Looks cool, but isn't it mudding the waters a bit of Pentaho ;-). Isn't Pentaho supposed to be focused on BI, and not that much involved in making GUI frameworks.

Best regards,
Sven

dhartford said...

I agree with Sven, as a BI Tool the focus should be utilizing existing Web technology or commonly used desktop technology. Pentaho already uses SWT/Eclipse, and although I encourage more innovation it would make more sense in the BI space as the existing tools succeed at completing the job (and where they don't, focus on fixing where the existing tools are lacking?).

I know from experience UI work is very time intensive, so I know hearing feedback like this kinda knocks the breath out of you, but just being upfront.

Gretchen Moran said...

Sven and dhartford,

I absolutely agree we don't want to become a GUI framework house - that is the beauty of the Pentaho XUL framework. It allows us to leverage existing UI technologies (SWT, Swing, XSLT, etc) with the initial expense of thinly wrapping an API around the technology to make it friendly to the interface definitions we use across the board.

In the spirit of open source AND innovation, we want to keep our minds and architectures open to directions that our community may bring that don't necessarily fit into the Eclipse model or SWT, or Swing or Web 2.0.

Download the code, I think you'll get a different perspective on the initiative. And sincerely, thank you for the honest feedback... it's not really a dialog if we're just going to pat each other on the back every time, now is it?

kindest regards,
G

Daniel Einspanjer said...

I think I might be able to take these arguments and turn them on end. :) Having a strong common framework will be important to Pentaho because they need to allow the majority of their developers to focus on writing BI tools, not GUI wetwork. If the developers can all write simple expressive descriptions of the UI needed for their tool/application in XUL and then rely on the framework to translate that code into a SWT or GWT or Swing application, that will be a big win.

One simple case in point,
* Kettle is currently SWT
* SWT on OSX uses the carbon API which is 32-bit and won't be ported to 64-bit
* SWT-cocoa might be a while in the making before it is stable
* Java 6 on OSX will be 64-bit only

This chain of events leads to a problem for Kettle when they want to support either Java6/64-bit OSX. They'll either need SWT-cocoa to be stable and ready to roll or they'll need to switch to a different windowing toolkit.

If they switch to XUL then that might be the last switch they'd ever need to make, even if for some reason they end up wanting to have a Silverlight UI next year.

Unknown said...

I never said having a common framework is not good ;), but developing one yourself and especially maintaining them (with a full implementation and complete synchronization between the different sets) looks very resource intensive.

What all successful companies do is focus on their core business (BI in Pentaho's case) and either out-source the rest or just stop doing it.

For the proposed framework, I've been looking for some other XUL bindings and I can imagine e.g. tables, ... being a major problem.

Then again if Pentaho can make it work 100% and has the resources to spare to maintain the implementation (I expect it will be hard to "build" a community around it at first), I have no problem at all with an extra GUI framework ... sprinkle in a few more comments in the source code and a "license flower box" here and there and we're good to go.