CPAN Testers at meta::hack v4
For this year's MetaCPAN Hackathon, I decided I wanted to start turning the CPAN Testers mockup I made 3 years ago into a real, working site. Along the way, I built a much better development environment for CPAN Testers, making it even easier for someone to start working on the project. I also released Mojolicious::Plugin::Moai, a UI widget kit for Mojolicious.
To be quite honest, I didn't know what to get started on. Last year at the MetaCPAN Hackathon, I built a Github user auth for the new site in order to start letting users link their PAUSE accounts to authorize them to manage the reports for their distribution. Then at the Toolchain Summit, I built out a Docker-based development environment so I could test that system. But it felt a lot like putting the cart before the horse: Users can't manage reports until they can see reports.
Then the site had some trouble with the database that took entirely too long to sort out (story of my life). Frankly, the database is just too big, and a lot of the data stored in the database is not read often enough to need a relational database. I decided that it would be a lot easier to do a lot of things if the database were a bit smaller, and posted about my plans to the mailing list. I got good feedback, and came up with a plan to simply remove the most static data from the database. But, to do that, the website would need to be able to read the data from its new home...
So I turned the landing page mockup from the http://beta.cpantesters.org site into a live demo: http://beta.cpantesters.org/web. This page shows the latest uploads to CPAN and the pass/fail counts received so far. This is the only page that is not a mockup currently, but I'll be working on the other pages over the coming months.
Additionally, I created a simple Docker workflow for hacking on CPAN Testers. My hopes for this are:
- Simplify testing a complete CPAN Testers cluster
- Eventually move to a Docker-based deployment
- Allow others to run their own CPAN Testers that can sync data to/from the primary
It's number 3 that I hope will be able to help fill in any gaps in reporting that might be created when I start pruning what data is stored in the database: Anyone could easily sync the raw reports and run whatever local reporting they would like.
If you'd like to help out, try out the new Docker development environment and give me some feedback. Then, take a look at our open projects for ideas on where you can help.