For example, Python 3.0 does away with the print keyword. Printing to the screen is now handled by a function -- as it is in C -- which means the syntax has changed. Nearly every quickie Python script ever written will need to have parentheses added to its print statements before it can run on the new interpreter.
The way the language handles text has changed, too. While older versions allowed programmers to mix strings of differing encoding types (with varying results), Python 3.0 enforces stricter division between the concepts of binary data and text data -- and text is always Unicode. Because of this, any code that deals with Unicode text the old way will need updating.
The list of changes goes on, but one thing is certain: These aren't fringe-use cases. Commonplace, standard, correct, functioning Python 2.5 code probably won't run under Python 3.0 without modification.
Slithering ever onward
Fortunately, the answer for most developers is simple: For now, just keep using an older version. Python is developed along multiple branches; the 3.0 branch doesn't automatically supersede the others. Python 2.6 was only released this past October, and a Python 2.7 is reportedly in the works.
In fact, most developers are still using version 2.5. But the advantage of the later releases is that they act as stepping stones to Python 3. No need to pore over those print statements yourself; if you're writing good Python 2.6 code, porting it to Python 3 can be as easy as running an automated conversion script.
And while the rest of the industry is just beginning the slow march toward Python 3, van Rossum and the other Python developers are still working -- fixing bugs, improving performance, and planning for the next version. As the Python Software Foundation's David Goodger explains, "We fixed problems so we can go forward and add features more easily in the future without having to work around previous bad decisions." And why not? For the Python community, it's the only obvious way to do it.