in reply to The need and the price of running on old versions of Perl

Perl 5.6.0 came out in March 2000. Perl 5.8.0 came out in July 2002. Those releases are seven and five years old, respectively.

I haven't received a nickel for any patch I've contributed to Perl, whether documentation, tests, or functional code. I haven't received a penny for any module I've ever written or maintained. I'm not complaining; I've never asked for anything nor have I expected anything. I wrote the code because I wanted to and I released it because I hoped it would be useful.

I've fixed bugs in Perl and in various pieces of code because I wanted to fix them. I added features and documentation and tests because I wanted to use those features, to see other people use them, and to have confidence that they work. I didn't write them because I wanted or expected money, or appreciation. I wrote them to get used.

It is not worth one second of my time even to think about supporting ancient versions of Perl, versions which are missing useful features and which contain known and unfixed bugs. I didn't add features to code or fix bugs in the hope that maybe five or seven years later I might be able to rely on that feature being present or a bug being absent without someone complaining that for all that I've never requested or expected money, praise, or even appreciation, my code doesn't run on ancient software. I helped the build great software because I want to use it.

It is ridiculous to expect volunteers to support code that is seven years old, code eleven stable releases old.

That's my opinion and my choice of how to spend my free time and how I donate my experience and code and effort. Again, I don't get paid for this. I've never asked for payment. I've never expected payment or appreciation. I just put out the best code I can for anyone to use as they see fit under a license that allows them to do many useful things.

If someone else chooses to spend his or her free time bending over backwards to provide shiny new software for people who've demonstrated that they don't care about upgrading because they can't be bothered to upgrade to a version of Perl released this millennium, that's his or her own choice and I won't stand in the way. I think it's ridiculous, but I'm not going to tell anyone how to spend his or her free time, just like I'm not going to put up with anyone telling me that I should spend one moment of my time caring that one of my modules doesn't run on Perl 5.004 (originally released in May 1997 and most recently updated in April 1999).

Update: reversed "five and seven", per talexb's suggestion.

  • Comment on Re: The need and the price of running on old versions of Perl

Replies are listed 'Best First'.
Re^2: The need and the price of running on old versions of Perl
by DrHyde (Prior) on Sep 19, 2007 at 10:04 UTC

    When people like Tim Bunce accept patches to make their code work on 5.6.2, that is the difference, in some companies, between "of course perl can work with databases" and "perl is a useless piece of hacker shit that can't even talk to a database, let's use Java".

    I'm not saying that you *must* make your code backward compatible - as you quite rightly point out, I ain't paying you so have no say in how you spend your time. But it would be nice if you did.

    And as for how old perl 5.6 is - hands up who's using the even more ancient C and SQL standards. Mature languages don't normally go adding new and pointless features - like 'our' and three-arg open - willy-nilly, and in my opinion mature programmers won't go using them without giving serious thought to the ramifications.

      When people like Tim Bunce accept patches to make their code work on 5.6.2, that is the difference, in some companies...

      5.6.2 I can almost accept. It's nearly four years old, but I can almost accept this, because it shows that at least they upgraded to something somewhat modern.

      I'm sure there are companies using Perl 4.x, which is fourteen and a half years old. I don't see why anyone should care about them.

      And as for how old perl 5.6 is - hands up who's using the even more ancient C and SQL standards....

      Hands up everyone who's using gcc 2.x, Visual Studio 1.x, and msql.

      Mature languages don't normally go adding new and pointless features - like 'our' and three-arg open - willy-nilly, and in my opinion mature programmers won't go using them without giving serious thought to the ramifications.

      Objection: strawman. I didn't mention any features in specific, and I did mention bugfixes. I'm sort of a fan of being able to use Unicode properly, and I'm definitely glad for performance improvements in regular expressions and all of the memory leaks fixed in closures and CVs coming in 5.10. It's a bit silly to call those pointless features added willy-nilly.

        FWIW, and this is my personal prefered dev environment...

        $ gcc -v
        Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd4.1/3.3.5/specs
        Configured with:
        Thread model: single
        gcc version 3.3.5 (propolice)
        

        It was only a few releases ago (each release is 6 months apart) that OpenBSD was shipping with gcc 2.95 as the system compiler. And they're currently in the initial stages of discussion about replacing gcc because it's getting big, bloated, buggy, and regularly drops support for various architectures that some people still use.

        Perl isn't at all like that though. If anything, later releases fix bugs (while adding a manageable amount of features/bloat), and that's a good enough incentive to upgrade IMO. But not everyone out there sees it that way, or cares at all. In which case, I say to them "So be it!" or "As you wish!", and write my code so that it functions even on ancient releases. Because to me it's neither difficult, nor a great burden to support 5.005*, and I'm content enough to be able to get paid writing Perl code in the first place.

        Heck, it could be much worse. Apparently the python guys have to keep several versions of the interpreter around just to run older code!

        * Except on Win32, and then I need 5.8 to do anything remotely useful. ;-)

      I used to use "our" and 3-arg open() until I started working in a shop that supports all kinds of ancient machines (Redhat 6.2, with Perl 5.005_03) because that's what a particular customer bought way back when and they don't want to upgrade.

      So now I just avoid all the new-fangled constructs (which don't really add much anyway) and try to avoid modules that don't work on 5.005. Sometimes I have to go download an older version of a module, such is life.

      In some cases I find that it makes sense to minimize the dependency on external modules and do as much as possible with Perl core. It's pretty powerful as it is... For instance, why use Switch.pm when the Perl Cookbook has a perfectly good, portable example of a switch statement that's made up entirely of built-ins and works even on ancient versions of Perl? (Switch.pm wasn't a standard module back then either).