Perl Toolchain Summit 2025

Wednesday, May 7, 2025| Tags: perl

DISCLAIMER: Title image captured by Salve J. Nilsen.



Journey to the Event


My journey began at 12 PM on Wednesday, April 30th. I took a bus to Heathrow Airport to catch my flight to Berlin via Frankfurt with Lufthansa Airline. The entire journey was a pleasant experience, except for one part: I had to exit the Frankfurt airport and re-enter to catch my connecting flight to Berlin. I had assumed I could simply switch planes without leaving the airport.


Day 1


I reached the hotel at 6 AM on Thursday morning, the first day of the event.

   

At breakfast, I met many guests, Salve was the first among them. I also met Ruth again; it was lovely to see her after the Toronto conference. I met Todd for the first time as well.

That day, I had the chance to meet the MetaCPAN team: Olaf, Graham, Mickey and Shawn. I’ve always wanted to contribute to MetaCPAN, and this was finally my opportunity. I had to start from scratch by setting up the local MetaCPAN web environment.

I was given the link to the MetaCPAN Docker GitHub repository: https://github.com/metacpan/metacpan-docker.git

It was just a matter of a quick clone, init, and docker compose up. In no time, I had a working local MetaCPAN web interface on my laptop.


$ git clone https://github.com/metacpan/metacpan-docker.git
$ cd metacpan-docker/
$ bin/metacpan-docker init
$ docker compose up web-server

The local instance of MetaCPAN was now accessible: http://localhost:5001

I took a quick glance at the codebase and its structure: https://github.com/metacpan/metacpan-web

Two important areas: Library and Template

My first issue of the day: https://github.com/metacpan/metacpan-web/issues/3235

I had to explore the codebase extensively to find the right spot. It was a fun exercise involving both the MetaCPAN web and API components.

Unfortunately, I only had the web interface running locally, not the API, which made debugging the API side difficult.

In this setup, my local web instance was making API calls to the production environment.

I spent some time on the issue but didn’t get close to resolving it.

Olaf suggested I pick another issue in the meantime.

So I chose this one, a pure templating issue with no API involvement: https://github.com/metacpan/metacpan-web/issues/3079

Understanding the code structure was an enjoyable exercise.

I resolved the issue in my local environment and submitted my first pull request of the day: https://github.com/metacpan/metacpan-web/pull/3326

It was kindly approved and merged by Olaf.

Lunch was organised at the hotel by the PTS Organiser. It was great to see so many people in one place.

After lunch, I worked on this issue: https://github.com/metacpan/metacpan-web/issues/3278

This was another front-end-only issue. The BackPAN link was empty and simply pointed to the current page.

The easy fix was to provide the necessary data to the template.

I did exactly that in this pull request: https://github.com/metacpan/metacpan-web/pull/3327

Graham quickly suggested that this should be handled in the API rather than the frontend layer. He even provided an alternate fix.

So this one didn’t go through—but that’s okay. I was learning from every issue.

In the evening, some of us went to a Lebanese restaurant for dinner. The wait was long, but it was worth it, the food was excellent.


Day 2


I met Stig from the CPAN Security Group and had a discussion about CVEs.

It was reassuring to know there’s a dedicated team handling CVE-related matters.

My first issue of the day was: https://github.com/metacpan/metacpan-web/issues/3044

Nice and easy, got the pull request ready in no time: https://github.com/metacpan/metacpan-web/pull/3331

Thanks to Olaf for accepting and quick merge.

It was great to see my change live instantly.

My second issue was: https://github.com/metacpan/metacpan-web/issues/3108

Pull request for the same was ready for review: https://github.com/metacpan/metacpan-web/pull/3332

Once again, Olaf, approved and merged the changes.

In the evening, Daniel, one of the organisers, gave us a city tour.

     
     

It was tiring but well worth it. There was so much to see—beautiful buildings and open spaces.

