The irony of FindBugs
What is it with open sores projects and usability? I am baffled by all the energy and effort expended by any open sores project with a UI to avoid usability and principles of good design at all costs.
Maybe it’s a subconscious effort to emulate linux. Just as children will adopt the bad habits of their parents, java open source fuckwits will emulate the linux approach to UI; a disgusting soup of every possible ingredient ever conceived by man or nature coupled with a sickening obsession with every ugly default possible.
Today’s vomit lands on a tool that seems to be gaining some popularity; FindBugs.
In addition to the open source curse, FindBugs is unfortunate enough to have been conceived as an academic project. Those facts combined have meant the kiss of death for this poor little app.
Where does one start? Well, lets first create a project. Here’s the first mystery. You have 3 areas, one of which contains ‘archives or directories’, the second of which contains source directories, and the third is for classpath. Now, I’ve only been doing java for about 8 years, so I might not be familiar with all the lingo, but how on earth is a ‘archive or directory’ different from ‘classpath’? Of course, there are no hints or tooltips as to what should go in these areas.
If you haven’t yet deleted this miserable little app and fired off an angry email to its hapless developers by now, you’ll notice the second bit of mindless cruelty they’ve chosen to inflict on the poor sap attempting to use it. While the file chooser allows for multiple files to be selected, the app itself will merrily ignore these and simply pick the last one you chose. I suppose that’s one way to discourage people from having lots of dependencies.
If by some freak accident of nature you’ve managed to last this long, it’s ready to finally ‘find bugs’. Here we have more unwelcome anal intrusions in the form of a modal progress dialog. The progress dialog will happily write things to the UI console, except that because it’s modal, you have no way of actually looking at all the things it’s whining about. Of course, the warnings are deliciously verbose too, with every line beginning with a full timestamp and the fully qualified class name of the internal handler that reported the issue. I am utterly baffled by this classname fetish that opensores projects have. What exactly do you people get from showing your classnames to your end users? Is it some kind of freakish penis waggling maneuver? A bizarre mating ritual? Emotional issues resulting from being beaten and molested as a child?
Of course, the modal progress dialog has a cancel button, and if you press it you get….another modal dialog, asking you to confirm. Now I’m no grizzled UI veteran, but in all my years of using computers, I have yet to find an OS with such a bizarre paradigm. Real innovation here guys, a modal dialog with one button, that confirms with another modal dialog when you press said button.
The default settings are also of highly dubious quality. Every time you return a Date field for example will cause findbugs to throw a hissy fit. Ignoring results from reading streams (something which is often perfectly legitimate) is also whineworthy.
Of course, should you wish to change these detectors, your eyes will be stabbed yet again with this unfathomable UI. You’re presented with a JTable where the detector fully qualified class names are listed, along with ‘speed’ and ‘enabled’ columns. Of course, since it’s open source, nobody knows how to actually use a JTable, so the columns are all the exact same size. This results in every single class name being truncated, for your maximum viewing pleasure.
The problem is, the application’s functionality really isn’t that bad. The presentation and user interaction though is so astoundingly horrific that the only people who will ever take this seriously are the kind of tosspots who wouldn’t know elegance and clean design (whether it’s in UI or code) no matter how many times they’re clubbed on the head with it.
The one solace I have from all this is that it has nothing whatsoever to do with JSF, so hopefully Rick Hightower will stop working quite so hard at earning the coveted ‘most tedious windbag’ village idiot subcategory award.
October 18th, 2004 at 2:47 pm
To my mind, the problem with FindBugs isn’t the implementation, it’s that stand-alone byte-code-based static analysis tools simply can’t have more than a fraction of the usability of IDE-integrated, source-based static analysis tools. The interaction model is just so much richer and more powerful. Given the existence of adequate plugin APIs for all of the major Java IDEs, I’m frankly not sure why anyone would bother writing FindBugs.
Just so you know, you won’t have any excuse for using FindBugs once JetBrains starts it’s next EAP cycle. I’ve written inspections covering essentially all of the issues found FindBugs detectors, to be shipped in InspectionGadgets in the Irida release cycle.
–Dave
October 18th, 2004 at 4:22 pm
The real question is: why even bother with a GUI? It’s as if programmers have some awkward GUI fetish. Just forget it; don’t write one. First, unless you’re Jakob Nielsen your GUI is practically guaranteed to elicit reactions similar to Hani’s. Second, by avoiding a GUI you automatically filter out idiots (those people who don’t understand what they can’t click). Third, your program is easier to integrate into IDEs, which is how programmers are going to want to use your program anyway. In short, tying your wonderful program to a ludicrously-naive GUI earns *you* ridicule and *your program* a quick death.
October 18th, 2004 at 4:55 pm
As lead developer on a similar utility (PMD) let me just say this: FindBugs rocks. And David and Bill are nice guys. They even ran FindBugs on PMD and sent me some patches!
October 18th, 2004 at 7:27 pm
Don’t use the GUI, use the Maven plugin! *g*
http://maven-plugins.sourceforge.net/maven-findbugs-plugin/sample-findbugs-report.html
October 18th, 2004 at 8:50 pm
Hmm, I just used the maven plugin…
October 18th, 2004 at 9:51 pm
Hani,
Didn’t you already win that award this year at TheServerSide.com symposium? :)
(I put the emoticon in there b/c I remember how much you love them.)
Cheers
–Rick Hightower
October 19th, 2004 at 12:03 am
Uh, Hani, have you ever actually tried to use OSWorkflow Designer?
October 19th, 2004 at 2:54 am
Yeah, I’ve reviewed many open source projects, and most of them has very bad and unfriendly GUI.
The reasons are on the surface. Developers just don’t spend money on GUI designers (and most developers can’t create good enough interface by themselves).
October 19th, 2004 at 4:31 am
It has an Eclipse plugin. Which is fab.
I ran it on a pile of (somebody else’s) crap the other day, and it spotted several hundred lurking NPEs, some extremely ugly very-nearly-multi-threaded code, and the leakiest database logic since the freestyle rolodex.
So I quite like it, personally. Get back to kicking JBoss, you wuss.
October 19th, 2004 at 8:33 am
The real question is: why even bother with a GUI? It’s as if programmers have some awkward GUI fetish. Just forget it; don’t write one. First, unless you’re Jakob Nielsen your GUI is practically guaranteed to elicit reactions similar to Hani’s. Second, by avoiding a GUI you automatically filter out idiots (those people who don’t understand what they can’t click).
======
Then, as a CLI whore, you don’t understand what you can’t read in a console.
October 20th, 2004 at 8:03 am
Cant you understand the concept of pluggable UI ? If not, then i can understand your concept of proper UI design. Let me tell you something, Mr.Eid. In future, try to make your UI pluggable so that you are not totally screwed in all holes when you are asked to change it ??
Got it, GUI Whore ?
October 20th, 2004 at 2:01 pm
Bugs? What bugs?
Steenkeen’ Amateurs.
October 21st, 2004 at 2:00 pm
Just out of curiosity, why did you decide use a blog which breaks quite common GUI guidelines by displaying the comments in a tiny popup window without a close button?
The window also has a table in it with a fixed minimum width, so that if you open it while your fontsize doesn’t quite match the accepted standard size you have to first make the window bigger before you can read the comments…
Tsk tsk.
October 21st, 2004 at 5:54 pm
Pascal, just do what I do and get Firefox to force the comment ‘popup’ to open in a new tab.
October 21st, 2004 at 6:02 pm
Pascal,
What kind of retarded browser do you use that doesn’t have a close window widget in the upper corner of every window?
BTW, happy 30th Anniversary!
http://www.jacobsschool.ucsd.edu/Pascal/
October 21st, 2004 at 11:23 pm
Next thing you know, he’ll be asking for a “back to top of this page” link.
October 22nd, 2004 at 3:46 pm
Hani,
IMHO you have missed the point this time. finbugs is a great tool and the first thing one would do is to set it up running automatically as a part of build process – and it’s good at it.
There is no point in using UI here. I believe this kind of tools doesn’t need UI at all.
October 29th, 2004 at 8:05 am
Tried the Eclipse plugin. Kept getting out of memory errors. So I had to quit using it. Seemed pretty good besides that. Definitely ironic.
November 2nd, 2004 at 8:57 am
Hi,
I used FindBugs through UI as well as from ANT.
The UI is un-intuitive, as you pointed out, however it is easy to get a hang of it soon (there are only so many ways you could re-define the few required concepts). Interestingly to re-load you have to open the project again. Defnitely it needs some working.
Then I integrated it with Ant which works fine so long there isn’t any bugs, Otherwise I still have to go back to the UI to find the actual bugs.
The saving grace is that I have to create a project (.fb file) only once and can reuse it.
It surely needs polishing, and we can contribute some, however I think it is very effective tool with high accurancy. The idea of extending it doesn’t look so simple…actually the challenge seems to be that they use bcel, a byte code manipulation library that I avoid at all cost.
Angsuman
January 5th, 2005 at 10:48 am
The Interview on http://www.javafree.org is “real” too, Mister!
Thks!
April 12th, 2005 at 7:55 am
Written by ‘Me’
> What kind of retarded browser do you use that
> doesn’t have a close window widget in the upper
> corner of every window?
The close widget is not a part of the browser, its a part of the presentation layer of the window manager (in any sane environment), often called window decorations. Personally, I have disabled the window decorations, since they just clutter up the screen.
Still, I don’t think its a problem that there is no close widget, that is also just clutter.
(for the people still wondering, use keyboard shortcuts)
/Mikael
October 14th, 2005 at 7:52 am
ui ? findbugs has any ui ? haven’t noticed, i use ant task and i am happy with it
findbugs, pmd, hammurapi – they all help if you have enough brain to use them