This is the issue where `include apache` actually means “try to declare class `<current namespace>::apache`, class `<parent of current namespace>::apache`, and so on, eventually declaring `apache` as a last resort."
This bites people in the wild frequently, and seem to be getting a steady stream of customer complaints about it.
We seem to have nearly universal agreement that this isn't how Puppet should work, but fixing it will break code in the wild. In redmine #2053, I suggested a deprecation plan:
- In a mid-stream 3.x release, we start logging warnings when relative namespacing finds a class that doesn't match the provided name, and provide a setting to turn on a "strict mode" that kills relative namespacing completely.
- In 4.0, we make the strict mode the only mode.