Kevin McGuire

Eclipse UI Guy

e4 talk in London, Sept 19

If you happen to be in London on Sept 19, I will be speaking about things e4 at the Software Practice Advancement fall seminar series of the BCS. Please follow the link to registration if you plan on attending. I will be doing a general introduction of the e4 project, with emphasis on the UI modelling and declarative styling work, plus some hot off the press working demos!  Apparently it takes place in a pub, so if the talk flops you can still enjoy a good pint.

Hope to see you there.

Declarative styling will change how we think about Eclipse

As part of the e4 incubator effort, we’re looking at declarative UIs, and in particular declarative styling. During the Declarative Styling Roundup call we looked at both CSS and XAML as approaches.

When I’ve spoken to people about declarative styling, sometimes its difficult to convey why this is important for Eclipse, and in particular RCP applications. Typically when extolling the virtues of declarative approaches, one talks about ease of authoring, ability to provide multiple alternatives easily and out of compiled code, easier path for tooling, ability to allow graphic artists to participate more closely in the development process, etc.

A subtle but important benefit though is that it changes your expectations of what you can control.

Here’s a pop quiz:

How is the border color of the CTabFolder (the widget which implements the view and editor stacks) determined?

I actually didn’t know the answer to this offhand, despite working on the plugin based theme definition work in 3.3.

The answer is: its a static field in CTabFolder, whose value is:

borderColor = display.getSystemColor(BORDER1_COLOR);

That’s right, its hard coded to be a value determined by the OS. That’s an extremely reasonable default, but why is it the only possible value? Better yet, why have we never tried to change this as part of our theme definitions?

The latter question is the interesting one for me. First, I think its just too difficult to author theme definitions as plugin.xml entries. A proof point of this is the fact that so far the total number of add-on themes for the SDK is, well, zero as far as I know. Meanwhile, how many themes are available for your WordPress blog? Thousands and thousands.

The subtler problem I wonder is if we’ve simply not been in the mindset that we should change the borders. I’m not sure if its the platform look and feel mantra, or more of a blind spot. Certainly for me, it never occured to me to try to change the value until today.

But today, I’m taking a groovy looking mockup that Linda Watson drew for me that I’m trying to implement as a demo of our e4 modelled UI work and CSS. For those who don’t know, Linda’s hand hugely shaped the look of Eclipse over the years, so she clearly has a pretty good grasp of what comes naturally in Eclipse. How is she to remember we can’t change CTabFolder borders?

There’s a million of these kinds of hard coded (or difficult to change) look choices in Eclipse, and no designer or developer can have an accurate mental model, so I think we just end up believing that you can’t change anything, or its too hard.

I’m really liking this split between UI model, and look.  The e4 demo process has been an interesting one, because I find the more I think in terms of CSS, the greater my expectation is that almost every aspect of Eclipse should be styleable.  And that, in short, I believe will be a subtle but fundamental change in how we think about Eclipse.

UI Working Group becoming popular venue!

The UI Working Group is a forum for people to discuss Eclipse UI issues.  Its available as a sounding board for UI walkthroughs, providing feedback on UI design issues, guidance on best practice approaches, issue of consistency, etc.  Its members are UI expects from across the Eclipse community, so you get lots of experience at your disposal for the very low low price of, well, free!

We’ve had some great, thought provoking presentations.  Some recent activity:

  • Susan Franklin McCourt  presented a walkthrough of some UI design issues in the new P2 UI.   I know she did a lot of work preparing for it and I think that paid off in getting some good feedback and ideas.
  • This last week Kaloyan Raev and Bogdan Vatkov presented on some design issues and ideas for improvement on the base Search UI.  There was some great discussion and some talk of doing a community driven tweaklet to explore alternative designs.  We will be having a follow up call soon to discuss specifics.
  • David Carver has said that he’d like to discuss Preferences and Launching/Debugging.  We will probably do these as two sessions.
  • When these are all completed, I’d like to talk about consistency around indicating required fields in wizards, dialogs, and forms.

The schedule is getting busy!

This is great to see.  The calls are only an hour and there’s lots of discussion, so I find these sessions work best when the presenter comes with a focused, well prepared topic.  Of course “best” is a measure of what the presenter got out of it, either in new design ideas, answers to questions, or raising some issue with the hope of community engagement on the topic.

The calls are open to all Eclipse Members; anyone can join, and anyone can present.

Being less of an IDE will be a lot of work in e4!

