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:
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":
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"
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.
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?
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!