During work, and as part of my part time studies, I frequently have the need to create diagrams. Most often things like UML diagrams, flowcharts and ER diagrams.
So far I've yet to find a single usable - be it closed source or open source diagramming package.
The genral problem seems to be one of two things: Either a package is completely unstructured, and you can do whatever you want, OR a package constrains you to rules, 90% of which will be fine but 10% of which inevitably clash with your particular taste.
Visio is the worst I've come across of the latter. If you choose one of the "formalised" types of diagram in Visio, it turns into a nasty, arrogant know-it-all that places a lot of constraints on the way you draw diagrams OR forces you to forfeit all support.
XFig for instance is on the complete opposite: Generally you're left to your own devices, but it means complex diagrams are extremely tedious to draw.
What I want is to be able to draw "anything". That is, I want to be able to break as many constraints as possible. On the other hand, I want it to be easy to stay within the constraints, and I don't mind a (non-obtrusive) reminder of what I'm doing that doesn't fit the current ruleset. If it's easy to ammend the current ruleset, then even better.
One app I really likes in many respects is Ideogramic UML. It's not open source, but a limited version is available for free as in beer. It's main attraction for me was the gestures (which worked surprisingly well and saved me from that other monstrosity: the overgrown palette) and it's basic support for freehand drawing to annotate the diagram. My main criticism is that you're still forced into a too restrictive model, and the freehand drawing (though a great idea) is too limited beause it's essentially, well, freehand, with no drawing tools available.
Surely this can't be that hard? Checking that you conform to a model without yelling and screaming if you don't - just display a warning in a status bar or change the color of the offending element (and let me turn it off) instead of refusing to accept it.
Allow me to use arbitrary geometric shapes.
Provice a library of elements that have a certain look and certain places to put text and attach connectors, without enforcing specific semantics.
I want a smart diagram editor, not a modelling tool enforcing a specific form of modelling. I want nice looking diagram, not source code generation...
So why can't I find anything that's usable?