There has been a growing discussion around the fact that Eclipse should look and behave less like an IDE. It was a recurring topic at the e4 Summit, and is a topic near to the hearts of many an RCP developer.

I came across the following help documentation while working on 3.4 help context IDs, this is from org.eclipse.platform.doc.user contexts_Workbench.xml (shows up in Preferences->General->Workspace):

<context id=”workspace_preference_page_context”>
<description>
This preference page is used to set the IDE-specific preferences settings related in workspace.
</description>
</context>

This description made sense during Eclipse 1.0 (probably when it was written) but for any RCP app that wants to reuse this rather general preference page its a real problem. While so far we’ve been focused on the architecture and API, this IDE/non-IDE split will surface in a surprising number of places. How do you reuse Help doc when you don’t know the context of usage?

Hmmm, this is going to be even tougher than I thought!

Eclipse shouldn’t look like anything

The e4 summit is coming up end of this week and as I was preparing my position paper for it, I pondered the question,

“What should Eclipse look like?”

I then realized that Eclipse shouldn’t look like anything! It’s like asking, “What should a web page look like?”. Different web pages, geared towards different communities, have very different looks. Even within a specific area like B2C e-commerce, Amazon pages have a recognizable style and interaction which at a glance fundamentally differentiates them from say BestBuy.

However, when I survey the set of Eclipse applications they all at a glance yell “Eclipse!” more than they yell their respective companies or domains. That’s not through some kind of laziness or lack of caring on the part of the developers.

Eclipse started out as an IDE. Many decisions were burned in early on. Due to either API compatibility or preconceptions which now put blinders on us, we’ve not strayed all that far. We’ve grown some Presentation level APIs for doing small things like deciding tab style (one of two, you chose!), hiding perspectives, etc., but these have been added piecemeal in reaction to specific community requests. So we’ve been able to open things up a little, but relatively speaking, its still a pretty closed world. Any variance you see is mostly a testament to the incredible determination on the part of application/RCP developers.

At the platform level, updating the look of Eclipse ends up being fantastically controversial, and not surprisingly, given that every change on the glass we make, no matter how small, decides what every Eclipse application looks like. Its close to impossible to make the right decision for so many different kinds of applications and users. But that puts us on the path of least resistance, which means things stay the same. As time goes on, Eclipse is looking rather, well dated. To change things, we will need to see some fundamental shifts in the Eclipse frameworks and components.

I am therefore very excited about the possibilities in e4. The summit has some great topics listed, like:

  • Declarative UI
  • Styling/CSS
  • Modelling the Workbench
  • Rich Client Platform

My hope is that in the future, there will exist graphically rich, subtly styled, dare I even say sexy, Eclipse based applications where the only place they reveal their Eclipse technology basis is in the About.

UI BOF at EclipseCon!

We’re having a Usability and User Interface BOF at EclipseCon. Hosts of this event are the illustrious Mik Kersten, the jazzy Kimberley Peter, our fearless UIWG leader Bob Fraser, and yours truly. We’re hoping for good community participation, so bring your ideas, questions, complaints, and of course, beer.

A funny thing happened on the way to EclipseCon (another e4 post)

Although it’s normal to be judged based on actions, sometimes if you know the person’s intentions it can help you change the way you feel about it.

So with regards to this whole e4 debacle, let me say that our intentions really were honourable!

We on the platform team care passionately about Eclipse. We know you do too. We want to see it live a long, healthy life. We want it to serve its community as best it can. When we can’t achieve that it makes us sad. It’s clear to us that for Eclipse as a platform to remain long lived, vibrant, and relevant, it must be able to change. But the weight of a zillion plug-ins, projects, and API means the path of least resistance is stagnation, and the effort to effect change given the current constraint system is becoming monumental.

Therefore, two things must happen:

  1. A new space must be carved out in which experimentation can happen, leading to change.
  2. New people must get involved, bringing with them their energy, ideas, requirements, knowledge, passion.

These two are intrinsically tied.

That is e4.

We have some ideas. We want to share those ideas. Of course the #1 place to share them is EclipseCon, amongst the community that cares. This discussion is important. Last year’s discussion was vague because of course there were just glimmers of ideas, leaving smart people like Chris puzzled. We needed to be more concrete in expressing these ideas.

We need some demos!

Why? Because for one, talk is cheap, but code speaks volumes. Second, because we all love code, working code, code that does something cool. That’s why we do what we do for a living. And finally, because code is the prose of our ideas.

So we’ve been working very very hard to put together a few demos that hopefully would feel compelling to people, would get them excited. Would make them go, “hey I gotta get involved in that, where do I sign up?!”. And of course would express our ideas.

