Hello internals! After reading the discussion for some time and thinking through what has been written, I came to the conclusion that something like legacy namespace witch is enabled by default is required. Why? Because some projects are big and you usually migrate them in chunks. So that way you can start the conversion the day the new major version is released without a need to rewrite the whole thing in one go. The hosters will be able to update their instalations without the fear that their clients will be unable to run their old code.
There should be the roadmap defined, where the steps of removing the old API are described and publicly avaliable from the front page of the php.netfor everyone to see. I would imagine it something like this: PHP next.y.z is released. Legacy API is imported to global space by default, can be turned off via a flag. Optionaly E_STRICT can be emited (or a special E_* introduced for for the move). Tool like pythons 2to3 could be introduced (and I think should be) - it's development should not be restricted to internals only - a github project would be great, so that the whole community could help. A major effort should be made to spread the word. PHP next.x+1 is released. All legacy stuff starts to emit "E_DEPRICATED". PHP next.x+2 is released. Legacy API is not imported into global namespace by default - the php.ini setting should be changed for that. PHP next.x+3 _OR_ PHP next +1 is released. Legacy API is removed for good, php.ini flag is removed - adapt or die. Just my userland developers $0.02 :) Thanks, Arvids.