in reply to Re^2: Module Bloat and the Best Solution
in thread Module Bloat and the Best Solution

Are you saying ALL CPAN modules are battle-tested?

Also, I'd say that getting the

"bugfix for free"
is a dangerous conceit. I know that when my users find a bug in production code, I can't wait for J. Random Module writer to provide a fix. I need to fix it myself. I have to own the bug immediately.

The danger of statements like

"And, if you don't know why, you have no business writing your own version cause you're going to screw it up."
is that you are implying that if you can't write flawless code, you might as well not start to learn. I definitely can't back you on that sentiment. Perl is a great language for experimenting and learning on. I wouldn't want to be as discouraging as you are towards users.

--
I used to drive a Heisenbergmobile, but every time I looked at the speedometer, I got lost.
  • Comment on Re^3: Module Bloat and the Best Solution

Replies are listed 'Best First'.
Re^4: Module Bloat and the Best Solution
by dragonchild (Archbishop) on Nov 12, 2007 at 18:11 UTC
    Of course not! That's a ridiculous restatment and you know it. However, battletested code, such as List::MoreUtils, is worth using, even if you could do it yourself. It's one less moving part for you to maintain.

    As for bugfixes - I'm referring to bugs that were found in your production code, not mine. Of course, I own all bugs in my code. But, once a fix is pushed upstream, I get it without even knowing the bug had existed.

    As for the sentiment, I'm not implying that at all. However, I am saying that if you are putting code into production and expecting users (or boss or client) to pay you for the service, then you have a professional responsibility to use the best version of code possible. That means that you should use the battle-tested, as flawless as possible, code from CPAN (should such code exist). Of course you learn from it - that's why OSS is so valuable: you can read the source. But, you don't have a Not-Invented-Here complex preventing you from delivering the best value for the money you get paid.


    My criteria for good software:
    1. Does it work?
    2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?

      I don't think it's such a ridiculous re-statement at all actually. Unless there is a way for a normal perl developer to know in advance what code is battle tested and what code has just been put up, you aren't giving the perl community much to base their decisions on. Sure, you have your reasons for using List::MoreUtils (even though it isn't available on the production boxes in my environment) because you feel it's rock-solid code you are willing to stake your reputation on.

      So I propose the question again: I'm a developer. I need to do some task in perl. When should I be hitting CPAN as opposed to just writing the few lines myself? What criteria should I use to know when to use CPAN and when not to? Furthermore, just be virtue of being in CPAN doesn't mean I necessarily want to stake my reputation on it. So what criteria do you use to know when you can stake your reputation on a CPAN module?

      --
      I used to drive a Heisenbergmobile, but every time I looked at the speedometer, I got lost.
        By doing the same thing that you do with every other decision about a product you make in your life (both professional and personal) - you ask people you trust for their opinion.

        As far as when you should use CPAN - I always look on CPAN first and ask around whenever I run into something that requires some thought. Now, I have a really good idea of what's on CPAN when it comes to the kind of work I do and I know the people who work on it. Just like anything else in life, you should know who's building the stuff you depend on.


        My criteria for good software:
        1. Does it work?
        2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
Re^4: Module Bloat and the Best Solution
by BrowserUk (Patriarch) on Nov 12, 2007 at 17:15 UTC