THE RANT / THE SCHPLOG
Schmorp's POD Blog a.k.a. THE RANT
a.k.a. the blog that cannot decide on a name

This document was first published 2017-08-03 03:41:20, and last modified 2017-08-03 03:41:20.

... and that's why Matt S Trout is brilliant

I should really have made this a series long ago, but generally, I don't care enough to bother.

Yet today, my attention was directed at yet another brilliant FUD attempt by Matt S Trout, who seems to have made it his plan to badmouth me and my modules by spreading lies wherever possible. And it's very nicely done, by replying to a bug report on rt.cpan.org, where I usually don't see any replies because I don't bother to look.

And since it is picture-book FUD spreading, I decided to blog about it to improve critical thinking. Maybe. Hopefully. Well, it would be good if... one can hope, no?

Fear, Uncertainty, Doubt.

Fear, uncertainty, doubt, or in short, FUD, is a technique used to discredit products, people, or just about anything by spreading more or less outright lies that readers cannot instantly disprove - it's a classical disinformation strategy, and typically works very well, especially if your target doesn't defend itself.

With me as target, it usually works especially well, because I rarely bother to reply to the bullshit (some) people claim about my person or modules.

Anatomy of a FUD posting

So, what am I talking about?

Somebody else made a bug report about common::sense on rt.cpan.org, claiming FATAL warnings are fundamentally broken and common-sense needs to not use them, citing some documentation and discussion as evidence that clearly isn't. There are indeed many small things wrong with perl's warnings, and indeed, FATALising all of them does cause problems, but that isn't true in general.

The details of said bugreport are not important here, the point is that Matt S Trout, who is not affiliated with common::sense in any way felt he needed to reply (here quoted in full):

From: Matt S Trout

On Wed Jul 26 04:35:22 2017, <original submitter> wrote:
> Perl fatal warnings are fundamentally broken and should not be used.

They *can* be used fine, the rant you linked to on p5p is only one side
of the equation.

Note that strictures v2+ is very careful about which warnings it
fatalizes - we defatalize 'exec' specifically to avoid the fork/exec
issues, for example.

I would encourage common::sense to follow our lead in defanging the
riskier warnings, and encourage all common::sense users to switch to
strictures unless/until it's fixed.

There is an amazing amount of information in this message. Among other things, we learn or might be lead to believe:

It's not always spelled out explicitly, but it's all there, or at least heavily implied, in the last two paragraphs. What he doesn't mention is that fact that he is self-advertising here (like, why would a professional climate change denier openly admit that he is paid by the oil industry?), but that isn't a big problem compared to the rest.

No, this sounds like some great advice to some poor Perl user who was (possibly) bitten by a buggy module somehow, pointing him or her (actually, everybody!) at another, better module. Incidentally written by Matt S Trout, who clearly only wants your best and isn't biased in any way.

Frankly, if you don't switch immediately (who actually uses common::sense besides me?), you should feel ashamed. At least I would, after reading his message: strictures seems to be the obvious choice, despite it being very different and therefore carrying a strong risk of breaking things that worked before.

Except, it's pure fabrication. Or rather, manure - practically pure horse shit really.

Here are some quick facts, easily verifiable (even for Matt S Trout, had he desired to be honest in his claims) by using the public repository which goes back to the earliest release of common::sense, and then some:

So, to summarise it, first, the actual reality:

common::sense did never, ever, had exec (and many other dangerous warnings) fatalised, and this goes back to 2009, while strictures only fixed this in 2015, almost six years later.

Then, Matt S Trout's fake reality:

Everybody should switch to strictures at least until common::sense follows the lead of strictures and fixes this.

Or, to bring it to the point, you should switch to his module because he fixed - in 2015 - what has always been correct in common::sense, and, eh, common::sense really needs to have this fixed.

That sentence not very sense, right? Right, that is a common issue with FUD in general, and Matts public utterances specifically: when they collide with the facts, they utterly break apart, but boy do they sound good in isolation.

And that is what makes it classic FUD - he creates fear, uncertainty and doubt by hinting that common::sense somehow breaks your code, and his product is the better product because it is less broken. Making PR-type statements such as his module taking "the lead" is just the icing on the cake.

Now, I wouldn't call Matt out here if this was a singular case (I would call out his posting anonymously because it is such a nice case of FUD), but Matt does this constantly so it is fairly safe to assume it's not a simple oversight.

And he is really good at it - just re-read his original mail and see how nicely it packages his fantasy story in a few convincing paragraphs, impossible to see through it unless you actually go the long way of checking everything yourself instead of taking his presumably well-meaning advice for granted.

I should make this into a series - if only I had more time for this.

But to not end this blog entry as it started...

Why did you bother this time?

Well, I obviously don't give a shit whether you use common::sense or not, simply because I don't think common::sense is the only correct approach (I hope the FAQ makes this clear, but I failed before).

And I obviously don't stalk Matt and correct all his bullshit postings he makes - that would take far too much time :)

And, well, this is a really tiny thing, even less than the typical first-world problem, really.

So why now?

Well, first of all, my nose was basically pushed towards it by some folks, so I actually did have to read it. And to change working code to a whole different set of (partially fatal) warnings is not just risky, it's absolutely irresponsible. And, hey, it is such an archetypical example of the FUD genre.

I don't care that much about his FUD, but it is painful for me to think that somebody would follow his evil-minded advice and really replace use common::sense in working code by a different such module. Not because I think strictures is bad (it might be, it might also be better than common::sense - common::sense was made to fulfill my needs, not yours, after all), but because it has a high chance of breaking things, causing unnnecessary grief.

Yup. It's pure griefing, and I think griefing is only fun for the griefer.

So by all means, throw away common::sense in favour of strictures, but please don't do it for all the wrong reasons...