Hanalei, Hawaii 9/2/2010
438 Posts and Counting

Unleashing Elmer FUDd

Tuesday, October 09, 2007 -

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"

Related


Gravatar
ian - Tuesday, October 09, 2007 - I love that term: "FUDCop". It's perfect. I was trying to think of a way the other day to actually count how frequently I just close out my browser and abandon several sentences/paragraphs of text because before clicking "submit" I felt like it failed my personal filter (though usually for me personally it fails my point of "Am I really adding to conversation here?"). The only thing I would add is that FUD tends to echo louder across blogs than other types of random commentary. I never can understand why people feel so inclined to spread doom; but, some people feel as if it is their duty to reverberate FUD even if they could not actually discuss that given topic in great depth. They wouldn't take a positive piece of material and do that, so why is FUD so much more enticing?
Gravatar
Dietrich - Tuesday, October 09, 2007 - FUD. Learned something new. Its an extension of non web life. Watch the news. How many positive stories are there? I think its also an extension of "job security". How many times have you heard someone using FUD to obfuscate the issue and cover up that he's just lazy and doesn't want to learn something new or do the work?
Gravatar
Steven Harman - Tuesday, October 09, 2007 - >> "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). Rob, you didn't even know me in college so you have no right to talk about me like... Oh wait, I see now... I'll shut up and get back to work on that keg.
Gravatar
Ben - Tuesday, October 09, 2007 - Yes! This is why I read your blog. Good one Rob, keep it up!
Gravatar
Haacked - Tuesday, October 09, 2007 - What's interesting to me is that FUD is defined to be intentional, at least according to the definition you provided. I think the same conditions can be created unintentionally due to misunderstanding or an air of mistrust. For example, there's a lot of FUD around Microsoft releasing the source to the .NET framework, but some of the FUD is genuine fear, uncertainty, and doubt and not necessarily a strategic attack. My comment has nothing to do with your point, really. Just thought that was interesting.
Gravatar
Chad Myers - Tuesday, October 09, 2007 - What Phil is trying to say is that 'No, it's not FUD, people really are that dumb' Sadly though, with NHibernate, that guy may have a partial point. I'm starting to get tired of having to jump through huge hurdles to get NHibernate to spit out the correct query I need and not cause huge contention. Plus I'm having huge problems with the SQL Procedure Cache filling up with prepared statements are all just slightly different from each other. NHibernate is awesome for mapping and doing CRUD work, but I'm thinking that when it comes to executing queries with anything more than a simple Where Active = 1 or ORDER BY LastName, FirstName, I'm going to use direct SQL since we're all SQL Server all the way and the more I think about it, it seems silly to try to abstract and map away T-SQL for complex queries. T-SQL is backasswards enough with having to make it even more complicated by dealing with XML mappings to generate abstract versions of the same T-SQL query.
Gravatar
Scott - Wednesday, October 10, 2007 - What's also interesting is how often the term FUD is used to dismiss an opinion someone doesn't agree with. My recent post about the "action/param1/param2" URL pattern drew some cries that I was FUDding the new ASP.NET MVC framework. Even though I don't mention the System.Web.MVC (Is that what we're calling it?) in the post and I don't think that the problem is tied to any framework and that it's more of a newbie education issue. You may not agree with me, but I'm not spreading FUD. Some examples of FUD/Not FUD FUD: Using Subsonic could corrupt your index in your DB. Not FUD: I dislike tools that generate code for me. I like to lovingly hand-craft my SQL. FUD: Can you really be sure that Phil Haack isn't a plant by MS to ruin OSS? Not FUD: Phil Haack works at Microsoft and works on OSS.
Gravatar
Chad Myers - Wednesday, October 10, 2007 - So you're saying that Phil Haack ISNT'T a plant by MS to ruin OSS? How do we know that YOU'RE not a plant to dismiss claims that Phil is a plant! What's that? Sorry, I can't hear you because I have this tinfoil over my head.
Gravatar
Jon Galloway - Wednesday, October 10, 2007 - Chad, are you causing Phil Uncertaintity and Doubt? PUD? Rob, I totally appreciate your pointing out this problem so clearly. Very often it seems to really come down to NIH and an unwillingness to take the time to evaluate new or different methodologies, or implementations of methodologies. It's much easier to say "I tried X once (or heard about someone that did) and it didn't go well. I'll never do that again!" than to evaluate a new DAL / code generator as something different than one you may have used in the past.
Gravatar
Jacob - Wednesday, October 10, 2007 - Ah! The ole "it sucked when I did it" defense. Very useful. You can apply it any time something you try fails to work out the first time you try it. Often, this is actually a facade for "someone said it did really bad things when they tried it" and their story scared me. I can't help feeling like it's the same as someone dumping the hot chick after one date because your last relationship ended badly.

It's actually an understandable defense mechanism when faced with a new technology or practice when you know you don't have the time to fully understand it before making a decision about using it. I would personally prefer if people would just be honest about their limitations, though. We all know things move way too fast in this field and we all struggle with new things coming at us at the speed of light. Everyone else looks like they're handling things just fine, so we feel like we have to come up with something more logical than "I don't have time to evaluate the full implications of this, so I'll have to defer that judgement until later." That's uncomfortable because it admits that we could be missing something good, and leaves the decision open when we'd really like that decision to be closed so we can move on.
Gravatar
Scott Williams - Wednesday, October 10, 2007 - I use a FUD_Detector when reading blogs. If I feel that someone is just FUDing, I skip their post and go on to the next. I don't have time to read blather.
Gravatar
Vanof - Wednesday, October 10, 2007 - Rob,

I am with you @ 200%.

Subsonic has surpassed at lot (i mean a whole lot) of DAL writers (even mine ;-) ) in simplicity and useability.

I know there's still room for improvement and maturity in there and this is why i like Subsonic partial classes implementation. You don't like it then do it yourself.

I'd prefer a team that uses Subsonic to any other that copy/paste the same data access code everywhere across an app.

Nothing can be perfect. Even Microsoft does mistakes sometimes!

Leave this FUDER/jalous guy alone.
After all, If he's that good why didn't he write it!

cheers!
Yvan aka Yvan;
P.S. when can we start our use of migrations?
Gravatar
Niels Hansen - Wednesday, October 10, 2007 - This article was total piece of crap.... :) JUST JOKING!

I could't agree more. I've seen this happen so many times in our industry and it's because people doubt what they don't know.

It's tough even for myself not do do this when evaluating new technologies. My favorite is one of our Microsoft zealots at work who unless it's from Microsoft is crap. I remember showing him a few years ago the concept of blogs and wikis and he blew it off like it was stupid. As soon as MOSS 2007 came out and supported it, he acted like it was the best thing in the world. I had to remind him that Microsoft did not invent it and the open source community was using this for years. Nothing against Microsoft. I love them too but I also look outside the Microsoft world because it's not the only software company creating new concepts.

FUD can really prevent progress from happening and I'm glad that a select few people have the thick skin to move forward on new ideas and not give up on them. Subsonic rules. Sure there were plenty things missing on version 1 but that's what makes software so cool. Just wait for the next version its bound to get better (most of the time). Keep up the great work!