Logo ognion
Perl Toolchain Summit 2017

May 11-14, 2017 in Lyon

Logo ognion
 

Perl Toolchain Summit 2017

May 11-14, 2017
in Lyon, France

Logo PTS  

May 11-14, 2017
in Lyon, France

PTS 2017 Projects

Add projects below that you're thinking of working on. If you see someone else's project that you'd like to help on, add your name, but email them as well please.

Discussions

perl without dot-in-@INC

Dot has left @INC in perl 5.26, with wide-ranging repercussions for the toolchain. In particular, how do we deal with PERL_USE_UNSAFE_INC in the future. And what can we do to make CPAN more compliant with a world without dot in @INC?

PTS: how the summit should be run

I'd like the way the PTS runs to be a bit more transparent. If others are interested I'd like to run through how I've been running (certain parts of) PTS for the last 2 years, and get input on what works well and what could be improved, so we can document "how we think PTS should work", for whoever runs it in subsequent years.

  • NEILB
  • XSAWYERX

PAUSE

PAUSE: remove old module-list UI

We got rid of all module-list permissions (the 'm' in 06perms.txt), but the UI still has the bits for module-list perms. We should get rid of this, to reduce confusion for end-users.

  • NEILB

PAUSE Permissions conflicts

Try and resolve the last few case-sensitive permissions conflicts, and work with ANDK to get my proposed change merged, so they can't happen in the future.

  • NEILB

monitor for PAUSE mirroring failure

We've had a few times recently where the CPAN master has stopped mirroring PAUSE. Eventually someone notices and the NOC are nudged. Andreas and I have outlined a way to monitor this, so we can alert much sooner. I'd like to implement our idea.

  • NEILB

Perl6's Qt Profiler

Rakudo's default Angular profiler's performance and memory footprint make it unsuitable for any serious development. A Qt profiler frontend (written in C++) is a partial replacement, though its missing features compared to its web-based counterpart. Needs to be updated to the new profiling data format and the SQL storage.

A sub-idea: port it to Perl 6 and see if it turns out to be more performant than the JS one? :)

  • TADZIK

Static CPAN installation

Our current installation mechanism is very flexible (in a Turing complete way), but most of the time that isn't necessary. It could be useful if this dependency on shelling out to Makefile.PL/Build.PL could be eliminated where possible.

  • LEONT
  • HAARG
  • ETHER
  • ATOOMIC
  • NINE

Distribution metadata

Module::Metadata modernization

There are several conflicting pull requests that are still in progress of being applied to Module::Metadata, to pull out its version parsing into its own package, using a Safe compartment, and improving the large corpus of tests. Additionally, we would like to explore shipping the version parsing component in its own distribution and also potentially calling it from ExtUtils::MakeMaker so we can eliminate EUMM's own (slightly different) version of parse_version().

  • ETHER

Look at cycles caused by recommends/suggests prereqs

CPAN clients don't try and install recommends prereqs by default, because this has historically resulted in dependency cycles. I'd like to find all such cases, and think about whether there's a way the default behaviour for recommends could be changed, possibly discussing with ANDK (for CPAN) and MIYAGAWA (for cpanm).

  • NEILB
  • XSAWYERX

CPAN::Mini in git

Not sure if I'll be working on this but it's my fall back.

While researching Makefile.PL related failures due to dotless @INC, we developed a proof of concept that I think could be generally useful if maintained. It potentially could replace or enhance http://grep.cpan.me but be more stable in that it'd be available on github.

The big advantage is I could in a shorter amount of time walk all of the directories and test a certain thing like running Makefile.PL and seeing if it failed or not.

The proof of concept can be found here: https://github.com/toddr/minicpan_grep

  • TODDR
  • ATOOMIC
  • XSAWYERX

cpan2rpm tools

Not sure if I'll be working on this but it's my fall back project.

