Amazon Development Center Germany GmbH




Travis CI

Perl 6




Mongueurs de Perl

YAPC Europe Foundation

infinity interactive







campus explorer

Perl QA Hackathon 2015

Proposed Projects

Table of Contents

  • Berlin Consensus discussions
    • CPAN Governance
    • CPAN Security model
    • Assorted other topics
    • Improve Web UI
    • Improve documentation of distribution naming and permissions
    • Other PAUSE issues
  • CPAN clients
    • CPAN.pm
    • cpanm
    • Carton/Carmel
  • Build, package and install systems
    • Module::Build replacement
    • Module::Install
    • Compilation and Linking tools
    • Installed module database / Packlists replacement
    • MakeMaker::Extension
    • Static cpan installation
    • PPM::Make
    • Module::Metadata
    • File::ShareDir and File::ConfigDir
    • Better JSON support for CPAN::Meta and Parse::CPAN::Meta
    • YAML Ecosystem
    • Devel::PatchPerl
  • Test libraries and harness
    • Update Modules for Test-Stream
    • the sorry state of Perl unit testing framework
    • P5 TAP::Harness parallel testing on Win32
    • Test::Harness is very inefficient
  • CPAN Testers
    • CPAN testers websites
    • CPAN::Testers::Common::Client
    • Lightweight CPAN Testers client
    • Migration of Metabase index to MongoDB
  • Quality metrics and assessment
    • Code Coverage
    • CPANTS metrics
    • CPANTS Web
    • Dashboard / Adoption / PRC
    • CPAN dependency graph in Neo4j
    • Travis CI
  • Documentation
    • CPAN culture
    • Being a good CPAN author
    • revise perlguts
    • CPAN::Meta::Spec::Extensions
  • Perl 5 Core
    • Test::Smoke
    • Benchmarking
  • Perl 6
    • Spectest coverage for "Perl 6.0.0"
    • Discuss the CPAN/toolchain architectural big picture
    • Finish TAP::Parser
  • Logistics
    • Food, drinks, cleaning, note taking and transcribing, general support and distractions

Berlin Consensus discussions

Lunch-time conversations with as many people as want to participate. Proposed schedule and more details on the Discussion page. Highlights include:

CPAN Governance

  • Discuss and hopefully form a body with a mandate to act as a last-ditch-effort protecting the fragile CPAN ecosystem from PAUSE authors. Currently there isn't an actual hard proposal. At this point all that is being gauged is interest in the broadest sense possible.

— by ribasushi +1, user:garu, Karen Etheridge (‎Ether‎), Neil Bowers (‎NEILB‎), Aristotle, Olivier Mengué (‎dolmen‎), Leon Timmermans (‎leont‎), Jens Rehsack (‎Sno‎), H.Merijn Brand (‎Tux‎), others???

CPAN Security model

  • CPAN is prone to man-in-the-middle attack. Discuss how we can improve the security/trust of CPAN and BackPAN

– by David Golden (‎xdg‎), others???

Assorted other topics

  • Toolchain roadmap
  • Any urgent changes to META spec
  • Better signalling pure-Perl mode to compiler-availability checkers
  • PAUSE 2


Improve Web UI

  • Port mod_perl1 interface to PSGI
  • Make it easier to change permissions for those who maintain a lot of modules.

— by Kenichi Ishigaki (‎charsbar‎), Aristotle, (Tatsuhiko Miyagawa (‎miyagawa‎) is happy to help on PSGI related) others?

Improve documentation of distribution naming and permissions

  • The new permissions rules confuse someone every month and there's nothing yet in PAUSE docs to explain it

– by ???

Other PAUSE issues

Check https://github.com/andk/pause/issues

  • Use bcrypt (and support passwords longer than 8 characters!)
  • Finally kill off the remnants of the module list (website pages, underlying code, supporting tables)
  • Regular email validation

— by Aristotle, ???

CPAN clients


  • support x_postinstall requirements phase
  • do soemthing with x_breaks requirements phase (warn for now?)
  • properly handle requires<->recommends recursive dependencies

– by ???


