Louis,
I can see what you mean by "there isn't a clean way to offer backward compatibility." I know we DON'T want to mix the native namespacing with the traditional joomla namespacing, otherwise we would end up with strings like:
Joomla\Controller\JControllerBase
Users\Controller\UsersControllerProfile
I wonder if there could be a way to combine classmaps and some eval processing to the autoloader to accomplish this? Just thinking as I type here, but maybe something like this situation?
A dev calls the class JControllerBase. It's not loaded yet, so the request goes to the autoloader. The autoloader looks at the classmap of JControllerBase, and loads in the file libraries/joomla/controller/base.php, which contains the namespace Joomla\Controller and the class Base. Then, the autoloader runs an eval to bring in the class like this:
eval('class JControllerBase extends Joomla\Controller\Base {}');
I have no idea what this would be like in terms of real world performance, but it might be worth checking out. This would retain backwards compatibility (in theory) while allowing for a deprecation period on using the "old style namespaced" classnames.