We are currently building RPMs using some internal tools, that might also be used by the perl community. The goal is to clean and provide a these tools via a CPAN distro.

  • ATOOMIC
  • NINE

Dist::Build

This is an extensible Build.PL implementation intended as a replacement for Module::Build.

  • LEONT

App::ModuleBuildTiny

This the minimalist authoring counterpart to Module::Build::Tiny. It's slowly gaining features and becoming a more complete authoring tool.

CPAN::Changes

Rewritten changelog parser better reflects the reality of CPAN. Nearly complete.

  • HAARG

MetaCPAN

Github Project - Kanban for PTS

Syntax Highlighter

Replace the syntax highlighter with a hopefully faster, more robust, and more maintained library.

  • HAARG

API v0 Shim

A shim layer to handle cpanm requests to the v0 API. Could be expanded to handle other v0 clients if needed. Should allow us to drop the v0 indexes/servers without breaking common clients.

  • HAARG
  • RANGUARD (Leo Lapworth) - deployment

SCO redirector

Improved search.mcpan.org redirection, supporting many additional URLs not handled by the current naive URL rewriting.

  • HAARG
  • RANGUARD (Leo Lapworth) - deployment

ES connection pooling

So rollouts do not cause network blips, Server starter config might also be useful

  • RANGUARD (Leo Lapworth)

Improving search results

We have a framework for testing changes now, work on actually doing changes

  • RANGUARD (Leo Lapworth)

Writing a command line client for the API

I would like to have a client that can show all available endpoints and autocomplete them. Can do that with API::CLI. Would have to write an OpenAPI file for the MetaCPAN API.

  • TINITA

CPAN Testers

To-Do: https://gist.github.com/preaction/adc680973c5ec7dc70c80ad4808e1429

Client issues

Fix outstanding bugs in the queue, specially those preventing tests from being sent or not giving out accurate and complete information on the results.

  • GARU

Common::Client

Integrate CPAN::Reporter with CPAN::Testers::Common::Client so both cpan and cpanm benefit from a common codebase (and remove tons of duplicate code).

  • GARU

Metabase

Send other Metabase facts and get them to be properly parsed and manipulated by the CPAN Testers' servers. This will (hopefully) allow for much more granular query and analysis of test reports.

  • GARU

Test::Smoke

Look at the sync-from-git code.

  • ABELTJE
  • TUX

Move Metabase Storage

The Amazon SimpleDB is costly, unwieldy, and does not allow good querying (because of the costs). Moving the primary incoming test report database to MySQL's JSON field will improve the queries we can run while removing the SimpleDB cost completely. https://github.com/cpan-testers/cpantesters-api/issues/3

  • PREACTION

Performance of main processing task

The main processing task that reads incoming test reports and compiles the basic pass/fail statistics about them is too slow, often up to days behind the actual incoming test reports. There seems to be no low-hanging fruit to improve serial performance, so it will need to be parallelized and preferably distributed. I've written a couple modules to help: Beam::Runner and Beam::Minion. https://github.com/cpan-testers/cpantesters-backend/issues/1 https://github.com/cpan-testers/cpantesters-backend/issues/2 and https://github.com/cpan-testers/cpantesters-backend/issues/5

CPAN and App::Cpan

Make "cpan" (the app) actually look at the -x option when either Text::Levenshtein or Text::Levenshtein::Damerau are installed in order to make it go on instead of taking gigabytes of memory and causing the machine to halt.

  • TUX
  • ANDREAS

Configure and metaconfig

bring down dependencies on upstream meta/dist

  • TUX
  • ARC

Perl 6

Perl 6 and CPAN

Chat about getting Perl 6 authors to use CPAN (PAUSE already supports Perl6 modules), I'd be interested in talking with anyone who can help on this. I already run https://github.com/perl6modules but this should not be a long term solution.

  • RANGUARD (Leo Lapworth)
  • UGEXE
  • NINE

Declarative build system