Big improvement/rewrites to make cpanm a regular CPAN module (and extract useful bits as standalone modules as well). This will also include hooks and plugins, although that might be a bit too ambitious for even a 4-day project.

Support for distroprefs.

- Tatsuhiko Miyagawa (‎miyagawa‎)


Work on https://github.com/miyagawa/Carmel and release 1.0, to make it a successor of Carton (or call it Carton 2.0, if the transition is transparent enough). Also need to close a bunch of outstanding issues on Carton, some of which would be problematic in Carmel as well.

- Tatsuhiko Miyagawa (‎miyagawa‎)

Build, package and install systems

Module::Build replacement

Finish various components of a planned Module::Build replacement, including

  • Finish Build::Graph, a dependency engine that doesn't suck
  • Write a plugin architecture that doesn't suck, this will probably require some kind of IOC.

— by Leon Timmermans (‎leont‎), Aristotle


  • Fix META generation: make v2 META (to have properly split build/test requires)
  • Inject Module::Install and plugins as develop/requires prereqs

— by Olivier Mengué (‎dolmen‎)

Compilation and Linking tools

Portable yet flexible (cross) compilation/linking tools are most welcome.

— by: Leon Timmermans (‎leont‎), H.Merijn Brand (‎Tux‎), Jens Rehsack (‎Sno‎)

Installed module database / Packlists replacement

Start writing that .packlist replacement we discussed in Lancaster.

— by Leon Timmermans (‎leont‎), Jens Rehsack (‎Sno‎), Aristotle, Tatsuhiko Miyagawa (‎miyagawa‎) others?…


Start writing an easy to use EUMM extension framework and some early adopter plugins as
* make test-cover
* install config files to etc, smooth File::ShareDir::Install successor

— by: Jens Rehsack (‎Sno‎), others?

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.

— by Leon Timmermans (‎leont‎), miyagawa


PPM::Make could use other toolchain modules/services to gather package information.

— by Kenichi Ishigaki (‎charsbar‎)


pare down https://github.com/Perl-Toolchain-Gang/Module-Metadata/issues/, especially in-progress features and bug fixes:
- evaluate module version in Safe compartment
- interfaces to parse module by module name, filename, filehandle, which will properly allow us to understand utf8-encoded modules
- close the behaviour gap with MM->parse_version and PAUSE, allowing MMD to be dropped into PAUSE seamlessly

— by Karen Etheridge (‎Ether‎)

File::ShareDir and File::ConfigDir

  • discuss with interested people how File::ShareDir and File::ConfigDir will fit into modern OS file system layout and how to deal with Filesystem Hierarchical Standard, the typical bin/, etc/, lib/, libexec/, man/, share/, sbin/, var/ ... layout for dedicated installations etc.

— by Jens Rehsack (‎Sno‎)

Better JSON support for CPAN::Meta and Parse::CPAN::Meta

– by ???, Karen Etheridge (‎Ether‎)

YAML Ecosystem

Make significant progress on these goals:

  • Comprehesive shared YAML test suite
  • Pegex YAML grammar
  • YAML.pm parser Pegex based
  • YAML.pm and YAML::Tiny shared cores
  • YAML{.pm,::{XS,Tiny,Syck}} convergence

— by Ingy döt Net (‎ingy‎)


Devel::PatchPerl currently doesn't provide enough patches to build many older versions of perl in the 5.8/5.9 range. I'd like to get Devel::PatchPerl up to speed so that things like perlbrew can be used to install these older versions.

-- by Matthew Horsfall (‎alh‎)

Test libraries and harness

Update Modules for Test-Stream

Find popular/common test modules on cpan (Test::Fatal, Test::exception, etc) that do not utilize Test::Stream. Update them to take advantage of Test::Stream enhancements when possible. In most cases this means working fine on old versions of Test-Simple while using new features when they are present already. For some modules the author and users may be fine with bumping the minimum Test-Simple version, but that will not be assumed.

This project should generate a lot of pull requests, and will also require a lot of communication with authors of the modules we update. With any luck most authors will be present!

