Paul Johnson has successfully completed his Improving Devel::Cover grant. I would like to thank Paul and his grant managers for all their work. I would also like to thank those who support the Perl 5 Core Maintenance Fund -- without your contributions we would not have been able to fund this project.
Paul Johnson writes:
In accordance with the terms of my grant from TPF this is the final report for my work on improving Devel::Cover.
Since the last report I have released versions 1.16 and 1.17.
The stable release of perl 5.20.1 along with development releases up to 5.21.4 have come out, and are all supported fully in Devel::Cover.
Additionally, and probably most importantly, cpancover.com is now fully up and running. For some value of fully.
http://cpancover.com is a site to display coverage information for CPAN modules. Previously this was for only a fairly small subset of CPAN modules, although I had tried to make it a relevant subset. Now, coverage is reported for all current CPAN modules, both stable and development releases, and coverage information for previous modules is not deleted. Of course, the coverage information is only available if the module can be installed, and the tests can be run on the server I am using.
On that subject, the server has been kindly donated by Bytemark. It is one of their bigv servers and runs Ubuntu 14.04. In order to cover all of CPAN I needed more disk space, and Bytemark very graciously agreed to the increase here too.
The coverage process runs continuously, looking for newly uploaded CPAN modules and then calculating their coverage. New CPAN modules are found using CPAN::Releases::Latest by Neil Bowers with index caching turned off.
In addition to the usual HTML coverage reports, there are also JSON files available if someone just wants the raw data. There is a top-level file at http://cpancover.com/latest/cpancover.json detailing which modules have been covered and the summary coverage information.
Then there is a JSON file for each covered module providing run and file-level coverage information. For example the aforementioned CPAN::Releases::Latest has http://cpancover.com/latest/CPAN-Releases-Latest-0.06/cover.json
With all this in place, plans are under way to make the information available on the metacpan. See https://github.com/CPAN-API/metacpan-web/pull/1128 for the details.
There is one big problem too! You have probably already noticed it if you have followed the link to the site. When I only catered for a smallish subset of modules, sticking them all in a table on the front page seemed quite reasonable. Now, that table has over 25,000 rows, and the front page is anything but reasonable.
So the HTML output needs to be reworked. I'm rather hoping that someone reading this will think "I can probably do that, and I'd love to have a go." If that's you, have a look at the current state of events on the ticket
https://github.com/pjcj/Devel--Cover/issues/102, and check out the existing code
https://github.com/pjcj/Devel--Cover/blob/master/lib/Devel/Cover/Collection.pm#L286 Feel free to ask questions on IRC. You can't miss the link on
https://metacpan.org/pod/Devel::Cover ;-) And if you do fancy working on this, please make a note on the ticket to avoid duplication of effort, and prepare for fame and fortune!
As usual, I made various other changes and fixes, applied patches and merged
This grant is now at an end. I delayed posting this final report because I wanted cpancover.com to be up and running and, even with 16 CPUs, it took almost a month for a complete coverage run of CPAN.
I believe the grant to have been successful. Over two years I have been able to spend 400 hours working on Devel::Cover which, otherwise, I would not have been able to do. 400 hours over two years may not sound much, and I suppose it's not really very much - I could have completed that within a few months - but what the grant gave me was the ability to take a few days every month to really concentrate exclusively on Devel::Cover.
And that was the important aspect of the grant. Some problems are just too involved to be able to solve by spending a few hours over a few evenings. Sometimes a day or two of intense work is required.
I'm not sure that completing the entire grant in three months would have been as beneficial either, although there would have been advantages and disadvantages there. One big advantage of spreading the grant out was that many more people were able to get involved in the project in various ways. It's still primarily me, and I'm not surprised by that, but I think the project is a lot more accessible than it was previously, although there's still plenty of work to be done in that regard. I'm happy that quite a few people have contributed to the project in one way or another.
In September I spoke about building cpancover.com with Docker at the Swiss Perl Workshop. I shall be reprising the presentation at the Austrian Perl Workshop. Then I am looking forward to the QA Hackathon next spring. Of course, the amount of time I'm able to spend on Devel::Cover will be reduced, but I shall continue to maintain it and work on it as time permits, as I did before starting the grant.
I'd like to offer my sincere thanks to everyone who made this grant possible. This includes, but is not limited to, everyone who has contributed to TPF, those who work with TPF and those who supported the grant request and, specifically, Nicholas Clark for first suggesting the possibility of this grant, my grant managers, Florian Ragwitz, Ricardo Signes and Christian Walde, Dan Wright for dealing with the finances, Mark Keating for dealing with the reports, and Karen Pauley for picking up anything that got dropped and keeping the whole thing on track. And, of course, a big thank-you to everyone who contributed to the project in any way at all; sending pull requests, filing bug reports, making suggestions, reminding me to do things, commenting on my reports, or even just taking an interest. I'm serious - thank-you everyone!
I have now finished off the final 9 hours and 35 minutes of the grant and therefore my final report is:
Total hours worked on grant: 400:00