Over the last 3 weeks I've found myself engaging with people who are FUD Poster Children. FUD, if you're not aware, stands for Fear, Uncertainty, and Doubt:
"Fear, uncertainty, and doubt (FUD) is a tactic of rhetoric used in sales, marketing and public relations.[1][2] FUD is generally a strategic attempt to influence public perception by disseminating negative (and vague) information. An individual firm, for example, might use FUD to invite unfavorable opinions and speculation about a competitor's product; to increase the general estimation of switching costs among current customers; or to maintain leverage over a current business partner who could potentially become a rival."
It seems sort of weird to me that, with regards to Open Source Software, FUD even exists. But it does, and people have no problem unleashing some nasty comments. Recently I received some FUDdy comments on the SubSonic project page, up at CodePlex:
"These tools are a hazard. There are lots of similar products to this; Hibernate is one example. They all generate really bad code, produce sloppy SQL, create lots of blocking and deadlocks, and present a huge security hole because they require deep permissions on the underlying database. If you can't write a decent DAL yourself, then you should just use the .Net interfaces; data adapter, data table, etc."
When I read comments like these I'm tempted to think of FUD as meaning "F### U Dude!" (to say it properly you need to evoke an image of a frat guy, 22 years old, drunk by a keg with his hat turned sideways, picking fights with anyone who walks by).
I have a copy of the Tao Te Ching next to my bed, and I read it at night to keep my feet on the ground. Normally I ignore this stuff - what's there to do anyway? People have a right to their opinions. But sometimes my FUD revulsion gets the better of me and I feel the need to challenge the author - try to find out just what made them take the time to write this stuff. On a public space no less!
CodePlex will only let registered users leave comments, so I was able to send the author of the above message a note, and basically say "would you care to backup your thoughts?" - and he did to his credit.
He sent me a private email so I won't relay that here - but it basically comes down to what it always does:
- He was bit in the butt before by a bad experience
- He was having a bad day
- He apologized if he offended me, but stood beside his statement that he didn't like code generation
I was intrigued by this person - he was thoughtful, smart, engaging, and had some REALLY good points. All of which I've tried to address with SubSonic (I don't like massive crufty code generation either it turns out!). We had a good back and forth and he promised me he'd take the time to at least look at the code SubSonic generates and let me know his thoughts. We parted with a virtual clap on the back and all was well.
OK So He's a Good Guy After All - Is That The End of It?
Nope. As a policy I don't delete comments ever (unless they are link-trolling or just trying to get some traffic to their blog) - even if they ask me to.
Since then I've had 4 posts in our forums and 3 private emails - all asking about this comment and whether our code passed an FxCop test (which it does not - but not for slop reasons). In short - it started people talking and grumbling, and a bit of a stir was caused.
I don't mind if people have issues, and I usually duck the sucker punches - the problem is that I devoted (a total of) a couple of hours doing "damage control" - basically defending SubSonic (and myself and Eric) to our community who read this guys post.
There was a follow up comment to the one above (you can see it two comments below, where the person was agreeing with the sentiment of the comment above:
"...I'm with you, however the problem is all these poor souls are under the pressure of their respective pointy haired bosses to produce code faster, faster, faster... so no one really cares crafting a decent DAL not to mention a decent middle tier. To be more precise any generator that is taking your database relations and mapping them to objects is producing your domain specific middle tier, however it is that you've defined that middle tier in your database schema (don't get me started on the wonderful data modeling I've seen). The DAL is encapsulated in this case by the Enterprise Library, remeber the DAL encapsulates the Data Access method not the Data itself"
I sent him an email too, asking him to clarify his point a bit and he responded to me very nicely. Again, the same response: had a bad experience before, no, he didn't have time to actually look into SubSonic, oops, he didn't mean to offend anyone. Sorry.
Now this is not all that negative - I had a good conversation with these guys and the author of the first comment gave me a lot to think about. I just wish he could have stated his thoughts in a less "F U Dude" sort of way.
Do Yourself a Favor - Be FUD-free
There's a massive difference between FUDding a blog or project site and stating an opposing opinion. Frans Bouma knows the difference, and in this post shows his skill as a persuasive writer. Every assertion he makes is backed up by a studied effort, and his opinions (while arguable), are certainly informed.
This comment, in particular, is one that I love that Frans wrote (this comment is from Dan Fernandez's blog, with regards to the whole TestDriven.NET debacle). While it's a tad edgy - it's also well informed and provocative:
"What a load of crap. You can say all you want with 'not work around technical limitations' but unless you state them in full in your eula, it has no meaning.
Furthermore, HE isn't violating any eula. The EULA is between MS and the USER of vs.net express. If he compiles his code with vs.net pro or on the command line, the USER of TD.NET violates PERHAPS that clause (although I don't see how).
You gave the community a free tool. Now you're crying foul that the community is actually using it. Oh my... who would have tought! a tool which is used to the max!"
Before Posting: Run FUDCop
If you're not sure if you're FUDding something, run this check down in your head before pressing "submit":
- Am I using my real name, email, and blog address here?
- Have I really looked at all sides of this issue? Can I defend both positions in a debate?
- What will I say to the author when they call me out on my thoughts?
- Am I sure that I'll stand behind this comment in 2 years?
- (Finally, and most importantly) - Am I representing myself well?
Bad days happen - the problem is that the written word never changes it's mind. There's a reason I make sure to not delete FUD comments - it's the ultimate retribution as time goes by :).
Phil put it best to me once:
"Prove it or STFU"