-- by Chad Granum (‎Exodist‎)

the sorry state of Perl unit testing framework

Something needs to be done. Read this post I wrote for QAH http://perlmonks.org/?node_id=1122667

-- by bulk 88

P5 TAP::Harness parallel testing on Win32

I made a <strike>crude prototype of parallel testing on Win32 https://rt.perl.org/Public/Bug/Display.html?id=120330</strike> good prototype https://github.com/bulk88/Win32-APipe but TAP::Harness, which is extensively OO designed, but it needs serious work to fit a different, non-select() based event loop into it. I can do the Win32 side of things, but I looking for someone who is willing to call themselves the "architect" of TAP::Harness to help me.

— by bulk 88

Test::Harness is very inefficient

After profiling TAP::Harness with NYTProf, it is a very inefficient testing harness. Try running a "make test" on https://metacpan.org/pod/Acme::Shining (this module is a load tester of TAP), you might want to edit the Makefile.PL to say "TEST_VERBOSE=0" since it is "TEST_VERBOSE=1" by default. Compare with top or your favorite task manager the CPU usage of the 2 perl processes, 00-run.t is 5% or less the cpu usage of of the test harness perl process. I did a NYTProf run of Test::Harness. There is alot of optimize to do, or possibly a total rewrite Test::Harness into a "lite" version without the bloat. Next paragraph is how to get a copy of the NYTProf results I ran.

Goto nytprof-1-mil-tests.7z.ascii85 click on "Edit this page", copy paste the text to a file called nytprof-1-mil-tests.7z.ascii85, then run "perl -MConvert::Ascii85 -E" $/ = undef; binmode(STDIN); binmode(STDOUT); print Convert::Ascii85::decode(<STDIN>);" < nytprof-1-mil-tests.7z.ascii85 > nytprof-1-mil-tests.7z", then extract the .7z file.

— by bulk 88

CPAN Testers

CPAN testers websites

  • Add MessageQueue to reports feed
  • Add MessageQueue to page builder
  • Fix Admin process for alerting tester to accept marked reports
  • Add Admin process to re-attribute a report to a different distro

— by Barbie.


Improve CPAN::Testers::Common::Client (hopefully fixing most/all reports) and make CPAN::Reporter and cpanminus-reporter use it more thoroughly.

— by user:garu

Lightweight CPAN Testers client

Work on an extremely light, dependency-free script to send (or at least gather) reports on smoker boxes that can't have Metabase and Test::* pre-installed.

— by user:garu, H.Merijn Brand (‎Tux‎)!

Migration of Metabase index to MongoDB

  • Build replicable deployment of existing Metabase web app
  • Refresh MongoDB Metabase backend modules
  • Build replicatable deployment of existing Metabase web app
  • Build replicable deployment of local MongoDB-backed Metabase web app
  • Write replacement scripts for extracting data

– by David Golden (‎xdg‎)

Quality metrics and assessment

Code Coverage

  • Tidy some of the edges in cpancover.com
  • Improve the HTML creation (404 errors)
  • Integrate with metacpan
  • List each dist at most once: latest developer if there is one, and latest non-developer
  • Fix Devel::Cover problems resulting from op tree changes for 5.22

— by Paul Johnson (‎pjcj‎), Helmut Wollmersdorfer (‎wollmers‎) (and maybe a bit of Neil Bowers (‎NEILB‎))

CPANTS metrics

Add and improve some metrics, both for uploaded distributions, and for local projects that use Test::Kwalitee, Module::CPANTS::Analyse and its friends.

— by Kenichi Ishigaki (‎charsbar‎), Karen Etheridge (‎Ether‎), H.Merijn Brand (‎Tux‎) others?


  • Make it analyze more frequently so that people can check the analysis just after they upload.

— by Kenichi Ishigaki (‎charsbar‎)

Dashboard / Adoption / PRC

I have three different systems in various stages of production, all based off data assembled from various places. I'm working on a unified design for a public & open system which covers all 3. Would like to talk to CPANTS, CPAN Testers, MetaCPAN etc on interface model.

