The distinction between import and include/class declaration confuses many users, and we've had a number of edge cases with import that have caused even more confusion.
The path forward is to structure your manifests in classes in modules, and to follow autoloader conventions. This does make Puppet much more opinionated, but we believe the benefits are worth it.
Particularly this will push people towards a world where Puppet manifests are more easily shareable in the form of modules, and by running everyone through the autoloader, we'll have a much more consistent set of behaviors.
We believe there is only one major required use case for `import`, the following pattern:
where users have separate DSL node definitions in a nodes subdirectory, and wish to import them all.
We're committed to solving this use case in associated tickets.
If people have other valid use cases for import that the autoloader cannot support, please comment on this ticket.