2.3.1 and 2.3 compatibility (was: [Pythonmac-SIG] Dialogs)

Jack Jansen Jack.Jansen at cwi.nl
Thu Aug 7 00:39:11 EDT 2003


This touches on a larger subject that I'd like to discuss here, hence 
the change of subject.

On woensdag, 6 augustus 2003, at 17:16PM, Schollnick, Benjamin wrote:
>> There is a hack, but it will only work once: call MacOS.WMAvailable().
>> The first time you call this it will try
>> GetCurrentProcess/SetFrontProcess,
>> but unfortunately for this use case it caches the result in a static
>> variable.
>> [...]
> What about a small change to MacOs.WMAvailable ()?
>
> For example...
>
> def	MacOs.WMAvailable ( cache = True):
> 	if not cache:
> 		<<Call GetcurrentProcess...etc>>
> 	else:
> 		<<Normal routine>>
>
> In other words, it's behavior would be the same, except we could 
> override
> the
> cache...

Python officially has the rule that micro-releases contain bug fixes 
only.
But this rule has often been interpreted as "micro-releases shouldn't 
break
working code, except when they actually rely on the buggy behaviour, 
which
is very unlikely, and silly too". Note that the two statements are 
different:
the second is only about backward compatibility, the first one might be
interpreted as being about forward compatibility too.

MacPython has a history of taking the term "bug fix" to unprecedented 
heights:-)
We've simply told people to upgrade, which worked because of the 
relatively small
community.

But all that is changed if Apple decides to include Python 2.3 in MacOS 
10.3:
there are going to be a few hundred active MacPython users (at least, 
initially:-)
who can reasonably be expected to upgrade to 2.3.1, but millions of 
potential
users out there who will remain at 2.3 until the next release of MacOSX.

In other words: if we add a feature to an API in 2.3.1 (calling it "bug 
fix")
the active developers will be tempted to use it. But once their 
software comes
in the hands of a new MacPython convert it will crash.

For this reason I think we have to be extremely conservative in 
including anything
that would not be both backward and forward compatible into 2.3.1.




More information about the Pythonmac-SIG mailing list