Half a year ago, Nine has started collecting thoughts on a declarative build system for Perl 6 modules to replace Build.pm. The goal is to avoid touring complete build steps as much as possible which seems to align very well with "Static CPAN installation".

  • NINE
  • UGEXE

CPAN River

River data generator

I've been generating the river data as a side effect of the mess of scripts I use to run the pull request challenge, build the adoption list, and some other stuff.

I'm working on a stand-alone generator for this data, and hoping to also have it generator lists like "dists that have changed bucket", etc. I was hoping to have it complete before PTS, but work and other Perl-related yak shaving probably means I'll work on it there.

  • NEILB
  • XSAWYERX

Inspection / code review of Try::Tiny

As an experiment, I thought about running an inspection of Try::Tiny. There wasn't enough interest in this, and I have enough other things on my todo list, so I'm not going to do this.

  • NEILB

YAML

All kinds of YAML related stuff

  • INGY
  • TINITA

Release Manager's Guide

The current Release Manager's Guide is generated by a script that still contains steps you don't need to do, and sometimes in a different order than needed to be performed. I want to clean that up and generate a more fluent one. It might allow automating more of the release.

I want to possibly introduce a web interface to it as well, based on Renee's work here:
https://github.com/reneeb/5-25-10

  • XSAWYERX

Devel::Cover

For the first year in many, Devel::Cover is actually working with blead, and thus the upcoming major release. So I want to use some time to catch up on pull requests and bugs and make a new release.

I'll also be picking brains and enlisting help in solving problems such as being able to report on coverage of code outside of subroutines in modules.

cpancover

cpancover.com is basically just working. But it won't stay like that forever.

I want to make it easier to update both the perl version running and the version of Devel::Cover being used. This will probably end up with the creation of a cpancover container. This will also have the advantage of making it easier to set up cpancover of a new server, which will help with the goal of making cpancover more resilient to failure.

I also want to make the system more dynamic, possibly by running the coverage jobs via a queue and making the UI more dynamic.

I also still want to improve integration with metacpan.

  • PJCJ

version 50 saved on 10/05/17 15:55 by Paul Johnson (‎pjcj‎)

Home | Recent changes | History

PTS 2017 Projects

Add projects below that you're thinking of working on. If you see someone else's project that you'd like to help on, add your name, but email them as well please.

Discussions

perl without dot-in-@INC

Dot has left @INC in perl 5.26, with wide-ranging repercussions for the toolchain. In particular, how do we deal with PERL_USE_UNSAFE_INC in the future. And what can we do to make CPAN more compliant with a world without dot in @INC?

PTS: how the summit should be run

I'd like the way the PTS runs to be a bit more transparent. If others are interested I'd like to run through how I've been running (certain parts of) PTS for the last 2 years, and get input on what works well and what could be improved, so we can document "how we think PTS should work", for whoever runs it in subsequent years.

  • NEILB
  • XSAWYERX

PAUSE

PAUSE: remove old module-list UI

We got rid of all module-list permissions (the 'm' in 06perms.txt), but the UI still has the bits for module-list perms. We should get rid of this, to reduce confusion for end-users.

  • NEILB

PAUSE Permissions conflicts

Try and resolve the last few case-sensitive permissions conflicts, and work with ANDK to get my proposed change merged, so they can't happen in the future.

  • NEILB

monitor for PAUSE mirroring failure

We've had a few times recently where the CPAN master has stopped mirroring PAUSE. Eventually someone notices and the NOC are nudged. Andreas and I have outlined a way to monitor this, so we can alert much sooner. I'd like to implement our idea.

  • NEILB

Perl6's Qt Profiler

Rakudo's default Angular profiler's performance and memory footprint make it unsuitable for any serious development. A Qt profiler frontend (written in C++) is a partial replacement, though its missing features compared to its web-based counterpart. Needs to be updated to the new profiling data format and the SQL storage.

A sub-idea: port it to Perl 6 and see if it turns out to be more performant than the JS one? :)

  • TADZIK

