[ I have been sending these grant reports to the perl-qa mailing list, whence they have found their way to news.perlfoundation.org. It was quite rightly suggested that it was appropriate to post them here too and so, somewhat belatedly, I am doing just that. ]



In accordance with the terms of my grant from TPF this is the monthly

report for my work on improving Devel::Cover covering May and June 2014.

Actually, it's really only for May. I did some work on Devel::Cover in June,

but I am not charging that to the grant, so the month referred to here is May.

This month I released versions 1.14 and 1.15.

Perls 5.20.0 and 5.21.0 were released this month and, thanks in no small part to

work by Matthew Horsfall, they are both fully supported by Devel::Cover.

The main body of work this month was the merging of the cpancover branch. I

have had cpancover.com up and running for some time now. But it has only been

providing coverage for a fairly small subset of the modules on CPAN.

Naturally, I tried to pick the most interesting modules, but the coverage of

CPAN was minimal.

Since the QA hackathon I have been trying to extend the scope of cpancover to

provide coverage for all of CPAN, and not just for the most recent version. In

this quest I have been aided and assisted by Neil Bowers, Olaf Alders and

others.

The major problem with running Devel::Cover on arbitrary code is an extension of

running arbitrary code. Even if the author of the code has no malicious intent

and made no coding mistakes, there are surely bugs in Devel::Cover which might

cause the coverage run to loop indefinitely or to use up all the memory or cause

other problems.

My initial attempts to solve these problems using things like fork and sleep and

kill and killpg weren't completely successful. (Those CPAN authors are so

crafty!) And, naturally, other people who might be willing to provide machines

on which to run cpancover will want some assurances regarding the resource

usage.

So I looked into using Docker. Running each coverage run in an individual

docker container should allow each instance to be resource constrained and

ultimately completely killed if necessary.

Docker is still reasonably immature, but has recently released version 1 which

has removed the warning not to use it in production. I had problems with the

earlier versions, but each release has made it more solid. The branch containing

this work has been fairly successful and is now merger into the git master.

This has been running on cpancover.com and, although I've still not been able to

work all the way through CPAN, there's a pretty good start at

http://cpancover.com/staging/index.html (Warning, that's quite large now - I

need a better solution than showing all modules on a single page.)

Perhaps more importantly, there's a json file available giving basic coverage

information about the covered modules. This will eventually be used by Neil

Bowers' CPAN dashboard and by MetaCPAN to provide information and create links

to a module's cpancover page. It's also available to anyone else who can think

of a good use. Suggestions, and code, welcome. The json data is available at

http://cpancover.com/staging/cpancover.json

I really want to get this cpancover work to pick up new modules as they are

released. I think the only work left is fixing up the occasional problems that

show up because of docker, providing a better landing page and navigation, and

automating the whole thing.

Other work this month included fixing up some testing failures on *BSD and

Windows and providing better support for 5.20 or, more accurately, 5.21 and

beyond when CGI.pm will be removed from the core.

As usual, there were also some patches applied, pull requests merged, and

other bugs fixed.

From the figures below, you can see that this grant is now very nearly

completed. Within the next few weeks I will finish it up and write a closing

report. If you or your company has contributed to the Perl 5 Core Maintenance

Fund then I would like to offer my sincere thanks for your help in funding this

work and trust that you have found it useful. Dan Wright, the Treasurer of The

Perl Foundation, has recently written about how the fund is now almost depleted.

See http://blogs.perl.org/users/dan_wright/2014/07/p5cmf-needs-some-love.html

If you would like to see the other grantees being able to continue their work

(and there is some excellent work being done) then please consider whether you

or, more likely, your company would be in a position to donate to the Core

Maintenance Fund.



Closed Github tickets:

89 Allow -coverage default,-pod option to cover

Fixed cpantesters reports:

http://www.cpantesters.org/cpan/report/a46bcdf6-d089-11e3-9f96-e4d5e82f99b1

http://www.cpantesters.org/cpan/report/5702f9f0-d060-11e3-9f96-e4d5e82f99b1

http://www.cpantesters.org/cpan/report/9c61f5b4-d051-11e3-967c-c0cca229d549

http://www.cpantesters.org/cpan/report/0d662304-d037-11e3-9f96-e4d5e82f99b1

http://www.cpantesters.org/cpan/report/a8c01340-d010-11e3-9f96-e4d5e82f99b1

http://www.cpantesters.org/cpan/report/3c1d8874-d0bc-11e3-9f96-e4d5e82f99b1

... and many more ...

You can see the commits at https://github.com/pjcj/Devel--Cover/commits/master



Hours worked:

02.05 3:40

22.05 2:30

25.05 3:10

26.05 2:00

28.05 2:50

29.05 3:20

31.05 7:30

Total 25:00

Total hours worked on grant: 390:25