4 days in Amsterdam with porters
We held a Perl 5 Porters Hackathon in Amsterdam October 12-15. This was our 2nd attempt to bring active porters together to sort out issues that might otherwise take months to sort out. We got quite a bit done.
Deprecation of $[
Last year, we went over all of the long-standing deprecations in core. All but $[ were given an official EOL. $[ was not because we could not come up with a plan.
There are 3 use cases we expect are going on:
- using $[ in a conditional
- Assigning to $[
- Assigning to $[ but making it = 0 which doesn't do anything.
Very few modules on CPAN even mention $[. I provided a grep from the grep.metacpan.org backend. We determined there's roughly 100 lines of code on CPAN which would need to be fixed to eliminate the usage of $[ on CPAN. Ilmari offered to submit patches to fix them.
You can see a more rough list here:
Further discussion was had on whether we should fail or just stop treating $[ as a special variable. The consensus was that use of the variable would be a failure. We determined EOL for $[ would be in 5.30
Back in the good old 5.12 days, we started giving push access to people who did a development release to try to get more involvement. Some of these people have not pushed since.
For security reasons, we discussed disabling the ssh keys for these committers. They can be easily re-enabled at a later date, but for the time being this protects us from someone unexpectedly getting ahold of an old ssh key.
No decision was made for action on this.
Perl Mongers Pull Request Challenge
One of the ideas discussed to attract more developers to contribute to Perl was to ask Perl Mongers groups to submit patches. Most Perl Mongers are already familiar with Perl and could probably be good candidates to contribute to Perl itself.
Contribution can be in many areas: documentation, unit test, fixes, new features... If you want to contribute and have no ideas where to start you could check the perl5 RT queue or simply ask #p5p on IRC.
The Houston Perl Mongers tried this idea out at their November meeting. It took us a while but we determined that perlbug was missing --help and --version as reported in RT 130032 You can see the commit here: 7b1af8a66568cbb1b215ecb17fa5f19059208f55
At the hack, we had maintainers for 4 distros. Our rough notes can be found here: https://github.com/p5h/2017/wiki/Knowledge-Sharing:-Distros
- Tux is the primary maintainer of HP-UX distros of Perl.
- Booking rolls their own Perl.
- cPanel rolls their own Perl.
- The maintainers (Niko Tyni and Dominic Hargreaves) of Debian's Perl were also at the hack.
HP-UX: Tux maintains a wide variety of Perl distros for HP-UX. If something's broken there, he's your guy. The majority of compatibility changes to this distro live in Perl. You can download them here: http://mirrors.develooper.com/hpux/
Booking uses a distro of Perl to maintain a consistent install of Perl across their many data centers. They modify very little in their internal Perl distro. For performance reasons, they compile Perl with jemalloc and without taint and thread support.
cPanel: There are hundreds of thousands of cPanel servers around the world. All of them get a RPM set of Perl that is vetted against the installed cPanel. cPanel currently applies 33 patches to Perl to customize it to their needs. Many of them are applied to Perl to save memory and increase speed.
We reviewed the cPanel patches at the conference. Many were seen to have value to blead by the group. This led to the changes being submitted to blead. In all, we have applied over 10 of them to make blead better.
Debian: We also reviewed Debian's patches. They have over 50 patches they apply to Perl.
Many of the patches were seen to be useful to blead and we asked for them to submit them to upstream for merge.
Several patches Debian applied were also trying to solve similar distro problems that cPanel deals with in their build system. This led to discussions about how we could make life easier for distro maintainers.
One of our pet peeves are some of the unit tests that do not make sense to be run on a distro build with applied patches. The environment variable PERL_BUILD_PACKAGING will now be used to skip those tests for distro builds.
The file "PACKAGING" will now be shipped with Perl to provide helpful guidance to distro maintainers on how to solve common patch/build issues.
More to come
We discussed many other things I'll be blogging about in the coming weeks:
- Making Perl5 more available to contributors on github
- Backport voting
- Continuous Integration
- SWASHNEW / INVLISTS
- Subroutine Signatures.
- Coming COW changes
- Why can't we have nice things.