Static CPAN installation

Our current installation mechanism is very flexible (in a Turing complete way), but most of the time that isn't necessary. It could be useful if this dependency on shelling out to Makefile.PL/Build.PL could be eliminated where possible.

  • LEONT
  • HAARG
  • ETHER
  • ATOOMIC
  • NINE

Distribution metadata

Module::Metadata modernization

There are several conflicting pull requests that are still in progress of being applied to Module::Metadata, to pull out its version parsing into its own package, using a Safe compartment, and improving the large corpus of tests. Additionally, we would like to explore shipping the version parsing component in its own distribution and also potentially calling it from ExtUtils::MakeMaker so we can eliminate EUMM's own (slightly different) version of parse_version().

  • ETHER

Look at cycles caused by recommends/suggests prereqs

CPAN clients don't try and install recommends prereqs by default, because this has historically resulted in dependency cycles. I'd like to find all such cases, and think about whether there's a way the default behaviour for recommends could be changed, possibly discussing with ANDK (for CPAN) and MIYAGAWA (for cpanm).

  • NEILB
  • XSAWYERX

CPAN::Mini in git

Not sure if I'll be working on this but it's my fall back.

While researching Makefile.PL related failures due to dotless @INC, we developed a proof of concept that I think could be generally useful if maintained. It potentially could replace or enhance http://grep.cpan.me but be more stable in that it'd be available on github.

The big advantage is I could in a shorter amount of time walk all of the directories and test a certain thing like running Makefile.PL and seeing if it failed or not.

The proof of concept can be found here: https://github.com/toddr/minicpan_grep

  • TODDR
  • ATOOMIC
  • XSAWYERX

cpan2rpm tools

Not sure if I'll be working on this but it's my fall back project.

We are currently building RPMs using some internal tools, that might also be used by the perl community. The goal is to clean and provide a these tools via a CPAN distro.

  • ATOOMIC
  • NINE

Dist::Build

This is an extensible Build.PL implementation intended as a replacement for Module::Build.

  • LEONT

App::ModuleBuildTiny

This the minimalist authoring counterpart to Module::Build::Tiny. It's slowly gaining features and becoming a more complete authoring tool.

CPAN::Changes

Rewritten changelog parser better reflects the reality of CPAN. Nearly complete.

  • HAARG

MetaCPAN

Github Project - Kanban for PTS

Syntax Highlighter

Replace the syntax highlighter with a hopefully faster, more robust, and more maintained library.

  • HAARG

API v0 Shim

A shim layer to handle cpanm requests to the v0 API. Could be expanded to handle other v0 clients if needed. Should allow us to drop the v0 indexes/servers without breaking common clients.

  • HAARG
  • RANGUARD (Leo Lapworth) - deployment

SCO redirector

Improved search.mcpan.org redirection, supporting many additional URLs not handled by the current naive URL rewriting.

  • HAARG
  • RANGUARD (Leo Lapworth) - deployment

ES connection pooling

So rollouts do not cause network blips, Server starter config might also be useful

  • RANGUARD (Leo Lapworth)

Improving search results

We have a framework for testing changes now, work on actually doing changes

  • RANGUARD (Leo Lapworth)

Writing a command line client for the API

I would like to have a client that can show all available endpoints and autocomplete them. Can do that with API::CLI. Would have to write an OpenAPI file for the MetaCPAN API.

  • TINITA

CPAN Testers

To-Do: https://gist.github.com/preaction/adc680973c5ec7dc70c80ad4808e1429

Client issues

Fix outstanding bugs in the queue, specially those preventing tests from being sent or not giving out accurate and complete information on the results.

  • GARU

Common::Client

Integrate CPAN::Reporter with CPAN::Testers::Common::Client so both cpan and cpanm benefit from a common codebase (and remove tons of duplicate code).

  • GARU

Metabase

