Having an instance is great.
Could we also consider moving away from singletons that are hard-wired to Test::Builder? By that I mean make Test::Builder a 'factory' that gives either a default, plain vanilla Test::Builder object or else a specific subclass? E.g.,
use Test::Builder 'Test::Builder::Subclass'; #sets up the singleton as a subclass
use Test::More 'no_plan'; # uses the subclass object
Also, in thinking through the reorg of Test::Builder, it would be great if the notion of "success" or "failure" could be isolated from any particular form of output. That would mean that someone could use Test::Builder::TAP (for TAP style output) or Test::Builder::HTML for custom output purposes. (As opposed to the current approach of using Test::Builder to speak TAP to Test::Harness to gather results to either print or do other things with.)
Regards, David Golden