A good reason not to version submodules.
Probably you do not agree with my point of view, but I think that adding version numbers to sub-modules is, most of the times, counter-productive.
Explaining what I mean by adding version numbers to sub-modules. If I have a module, named Foo::Bar that ships with Foo::Bar::Helper, probably I don't want to add a version to Helper module.
Or if you do, be sure to keep or increment it on every release you do.
Why this matters? Well, it matters to the people who use cpan and the r command to check for outdated modules:
CHI::Driver::Role::HasSubcaches undef 0.45 JSWARTZ/CHI-0.45.tar.gz CHI::Serializer::JSON undef 0.43 JSWARTZ/CHI-0.43.tar.gz CHI::Test::Class undef 0.39 JSWARTZ/CHI-0.39.tar.gz Mason::DynamicFilter undef 2.06 JSWARTZ/Mason-2.06.tar.gz Mason::Plugin::Defer::Filters undef 2.01 JSWARTZ/Mason-2.01.tar.gz
Basically, these modules had a version number on old releases. With new releases they were removed. Now, cpan thinks they are outdated.
Not sure what would be the solution now, but maybe to add a version number again (and keep it, like "version 100", just for the sake of keeping this from happening), or delete old modules from CPAN (as in, move them to BackPAN, so that these submodules are not indexed).