PEP Parade

Joshua Macy l0819m0v0smfm001 at sneakemail.com
Sat Mar 9 09:16:07 EST 2002


Chris Gonnerman wrote:

> Yeah, but "major" language standards change every few years... Python
> releases come about 1-2 per year.  We have to resist the urge to change
> something major in the core too frequently.
> 


   The standards may only change every few years, if you don't count 
Java as a "major" language, but all the vendors of implementations for 
those languages I've ever dealt with release patches at the rate of 1-2 
per year, or more frequently.  Even the COBOL vendors.  And every patch 
release that fixes something stands a chance of breaking something else 
(even if only code that worked around the old improper behavior).  Shops 
that really care about that and have no viable regression test strategy 
upgrade less frequently, and if they ship software make sure that they 
ship exactly what's needed to run their product (no easy task on 
Windows, thanks to dll hell).  My experience is that shops that take the 
conservative approach (even mainframe shops) eventually end up throwing 
out working systems because the exact compiler version that they rely on 
fall off the vendor's support list and it becomes too painful to upgrade 
through multiple releases.  And in Microsoft shops insult is added to 
injury when you have to pay to upgrade to something that will break your 
existing code.

   But nobody is holding a gun to your head and saying "upgrade or 
die"--and unlike with closed source compilers, if you're bound and 
determined never to move off 1.5.2 you have the source code so you can 
continue to maintain it unto as-yet-undreamed-of platforms and 
architectures.  Equally true is that nobody is likely to agree to do 
this maintenance for you for free.

As for me, I've yet to see a change to Python since 1.5.2 that I regard 
as "major" in terms of incompatibility with existing, working code 
(plenty of new features for what used to be invalid syntax) that you 
didn't have to explicitly enable with a __future__ statement, and in 
that case there was a whole release in between where you could test with 
either behavior.

I can understand people taking a more conservative approach, but then I 
lose them when they say they should build a sub-community around the 
inviolability of a particular old release.  And do what?  Sit around 
looking at the old source code and say "Yep, we're not going to change 
that"?  The obvious approach to me is that if you're not prepared, for 
whatever reason, to upgrade: don't upgrade.  If you are serious about 
distributing a stable working system: distribute the whole system, 
interpreter and library included.

   Joshua




More information about the Python-list mailing list