Send other Metabase facts and get them to be properly parsed and manipulated by the CPAN Testers' servers. This will (hopefully) allow for much more granular query and analysis of test reports.

  • GARU

Test::Smoke

Look at the sync-from-git code.

  • ABELTJE
  • TUX

Move Metabase Storage

The Amazon SimpleDB is costly, unwieldy, and does not allow good querying (because of the costs). Moving the primary incoming test report database to MySQL's JSON field will improve the queries we can run while removing the SimpleDB cost completely. https://github.com/cpan-testers/cpantesters-api/issues/3

  • PREACTION

Performance of main processing task

The main processing task that reads incoming test reports and compiles the basic pass/fail statistics about them is too slow, often up to days behind the actual incoming test reports. There seems to be no low-hanging fruit to improve serial performance, so it will need to be parallelized and preferably distributed. I've written a couple modules to help: Beam::Runner and Beam::Minion. https://github.com/cpan-testers/cpantesters-backend/issues/1 https://github.com/cpan-testers/cpantesters-backend/issues/2 and https://github.com/cpan-testers/cpantesters-backend/issues/5

CPAN and App::Cpan

Make "cpan" (the app) actually look at the -x option when either Text::Levenshtein or Text::Levenshtein::Damerau are installed in order to make it go on instead of taking gigabytes of memory and causing the machine to halt.

  • TUX
  • ANDREAS

Configure and metaconfig

bring down dependencies on upstream meta/dist

  • TUX
  • ARC

Perl 6

Perl 6 and CPAN

Chat about getting Perl 6 authors to use CPAN (PAUSE already supports Perl6 modules), I'd be interested in talking with anyone who can help on this. I already run https://github.com/perl6modules but this should not be a long term solution.

  • RANGUARD (Leo Lapworth)
  • UGEXE
  • NINE

Declarative build system

Half a year ago, Nine has started collecting thoughts on a declarative build system for Perl 6 modules to replace Build.pm. The goal is to avoid touring complete build steps as much as possible which seems to align very well with "Static CPAN installation".

  • NINE
  • UGEXE

CPAN River

River data generator

I've been generating the river data as a side effect of the mess of scripts I use to run the pull request challenge, build the adoption list, and some other stuff.

I'm working on a stand-alone generator for this data, and hoping to also have it generator lists like "dists that have changed bucket", etc. I was hoping to have it complete before PTS, but work and other Perl-related yak shaving probably means I'll work on it there.

  • NEILB
  • XSAWYERX

Inspection / code review of Try::Tiny

As an experiment, I thought about running an inspection of Try::Tiny. There wasn't enough interest in this, and I have enough other things on my todo list, so I'm not going to do this.

  • NEILB

YAML

All kinds of YAML related stuff

  • INGY
  • TINITA

Release Manager's Guide

The current Release Manager's Guide is generated by a script that still contains steps you don't need to do, and sometimes in a different order than needed to be performed. I want to clean that up and generate a more fluent one. It might allow automating more of the release.

I want to possibly introduce a web interface to it as well, based on Renee's work here:
https://github.com/reneeb/5-25-10

  • XSAWYERX

Devel::Cover

For the first year in many, Devel::Cover is actually working with blead, and thus the upcoming major release. So I want to use some time to catch up on pull requests and bugs and make a new release.

I'll also be picking brains and enlisting help in solving problems such as being able to report on coverage of code outside of subroutines in modules.

cpancover

cpancover.com is basically just working. But it won't stay like that forever.

I want to make it easier to update both the perl version running and the version of Devel::Cover being used. This will probably end up with the creation of a cpancover container. This will also have the advantage of making it easier to set up cpancover of a new server, which will help with the goal of making cpancover more resilient to failure.

I also want to make the system more dynamic, possibly by running the coverage jobs via a queue and making the UI more dynamic.

I also still want to improve integration with metacpan.

  • PJCJ

version 50 saved on 10/05/17 15:55 by Paul Johnson (‎pjcj‎)

Home | Recent changes | History