In order to complete phase 1 of the CPAN toolchain auto-upgrade work (which consists of changes to about 5-6 toolchain modules to support configure_requires:) we need the ability to parse META.yml to be available in the Perl core (so that we can guarantee auto-upgrade is working on a default install).
YAML::Tiny is the obvious choice for this, since the other options are a) Very large b) Require third-party C libraries.
But there's been a long-standing concern from the YAML faction (camp? clique? posse?) about YAML::Tiny not being a "real" YAML parser, and their concerns that if something is in the core with a "YAML" label on it, people will preferentially use it instead of a real YAML parser.
The compromise position that everyone seems happy with is to put YAML::Tiny (or enough of it to support parsing META.yml) into the core, but not to CALL it YAML, and to hide the package in a namespace that won't tempt people into using it outside of it's intended scope.
So I've create Parse::CPAN::Meta, which was built in the following manner.
1. Copy YAML::Tiny to Parse::CPAN::Meta and rename the namespaces.
2. Remove the YAML-writing half of the code, and just keep the parser.
3. Remove object-orientation, and just keep the Load and LoadFile functions.
4. Remove the global $errstr variable (to avoid potential threading issues) and return all errors via exceptions.
5. Remove YAML-comparison testing, YAML::Syck-comparison testing and round-trip testing from the test suite, but otherwise keep all the same test, sample files and regression tests.
6. Rewrite the documentation to reflect the new purpose of the code.
Somewhat ironically, this means that Parse::CPAN::Meta is significantly "tinier" and probably also faster than YAML::Tiny (but at the loss of the ability to write YAML, which I consider essential for a minimalist YAML implementation).
My intention is that this module becomes dual-lifed from birth, so that it can synchronize with any improvements or bug fixes in YAML::Tiny.
Any feedback is welcome.