Now as Bjorn pointed out, given that our goal is A New Era of Openness (tm), then working on these demos outside of the community spaces isn’t a good start. That’s true I suppose, but please consider it from a different angle:

Have you ever worked on an email that was super super important? Of course you have. You want to make sure that as much as possible it matches what you have in your mind. But your thoughts are unclear. So you write a draft. You don’t send it right away. Instead, you edit it again and again. Maybe you have a close friend have a look at it to give feedback. You do all this because the act of writing the letter helps clarify your thoughts. And because you know you’ll only get one shot to make a good first impression.

That’s what we did (well, not the first impression part obviously, sigh).

Then someone said, “Well gee these guys are going to want to run the demos themselves, see the code.” Rightly so! We need a place to put it…

And then someone else said, “You know if this takes off then we’d like to avoid moving the stuff because we’ll lose history etc. We should create it in such a way that would avoid that.”.

And that’s when the trouble began. Because you can’t just simply make such a little place in Eclipse, on the side, to show people something. You need to start this big engine up that eats web forms and emails and burps out that place. And that engine is a public engine…

Others have explained what ensued. You know, we’re not marketing people. We’re just developers in a hurry hacking some code for others to see, trying to make this process stuff go away so we can get back to that. Naive, yes. But well intended.

On a positive note, we’ve already (and in advance too!) achieved one of our goals, which was to get people talking about e4!! Hrmmmm…

More seriously, if Eclipse is to move forward, then it needs to shed some of its baggage, like obtuse programming models, overgrown APIs, etc. And we too equally, if not more so, need to shed our own emotional baggage. Otherwise we’re stuck with the same models (programming and mental) that will only result in the same past being retread. No future in that.

Guiding the user to Preferences import/export: You can help

The Eclipse SDK is feature rich.  So much so, that its not uncommon for us to see bugs requesting a feature when in fact the feature is there, just difficult to find.  This pains me, because knowing how much work has gone into implementing a feature, its a shame that still we fail the user because they couldn’t find it.

Case in point is a recent bug asking for the ability to save preferences outside of the workspace.  Already exsits!  Its in File->Export->General->Preferences.  Of course!  Who wouldn’t think to look there?  Even for me it took me a minute to find it, all along I was trying to figure out if we really supported it or if I just imaged it (sometimes, being overly imaginative, I confuse “we should do X” with “we did X”).

The general solution to our complex UI is, well complex.  But in this particular case, we’d see a huge benefit from having links to the import/export commands somewhere in the preferences dialog, since, gee, that’s where people expect to be able to import/export preferences.

This seems to me to be a great opportunity for community contribution, since the commands already exist, its should just be a matter of:

  1. Determining the right placement in the preferences dialog
  2. Creating the links

For an example of links in the preferences, see the page for Team->CVS->Label Decorations and note the two links on that pref page.  The bug is marked HelpWanted so roll up your sleves and help make it easier for the next guy!  As always, the platform UI team is happy to provide you with assistance.

I believe that with a number of these simple fixes we can increase the usability of Eclipse without hurting our heads on deep questions like, “Who the heck ever looks in Import/Export anyway?”.

The Joy of Color (and the Despair of Computing Them)

I have a confession to make: I love color. I marvel at combinations as my pulse quickens. I’m fascinated how different colors come in and out of vogue, and remember olive green kitchen appliances with a combination of sentimentality and horror. When nobody is watching, I sneak onto the Color Lovers website (I’d like to say for the articles, but mostly I just look at the pictures).

I’ve known a few people who are exceptional at picking colors, some of which I have the honour of working with, who consistently come up with great combinations.

I’m not one of them though.

If you’re like me, you should check out The Color Scheme Bible. It has some good but brief introductory material on color theory, the role of light, and the emotional effects of color. The majority of the book however is filled with pages of color combinations, where each page has one major color, two supporting colors, and two accent colors. Although its intent is to help you pick colors for home decorating, its also a wonderful exploration of palettes. I have great fun just flipping through it. Some pages are bold, some surprising, others subtle.

Color Scheme Bible

Then there’s the “color theorist in a box” approach like you find online at Behr paints or Color Blender. These work pretty good and I’ve used the Behr site myself for picking two supporting colors to go with a wall color I had chosen, with pleasing results that I’d not have come up with.

In Eclipse 3.3, we softened the tab colors by blending white to the system TITLE_BACKGROUND. It was reasonably successful but in some cases (platform color schemes) the results weren’t as readable as I’d have liked, and in others I just found I didn’t quite like the results aesthetically.