Dinner was sponsored by the PTS Organiser in a lovely restaurant. I sat with Olaf and Todd. The food wasn’t exactly to my taste, but the company made up for it. After dinner, Mickey, Shawn and I decided to walk back to the hotel. On the way, I met Doug, it was my first time meeting him in person, though we had interacted over email in the past. It was nice chatting with him on the way back.

During the city tour, someone suggested I should better create map for Leipzig Railway Network while I am here.

After the dinner, I couldn’t sleep as the idea was burning inside me. I decided to do quick search if I can get hold of Leipzig Railway Network data.

Luckily I found one, although I couldn’t cover the entire network, I managed to do just two lines and published it before going to bed: Map::Tube::Leipzig


Day 3


At breakfast, I met Ferenc Erki and had a very interesting conversation. Garu also joined us and introduced himself, it was my first time meeting him. He seemed like a very friendly guy.

For lunch, Olaf, Shawn, Graham, Mickey, Salve, Jordan and I went to a nearby Doner kebab place. The food was absolutely delicious.

After lunch, Graham kindly helped me get the API Docker container testing successfully locally.

I needed this to investigate the earlier issue: https://github.com/metacpan/metacpan-web/issues/3235

It turned out that the API was returning the full dataset, but the frontend was limiting the result size. That’s why the complete list wasn’t visible.

The ideal solution would be to implement pagination, rather than showing everything on one page.

For now, Graham and I increased the limit to 500 items to resolve the issue.

I also learned a few tricks for working with the local API, thanks to Graham something that will definitely help me in the future.

This is the pull request that finally resolved the issue: https://github.com/metacpan/metacpan-web/pull/3337

Another quick issue for the day: https://github.com/metacpan/metacpan-web/issues/2912

Corresponding pull request for the same: https://github.com/metacpan/metacpan-web/pull/3340

Daniel also helped me book the train ticket from Leipzig to Berlin Airport.


Day 4


At the breakfast table, I was joined by Todd. I also met Ruth again, and we exchanged a warm hug.

This was the last day of the event—time to fly back. My anxiety started to kick in.

I tried to take it slow and worked on this issue after a quick breakfast: https://github.com/metacpan/metacpan-web/issues/2861

And submitted the following pull request: https://github.com/metacpan/metacpan-web/pull/3344

Later it turned out to be throwing warning in the log for some other pages.

I decided to change it to draft as suggested by Olaf.

I will look at it at some point in time.

     

Summary of Issues


2912: Merged
3044: Merged
3079: Merged
3108: Merged
3235: Merged
3278: Closed (alternate solution by HAARG)
2861: Open/Draft

Future Plan


My attendance of PTS 2025 wasn’t planned. It just came as a surprise for me. I didn’t get time to prepare anything for the event. Now that I have experienced and seen how others had planned, I’ll definitely be better prepared if I get invited again.

I am definitely going to continue work on MetaCPAN project as and when I find spare time. I don’t want to break the continuity. I noticed Elastic Search is heavily used in MetaCPAN. I will brush up my Elastic Search knowledge so that I can contribute in that area too.


Sponsors of PTS 2025


Monetary Sponsors

Booking.com
WebPros
CosmoShop
Datensegler
OpenCage
SUSE
Simplelists Ltd
Ctrl O Ltd
Findus Internet-OPAC
plusW GmbH

In-kind sponsors

Grant Street Group
Fastmail
shift2
Oleeo
Ferenc Erki

Community Sponsors

The Perl and Raku Foundation
Japan Perl Association
Harald Joerg
Alexandros Karelas PerlModules.net
Matthew Persico
Michele Beltrame Sigmafin
Rob Hall
Joel Roth
Richard Leach
Jonathan Kean
Richard Loveland
Bojan Ramsa

Thank You Perl Toolchain Summit 2025!!

SO WHAT DO YOU THINK ?

If you have any suggestions or ideas then please do share with us.

Contact with me