The Perl Toolchain Summit 2024

Sometimes life catches up with you. I've felt that way for the last few years and I'm probably not alone.

During that time the cpancover project has basically just been plodding along, pretty much just working. As new modules were uploaded to CPAN, cpancover would pick them up, calculate the test coverage, and make the results available to be displayed on metacpan, along with detailed output on cpancover.com.

A little while ago I decided it was probably about time that I should update the OS and perl version and libraries and stuff.

And it went terribly.

Last week was the Perl Toolchain Summit. This is the annual event (skipping 2020-2022 of course) where about thirty of the folk who build, maintain and extend much of the Perl infrastructure get together to work on things which really benefit from people being together in the same room, and from setting aside some time to work on these projects with minimal distractions. This overlaps to an extent with core perl work, but the perl core isn't the main focus of the summit. Somehow I've managed join in with most of the events and, for me, it's the most important Perl event on my calendar.

My primary goal at this year's summit was to update the infrastructure around cpancover. For a while now I've been working more and more closely with the metacpan team, initially on displaying coverage results on metacpan, and more recently on working to bring our environments closer together with the idea that cpancover can benefit from the excellent work the metacpan team are doing. This has become more important as I have shown by managed to break a part of my only environment for cpancover.

So, after arriving in Lisbon for this year's PTS, I wanted to spend a time working with the metacpan folk on deciding how to push things forward in this area, and on actually doing so. I had a number of discussions with Joel and with Leo and settled on the way forward. Joel and Leo spent a lot of time working on the metacpan infrastructure, and cpancover became almost like a first customer for the work they are doing, after metacpan itself of course.

But we also looked at how we could fix up cpancover specifically in the short term in a way which would make later migration as simple as possible.

So apart from making these decisions, I also spent time on starting to implement things. I made a couple of Devel::Cover releases during the summit, which were focussed on updating code for infrastructure, as well as incorporating some more modern practices and tooling, such as linters and formatters.

I also made sure Devel::Cover was tested against the latest perl development releases. With a major release just days away this was, I think, the first time for many years where I didn't know there were problems with Devel::Cover on the latest perl development release. But it was good to confirm this. This was also nice in that it left more time for working on other matters.

In cpancover, I have always generated coverage for individual modules in docker containers. This provides a level of control for misbehaving or malicious modules when the tests are run with Devel::Cover. The goal is now to run the main controlling process in a docker container too, to isolate it from the underlying OS. So this work is now started. Unfortunately I didn't manage to finish it, but I did remove all the problems which were stopping me even getting to the point where I could work on it, which feels like a huge success.

So now, I think, it's just a Simple Matter Of Programming to get this done. And then, when the metacpan infrastructure is available we should be able to make use of that to provide more timely results, redundancy, development environments which match what is happening in production, and all that good stuff.

One thing I didn't get around to was looking at some work that Nicholas Clark did and presented at the German Perl Workshop (https://act.yapc.eu/gpw2024/talk/7872) to handle cases where a test suite doesn't even load a module, and the uncovered lines in that module aren't reported. I hope to get to that soon.

But I did manage to spend time talking with many people about work they are doing, covering topics from Test2 to YAMLScript to handling ancient Perl codebases to replacing ppaddr in the perl optree.

One of the things which always feels great about PTS is when you find a bug in a module you're using, and you can chat to the person who wrote the module and they immediately fix the problem. Or vice versa. That happened a few times this year - and it's always nice to get immediate feedback.

And, as usual, I came away with a longer TODO list than I arrived with. But, crucially, I came away unblocked on key design decisions and all the annoying bits of work that just needed to be done before real progress could be made.

I'm really grateful to everyone involved to make this event happen. That includes the organisers, Laurent Boivin, Philippe Bruhat and Breno de Oliveira and likely others behind the scenes. Laurent and Philippe have long been involved in the process and have the knowledge and experience to make the event run smoothly. Breno organised the local details from across an ocean and made sure the event ran with nary a hitch.

I'm also thankful to everyone who attended, often using their own holiday time to do so, and who helped me directly, gave talks or presentations, and generally contributed to the productive environment.

And, of course, none of this would have happened without our sponsors. A big thanks to all of them for their donations, whether as cash or in kind.

Monetary sponsors: Booking.com, The Perl and Raku Foundation, Deriv, cPanel, Inc Japan Perl Association, Perl-Services, Simplelists Ltd, Ctrl O Ltd, Findus Internet-OPAC, Harald Joerg, Steven Schubiger.

In kind sponsors: Fastmail, Grant Street Group, Deft, Procura, Healex GmbH, SUSE, Zoopla.

Leave a comment

About Paul Johnson

user-pic I don't really blog about Perl.