WEIRDF against WIMP: MS' new GUIs as a desktop Java killer?

by Rick Jelliffe

Kirill Grouchnikov has a new article up on java.net called How to write a custom Swing control which features a Java version of an odd new control from a recent MS product (that I have not seen in the wild.) Kirill seems unique among the Swing open source java library developers in that he takes seriously the threat that MS' avalanche of new GUI controls poses to Java desktop development. His Flamingo component library provides a few of them, notably a ribbon (I contributed Topologi's breadcrumb bar to the project.)

What is this threat? Java is heavily predicated on an idea Write Once, Read Anywhere (WORA). Its GUI library reflects this, with a fairly conservative selection of controls that can mostly have analog in the native GUI control sets of the WIMP (Windows, Icons, Menus, Pulldowns) -based GUIs of the different platforms. These are slightly augmented by whatever low-hanging fruit is around and are highly customizable, to enable the same controls to be rendered with the native look and feel. And to allow developers to extend the functionality. All good.

But MS is in the process of throwing away the WIMP interface. Or, at least, the M and the P. I call it WEIRDF: Windows, Ectoplasm (highlights, animations, fade-ins, reflections, 3D effects), Icons, Ribbons, Dynamic galleries, Floating things. Over the course of the next couple of years, WIMP interfaces will become increasing old-fashioned and quaint to mainstream users. This is a big challenge for developers, such as myself, who put out Java Swing applications for desktop use.

The major Swing developers at Sun, with no disrepect intended, seem singlemindedly intent on thinking within the box: adding shadows or JOGL effects to the existing set of components. Romain Guy's upcoming book Filthy Rich Clients (which I am looking forward to: I have praised him before in this blog) seems to concentrate on adding Ectoplasm to the existing components: MacCrapery. It lovely, exciting, fun but smacks of window dressing. MS is walking over them: the ribbon interface represents a fundamental rethink of the GUI and its priorities, and the only person who seems to have noticed is Kirill.

I hope that when the Swing guys get the Ectoplasm out of their system, they will take the other parts of WEIRDF seriously. I hope it is just a matter of them getting their ducks in order with rendering infrastructure first. Swing needs to have API-standard components for the ribbon, galleries, dynamic preview, richer tooltips, and so on. For goodness sake, even an XML description language like SWT (let along XUL or XAML). Or a statemachine to allow smart things with contexts. SwingX is the logical place for these; but instead what does it have? Catchup controls for things that might have been exciting a decade ago and low-hanging fruit.

And I suppose we will get this simple application framework sooner or later. But I fear it will be WIMP based, and consequently doomed to hold back Java on the desktop in 80s and 90s style interaction modes. For twenty five years we have all learned that when MS says "innovation" it means clumsy copying, and to look for the state of the art elsewhere, notably Apple. But it is a trap for Swing. And the complete lack, as far as I can see, of even the slightest acknowledgement that this GUI revolution has taken place over at the opposition, let alone any hint of a strategic response, is frankly discouraging for developers like me. I have no plans to leave Swing at the moment, but Swing seems a lot less future-friendly now than it did before. Thank goodness for Kirill.

10 Comments

david
2007-02-22 19:23:14
Other than Eclipse (which doesn't use Swing), does Java really have any desktop presence to lose?
Rick Jelliffe
2007-02-22 19:38:58
Dave: :-)


Well, indeed there are very few desktop applications compared to the browser-based applications except for games and office suites. Certainly the Eclipse or Netbeans rich client platforms give the promise of a nicer basis for custom desktop apps, but SWT probably suffers even more than Swing from WIMP-ishness.

Preston L. Bannister
2007-02-22 21:09:34
Um - you are looking to Microsoft for UI ideas? Why?


Loaded up Windows Vista (in a VM) a couple weeks back, and was throughly unimpressed. Seems like Microsoft's rate of progress cratered after Windows 95. Um ... hello? Dialog boxes and menubars were pretty clever in 1984. Icons and toolbars might have been clever in the early 90's (some doubt even then). Vista finally gets rid of the cascading popup "Start" menu (only 12 years after the original mistake).


In the early 90's the arrival of a new MSDN CD was bound to offer some good reading, and some clever new gadget or the like. Since then - not so much.

Rick Jelliffe
2007-02-23 00:12:36
Preston: By MS' new GUI, I don't mean Vista; I have only ever seen it for the first time this week and it didn't excite me. I mean the new approach to desktop applications with the ribbon, galleries, and so on. I apologize if that wasn't clear. I have been excited by the Ribbon idea since late 2005, when I made a prototype of Topologi's editor using one, see this blog. That is 15 months for some comment from Sun. Sneers from users is one thing, but it is clearly a credible attempt to alter the user interface for desktop applications, whether one likes the details or not.
ted stockwell
2007-02-23 07:30:13

I totally agreee with you, Rick, about the need for new controls.


It seems to me that maybe the Swing developer's emphasis on eye candy is meant to combat adoption of Flash-based GUI technologies. However, when you start thinking about how to develop a rich web application that will run in a browser one of the first things that you realize is that you should ditch the menu and replace it with something like a ribbon control.



I think that maybe Sun could do more to promote GUI development with Swing if they work on making it compelling to develop web-based applications as an applet (After all, a Flex application is really just one big 'applet' - a browser edition of Java should eat Flash's lunch). In order to make Swing compelling for web applications they need some new functionality in the Swing API.


Romain Guy
2007-02-23 10:42:03
Rick,


You are definitely right. We need more components like the Ribbon (which I love by the way.)


Many Swing developers are definitely aware of this but there's catchup to do and it's very important to many people. I do focus on the Ectoplasm because this is what I like to do (Note that I am only a student and I'm doing all this on my spare time.) I am glad that people like Kirill focus on components. All I know is the Swing team has limited resources and they can only work on what people need most today: WIMP.


New components can and must come from the community as well. Projects like SwingX, as you mentionned it, are perfect places to host new controls.

Andrew Sidwell
2007-02-23 16:01:36
WIMP stands for "Windows Icon Menus Pointer", not "Pulldowns". Grr.
John
2007-02-24 13:05:47
Also WORA stands for 'Write Once, Run Anywhere', not 'Read', re-grrr :)

2007-02-26 13:57:29
Ted: Yes. People say that Flash's strength is the development environment and the particular objects and operations provided, which is kind of opposite of Java's general purpose approach.
Andrew, John: Thanks for the corrections. 'Read' was a dumb mistake; at least 'Pulldowns' was plausible!
Guy: I hope Sun grabs you when you finish your studies.
So you are saying that the basic GUI elements of the biggest software application in the world are not even on the radar for Swing to support? Sounds like a recipe for obsolescence. What Swing has proved is that having a community model for components helps get them started, but without a process to bring them in as standard extensions, they forever remain marginal and don't get traction, I think. I read that .NET has some kind of library to contain the best community contributed code, e.g. from MVPs, which I think is distributed with the MS .NET code: maybe Sun could look at something similar: not part of the formally supported code base or API but part of the standard distribution.
Rick Jelliffe
2007-02-26 13:58:33
(Oops that last post was from me.)