Build a page worth testing on all 20 platforms
I had to build 20 installations, each one rebuildable a year later and comparable to itself. Installing them was the quick part. Working out what belonged on each page took far longer.
Some platforms came with a demo site, so the work was choosing which page to test. Drupal came with Umami, a food magazine, and I tested an article page from it. Craft, Kirby, Symfony, concrete5 and PyroCMS all came with starter content I could use as installed.
The two stores needed their products brought in. For WooCommerce I installed the Storefront theme and imported the official sample products, then tested a single product page that loads an image, a description, an add-to-cart button, reviews, sidebar widgets, a related-products block and a pullout widget. For Easy Digital Downloads I installed Themedd and its demo content, then tested a download page with an image, a description, a purchase button and some category links. Two WordPress product pages, and one does several times the work of the other. This is why a leaderboard would have been useless.
Laravel, CodeIgniter and CakePHP open to a welcome screen, which is a sensible thing for a framework to do and an unhelpful one for a benchmark. There was no page until I built one. For Laravel I built a small app against a database of 1,000 posts, for CodeIgniter a news table of 1,000 rows, and for CakePHP a list of 400 generated posts. I published those schemas in the report so a reader could rebuild the test instead of trusting my numbers.
Then I wrote down every tested page element by element. That record is what let me install a newer version in 2022 and know I was measuring the same kind of page. No single platform was a disaster. The frameworks took the most fiddling, and that was about the same work as setting up the two stores with their products imported. I’m going through all of this to drive the point home that most of a benchmark happens before it runs.