[ic] Interchange 5.12 and raising the Perl version

Stefan Hornburg (Racke) racke at linuxia.de
Tue Jul 17 09:33:41 UTC 2018


On 07/16/2018 08:48 PM, Jon Jensen wrote:
> Interchangers,
> 
> With Perl 5.28.0 recently having been released, I'm thinking again of Interchange and its relationship to modern Perl.
> 
> TL;DR:
> 
> It is time for us to finally release Interchange 5.12, and before we do so, I would like to raise Interchange's minimum
> required version of Perl to 5.14.1.
> 
> I will plan to do this unless, within the next 2 weeks, an actively contributing member of our community speaks up to
> convince the core group that would be a bad idea, based on the impact to actual production Interchange sites.

+1 for the change.

Regards
         Racke

> 
> Now for the detailed rationale behind this change:
> 
> Interchange has for many years required at a minimum Perl version 5.8.5. That version is nearly 14 years old. For our
> core Interchange software to support a version that old means:
> 
> * There is a large variation in which core modules can be counted on, and
>   which versions.
> 
> * Support for Safe, UTF-8, threading, and other features varies widely
>   between versions.
> 
> * The core developers need to support every Perl version in between:
>   5.8.5, 5.10, 5.12, 5.14, 5.16, 5.18, 5.20, 5.22, 5.24, 5.26, 5.28, with
>   all the module variations that come with that.
> 
> The number of actively contributing Interchange developers is small. It increases friction and risk, and decreases
> progress and simple enjoyment of the work, when our contributors have to support such a large number of versions, most
> of them beyond support end of life and not used by the core developers ourselves anywhere in production.
> 
> Because of this it is becoming urgent for Interchange to get with the times on the Perl front. Perl is the foundation
> Interchange is built on, so we should be using modern versions that are common and supported in the Perl community.
> 
> We should do what we can to make working with a current OS, Perl, and CPAN modules, as smooth as possible. The core
> developers should be able to use "new" (though already over a decade old!) features rather than being stuck with an
> ancient dialect of Perl. Such features that we have been unable to use include:
> 
> * modern Unicode versions supporting newer characters (especially non-BMP)
> * feature pragma
> * new regular expression features /xx, /u, /a, /ee, /r, \N{...}, \g{...},
>   \k<...>, \K, \R, \X, \b{}, \G, named captures, (?{ code }) and many others
> * the // operator
> * subroutine signatures
> * __SUB__
> * <<>>
> * variable aliasing
> * lexical subroutines
> * more useful functions in core modules such as List::Util
> * and many more
> 
> I don't think any of us has a burning desire to use any of these features every time we make a change to core
> Interchange, but I don't want to have to think any more about the subset of the language we have to limit ourselves to
> for ancient Perl.
> 
> How do we decide which minimum Perl version to support? Currently the Perl developers themselves only support the
> current version 5.28 and the previous version 5.26.
> 
> But the main Linux server distributions RHEL/CentOS, Debian, and Ubuntu, provide a longer support lifetime for the core
> packages they distribute, which includes Perl. So we will want to go earlier to include all Perl versions still
> supported by the main Linux server distros.
> 
> Further, TLS 1.2 is required by the PCI DSS ecommerce payments standards, and most payment gateways have now disabled
> TLS < 1.2 on their systems.
> 
> For an HTTPS client to use TLS 1.2, it must be based on a TLS library that supports it. The vast majority of Interchange
> sites run on Linux and use the OpenSSL library for TLS. So we should only need to support distros that also support TLS
> 1.2, making them useful for ecommerce. (Setting aside hand-built newer OpenSSL on older systems, a hack that almost
> certainly would be unmaintained and exposed to later security problems.)
> 
> RHEL/CentOS 6 is the oldest supported in that family, and includes TLS 1.2 and Perl 5.14.1. RHEL/CentOS 7 comes with
> Perl 5.16.3.
> 
> Debian 7 is the oldest supported in its family, in its LTS phase. It came with Perl 5.14.2. Debian 8 comes with Perl
> 5.20.2, and 9 with 5.24.1.
> 
> Ubuntu 14.04 LTS is the oldest supported in its family, with Perl 5.18.2. Ubuntu 16.04 LTS has 5.22.1, and Ubuntu 18.04
> LTS has 5.26.0.
> 
> The lowest common denominator of the above is 5.14.1. That is still 7 years old, from 2011!
> 
> By way of comparison:
> 
> Perl 5.6.0 was released in March 2000, and less than 3 years later in early 2003 Interchange began requiring 5.6 or later.
> 
> Perl 5.8.5 was released in July 2004, and about 4 years later in late 2008 Interchange began requiring it.
> 
> If we bump our minimum version requirement only up to 5.14.1, that will be the most tolerant we have ever been upon
> requiring a newer version: a full 7 years old. We can't use OpenSSL that old. OpenSSH that old doesn't work with newer
> key types and ciphers. Etc.
> 
> Imagine if, in the year 2008, we had still been trying to support a 13-year-old Perl version. That would mean Perl
> 5.002. Anyone who was around back then can imagine what a pain that would be. Perl programmers who are used to more
> recent Perl versions now feel the same way. Old versions cause lots of annoyances, large and small, that add up.
> 
> Now a major problem with newer versions of Perl is that they often cause trouble with Safe due to runtime requires and
> the Encode module. Some catalogs may have to switch to using global Perl rather than Safe.
> 
> That is highly annoying, but since that is the direction Perl has been going for many years, it is not a temporary
> situation we can wait out. We need to cope with it and completely make the move as a group.
> 
> Most of us supporting active ecommerce site have already had to deal with this during upgrades, and we don't do the rest
> of the users any favors by not having Interchange work comfortably with current Perl. We should now accept that this is
> the way Perl has gone and deal with the new reality.
> 
> The old OS versions are dead. Moving to a new supported OS version means getting a more current Perl build. Most people
> on an old Perl would also have an end of life distro and CPAN modules. If that's what someone wants, they're of course
> free to do that, and they can just as well use an unsupported older version of Interchange.
> 
> They can even backport later fixes manually if they want. It's free software, and they can do what they like with it,
> but we should not feel obligated to support a large matrix of old versions that are not supported by anyone else and
> that make our open source contributions a pain.
> 
> This may require some work during upgrades, so the new Interchange release being a major number change to 5.12 will
> indicate that it is an update that shouldn't be dropped in place blindly.
> 
> I consider our default move now and in the future during major Interchange releases to be increasing the minimum Perl
> version because the older versions are not supported by the Perl maintainers nor by any of the current major Linux distros.
> 
> Interchange is mature and in maintenance mode, it is true. But that does not mean that we should leave it stuck in the
> distant past such that contributing to it requires extensive historical knowledge of what features were supported in 10+
> year old versions of Perl.
> 
> In an interchange-users mailing list discussion thread in June 2017:
> 
> http://www.icdevgroup.org/pipermail/interchange-users/2017-June/055641.html
> 
> I first laid out the case above. There was some opposition, and I asked for those opposed to provide evidence of
> specific cases where this would cause real active users hardship. No such examples were provided.
> 
> So now with Interchange 5.12 we should make this change. It is time.
> 
> Thanks,
> Jon
> 
> 


-- 
Ecommerce and Linux consulting + Perl and web application programming.
Debian and Sympa administration. Provisioning with Ansible.



More information about the interchange-users mailing list