I'm still looking for a UML editor that fits my criteria, and I'm not stopping until I find one! Today I tried Dia, another Open Source editor recommended by Ubuntu's package manager.

Unfortunately, Dia is really a drawing program with UML objects, not a UML editor. Let's look at the details.

Class and Sequence Diagrams: Poor. Class diagrams are simple to create and modify. Sequence diagrams... not so much. They have multiple problems that I'll go into in more detail; for now, let's just say that drawing class diagrams is fantastically easy, but sequence diagrams is rather difficult.

Configurable Display: Very Good. You'd expect a drawing program to be configurable, and Dia is. You can change colors to your heart's content, modify fonts and styles, and generally modify anything. It goes a little deeper than that, though: Dia's UML tools provide a myriad of options that modify your diagram in compliance with UML standards.

Of course, there are a lot of possibilities in the UML standards, and supporting them all takes a lot of dialog space. Dia does a good job of hiding the complexity, mostly by using separate tabs for operations and attributes. I think it could benefit from some context sensitivity, but I was never frustrated by creating a new element.

Group Selection and Movement: Fair. In class diagrams, Dia provides outstanding group selection and movement. In fact, it works just like a drawing tool. Alignment is easy, too. In sequence diagrams, things get a little harder. Dia can't move the lifelines around as a group. Stuff gets unstuck and has to be rerouted. The process bars aren't resized when new method calls are made, and there's no attempt to keep the message lines straight.

Infinite Undo: Outstanding! Dia seems to have an infinite undo queue. I never ran into any problems with it.

Supports Synchronous, Asynchronous, and Reflexive Messages: Fail. There is no way to generate a reflexive message arrow. Since Dia provides all the standard drawing tools, you might be able to fake it; I tried, but the arrow kept going the wrong way. I need reflexive messages.

Dynamic Document Size: Great. There was a moment when I thought I'd be hampered by page limits. However, selecting past the viewport boundary quickly dispelled that idea. After that, I had no trouble adding classes or lifelines past the boundary.

Scrolling: Unsatisfactory. Dragging a selection past the boundaries causes Dia to scroll, but you're better off using the scrollbars. Connecting message arrows to off-screen classes was a pain; there was no scrolling, so I had to either zoom out or make the connection in multiple steps. Either way, there was no way to be certain that the line was actually straight.

Shared Data Model: Fail. Dia is just a drawing program, not a UML editor. There is NO DATA MODEL. While this makes creating quick diagrams easy, it makes maintenance a nightmare.

Supports Large Projects: Fail. Since there's no data model, there's no import capability. There's also no consistency. Your large project is nothing but a stack of diagrams, with no enforcement of consistency, uniqueness, or relatedness. I suppose you could say that Dia supports large projects, since you can create all the diagrams you want. But that's a little disingenuous, I think.

For niceties, Dia has the best alignment and spacing tools I've seen yet (although it doesn't have ArgoUML's "Broom"). The orthogonal inheritance lines were no problem, even when I stacked the dashed lines up. Image saving was a breeze, and it saved only the portion of the diagram that was actually populated. While I thought the styles were a little large and blocky, they're ideal for projecting to a room full of programmers during peer review: readable from the back. And if I really didn't like it, I could've changed the styles.

Final Verdict: Dia is a drawing tool, much as its name implies. It has some nice UML elements, particularly with respect to class diagrams. If I ever need to whip up a class diagram for somebody, I might reach for Dia. But with its poor sequence diagram functionality and utter lack of a data model, I can't possibly use it for my serious work.