We could probably refine the rules to improve contrast, although even this is complex because the human eye doesn’t work uniformly across the spectrum (for example, blues and blacks are harder to distinguish, and therefore require more contrast, than others with the same RGB delta). But when I look at books like the Color Scheme Bible and consider the nuances of the combinations, I question whether computing colors is a reasonable approach in the first place. It’s certainly a pragmatic approach because it means that no matter what platform you’re on, no matter what desktop color scheme you have, the results will look passable. But we can’t be confident they’ll look great. And its clearly no substitute for the clever eye of one gifted with color sense.

What do you think? Is computing colors enough for Eclipse? Or should we go the web/CSS route and supply palettes of pre-chosen colors that work well together but that have no relation to your desktop color scheme?

Ellipsis for Eclipses

Here’s a brain teaser for you: when do you put ellipsis (ellipses? I always get confused) at the end of a menu/button label? Seems simple enough: you use them when it results in some kind of prompter for more information.

But Jared Burns’ bug #205521 saying that “Reset Perspective” should be “Reset Perspective…” made me realize it wasn’t so clear.

Our own guidelines do not specify how to handle ellipsis so I took a peak at the Vista guidelines, which we look to for guidance if we’ve not established our own specific guideline. They state (my bold):

While command buttons are used for immediate actions, more information might be needed to perform the action. Indicate a command that needs additional information (including confirmation) by adding an ellipsis at the end of the
button label.

Proper use of ellipses is important to indicate that users can make further choices before performing the action, or even cancel the action entirely. The visual cue offered by an ellipsis allows users to explore your software without fear.

This doesn’t mean you should use an ellipsis whenever an action displays another window—only when additional information is required to perform the action. Consequently, any command button whose implied verb is show another window doesn’t take an ellipsis, such as with the commands About, Advanced, Help (or any other command linking to a Help topic), Options, Properties, or Settings.

Generally, ellipses are used in UI to indicate incompleteness. Commands that show other windows aren’t incomplete—they must display another window and additional information isn’t needed to perform their action. This approach eliminates screen clutter in situations where ellipses have little value.

Note the two bold parts. First, they specifically call out confirmation as deserving ellipsis. Second, the point about reducing fear of exploration is very important. Personally, I’d like my UI’s to be without fear, and a good undo seems a better solution. But I digress.

Following the guidelines, it should therefore be “Reset Perspective…”. And it should be “Preferences” (without). Simple enough.

But hang on a second, Vista itself has “Empty Recycle Bin” (no ellipsis) which prompts for confirmation. And “Delete” in the file explorer/desktop doesn’t have them, yet also confirms. Is it just a matter of them not following their own guidelines? Should our “Delete” (which confirms) have ellipsis?

Consider more “use them to tell the user not to be afraid to try the operation”. That’s a great motivation, and matches why “Reset Perspective…” is right and so is “Preferences”, since the former seems scary and mysterious, and the latter innocuous. But what about our friend “Delete”? Surely this is the scariest operation of them all! Yet neither us nor Vista use ellipsis.

Should we change it? No, because it would look silly.

Nobody is going to try “Delete” just to see what it does. We know its scary. The fact it confirms doesn’t mean I should put ellipsis as a way to encourage you to try it out (kinda evil, actually). It doesn’t add value, an important, subtle, gray issue the last line of the guideline brings up. As for “Empty Recycle Bin”, I assume the idea is the same, that you know its going to do something major so the ellipsis as an encouragement to explore would be either worthless or a bad thing.

A point of confusion is around the notion of incompleteness. I am told that if we change “Preferences” then it’ll mark the third or fourth time we’ve changed this label, back and forth adding and removing ellipsis. The pro point is that you haven’t completed the task by just opening the dialog, you need to do something in it. The con point is that its just like “Properties”, its a short form of “Open the Preferences Dialog”. I find the latter more correct and in any case don’t find it adds value because it should be pretty obvious that selecting “Preferences” won’t do anything bad.

Finally, as an exercise to the reader, consider the rules around a command whose confirmation dialog is optional, ie. the “Do not show ask me this again” type.

What all this has really brought home to me is the point that guidelines aren’t cut and dried rules. They require interpretation. Even a simple thing such as ellipsis can result in differing opinions by some pretty darn good UI people. Can we really therefore expect success out of having such things as checklists for release criteria?

Recent Posts

Archives

Categories

Meta