— by Neil Bowers (‎NEILB‎)

CPAN dependency graph in Neo4j

Experiment with building a graph database of CPAN dependency
information. Initially looking at distributions, but then possibly
looking at modules too.

— by Neil Bowers (‎NEILB‎)

Travis CI

Travis CI GmbH has their HQ in Berlin (Rigaer Straße 8) and I have a few friends working there (although most of them are remote). If someone wants to work on better build environments for perl on Travis CI, I'd be happy to connect with them. -- Tatsuhiko Miyagawa (‎miyagawa‎)

Question by H.Merijn Brand (‎Tux‎): native perl6 support?


CPAN culture

Pull together some kind of statement of CPAN culture, with the values and principles that we choose to live by.

— by Neil Bowers (‎NEILB‎)

Being a good CPAN author

It's clear from my mailbox at the moment that we don't have very good documentation on the toolchain / CPAN development process for new authors. I'd like to sketch out a guide that takes someone from complete n00b to reliable CPAN contributor. I'll start this before the QAH, but the QAH is a great opportunity to get guidance & input.

— by Neil Bowers (‎NEILB‎), David Golden (‎xdg‎) (time permitting)

revise perlguts

perlguts is seen by some community members as impossible to understand. Most of it was written between 1997 and 2000. After 2000, it has only received narrow scoped quick fly-by patches. Senior XS/C developers dont use perlguts, since they already know how to do things from experience. Amateurs say it is too difficult to understand and use Inline::C or FFI solutions or not Perl. XS tutorial talks often pop-up at YAPCs because of this. A meeting of some senior XS/C devs to write answers and some amateurs to provide questions and criticism about the layout of the document I think would be useful.

— by bulk 88, David Golden (‎xdg‎) (in amateur-mode to ask the dumb questions)

german Perl documentation

* translate perlintro and maybe more
* sketch an up to date fun hypertext tut "learning prog with perl"

— by Herbert Breunung (‎lichtkind‎),


  • document well known "x_" fields

– by ???

Perl 5 Core


Pick up the pieces

-- by Abe Timmerman (‎abeltje‎), H.Merijn Brand (‎Tux‎)


Based on earlier work (and a new release of Tapper) I plan to resurrect my Perl::Formance project about measuring Perl 5 performance.

In addition, I would like to incorporate benchmarking from other sources into Tapper, maybe from Perl6, Parrot releases, or CPAN module tests. In contrast to earlier years, this year I want to have my Tapper release work finished before arriving, so that I have time to talk to others about how to cooperate with existing projects.

If you are interested in any kind of performance evaluation related work, please talk to me at the hackathon.

— by Steffen Schwigon (‎renormalist‎)

Perl 6

Spectest coverage for "Perl 6.0.0"

  • Mark certain test files and also single tests or code blocks as applicate for a certain release of Perl 6.
  • Extract per release tests from roast, the spectest repository.

— by Tobias Leich (‎froggs‎)

Discuss the CPAN/toolchain architectural big picture

Currently things are not much documented, and some parts of the toolchain have serious deficiencies. A roadmap on how to tackle that would be most welcome.

— by Leon Timmermans (‎leont‎), Tobias Leich (‎froggs‎)

Finish TAP::Parser

Current list of open issues:

  • Parallel console outputting
  • Rule based parallel scheduling
  • SourceHandlers other than ::Perl6
  • Various prove arguments
  • Serialize/deserialize YAMLish

— by Leon Timmermans (‎leont‎)


Food, drinks, cleaning, note taking and transcribing, general support and distractions

  • I will take care of food and drinks at the venue (including shopping), and cleaning the mess that you nerds leave behind (but please, clean up after yourself).
  • If you need somebody to take notes and transcribe the notes (for future use), I will be of service.
  • If there is something else to be done that I can help with, just ask me. I will try to distract you as little as possible.

— by Wendy Van Dijk (‎woolfy‎)

Last modified: 17/04/15 10:17 by Herbert Breunung (‎lichtkind‎)

Tags: build cpan eumm install module test toolchain

Home | Edit this page | Tags | Recent changes | History