Friday, April 29, 2005

X marks the tab...

So while I'm waiting for the latest new bits of Delphi goodness to be assembled into some machine readable goop... I figured I'd take a few moments to spew a few thoughts...

You know those little “X”s on the editor tabs in Delphi 2005?  The ones that you either absolutely revile as the spawn of the devil, or on the opposite side, they're the Messiah's second coming.  Quite frankly, I'm someplace in the middle... well maybe more toward the Messiah side... When we were considering putting them into Delphi (ie. the Galileo IDE), we looked at how these little images of controversy were handled in other environments.  The first such environment, which was also the most logical, that we looked at was JBuilder.  So we fired up JBuilder to do some research (such as it was).  After playing around with them for a while, I found some usability issues with them, but overall Corbin and I really like the idea. (an aside: the Eclipse IDE has a similar feature as well) Here's a few that I found...

  1. It is easy to accidently click the “X” and close the tab.
  2. They increase the width of the tab, thus decreasing the total number of tabs visible (JBuilder also has a glyph next to the “X“ that shows the content type).
  3. If you want to close many tabs in succession and since the tabs were varying widths, you constantly have to shift the cursor to the new location of the “X“ on the next tab.

The first item is probably the #1 complaint among the “spawn of the devil” crowd.  I, too, sometimes have found myself accidently clicking that little “X” when I don't fully pay attention to what I'm doing.  I mean, I'm deep in the middle of a bug fix or some sort of feature work and I want to click over to some other tab, and bam!  I just closed the tab.  So now I just Alt-F,R,5... That's File|Reopen|5. .  I've just gotten used to quickly doing that little dance.  OK.. so that's the first problem.

The next one is... well... really hard to quantify.  If you hate the “X”, then #2 is probably one of your supporting arguments for removing them.  That's fine, but I also think it is a data point that also can stand on its own.  Screen real-estate is a finite resource and needs to be carefully parceled out.  Now that doesn't mean that we create butt-ugly UIs under the pretense of the almighty screen real-estate.  It means that there needs to be a balance.  I often hear folks, especially among the software engineering illuminati, “We don't need all that eye-candy!“  Riiiight...  If that were the case then we'd all be driving Gremlins, Pacers, or Pintos.  That's why I have a Monet print and an actual oil reproduction of a Monet painted by my mother hanging in my office (both from the Water Lilies series, for which Monet is very famous.  And yes, Monet is one of my favorite classical artists).  Right next to the cool 4ft (120cm) wide poster of an F-15E in flight...  All of it is “eye-candy.“  Of course these posters all have their own stories themselves, which I'll save for another blog entry.

The last item is somewhat subtle.  One of my first thoughts when I saw the “X” on the tabs, was “That's cool! I can now quickly close a lot of files without a lot of clicking or mouse movement.”  Well.. not quite.  So you would close the tab, and the tab to the left would slide over, but that tab is a different width that the one just closed, so now the mouse cursor isn't directly under the “X” and you have to move it to the left or the right and click again.  Grrr...  Of course, if you have a habit of double-clicking, you'd probably appreciate that the “X” didn't appear under the mouse cursor.... sometimes.

So with all these negatives, why the blazes did you put that in the product? First of all, it is just so dang useful and convenient.  Also, we solved the #3 problem by having the tab to the right slide over, which would always put the “X” right back under the mouse cursor.  It's also kinda like chocolate.. you know that too much of it isn't good for you, but in moderation it's pretty tasty.

So, now that we've shipped a couple of products with the “X” and have received some feedback from all the various factions out there. You know, the “spawn of the devil” folks and the “Messiah's second coming” folks.  So we're considering a bit of a change.  What if the “X” was at a fixed location?  Say it was all the way over to the right side of the tabs?

That would solve the all the complaints I listed above.  However it would introduce another problem.  Since there is now only one “X”, you can only close the active tab.  Which was one nice thing about the “X” on the tab; you could close an inactive tab by clicking on the “X” directly.  I suppose we're at a point where a descision needs to be made.  Right now, we're internally using this change for the next release of Delphi to see how folks like it.  So far the response has been positive... well OK, not all positive since there are those that “want their 'X' back!”  Now before you suggest it, no, I'm not going to make this optional.  So we have to weigh the advantages and the disadvatages.  So far, I'm inclined to think this is a reasonable compromise between both camps.  Be warned, however, please keep your comments to the point and well thought out.  Any comment I think is disrespectful and rude, I'll delete.  Think critically about the problem, and consider each side regardless of your personal opinion.  Yes, ultimately, the original decision was based on our (the developers and the overall team's) personal preference, and it still is.  Yet, feedback is still key in how we form our preferences and opinions.  Being, ourselves, developers we like to think of ourselves as advocates for the customers.  Like all groups, there are the radical fringes, but you have to take the bad with the good.. and luckily, for the Delphi community, it is mostly good.  It makes our job more enjoyable and satisfying.

With that, have fun... ;-)..  And, hey, if this works out, I might try and address the “my glyphs are overlapping in the editor gutter!” (OK, Nick?) issues...  Talk about a field full of landmines...