[Pythonmac-SIG] a beginner's list

Bob Ippolito bob at redivi.com
Thu Feb 9 04:43:28 CET 2006


On Feb 8, 2006, at 7:13 PM, Kevin Ollivier wrote:

> On Feb 8, 2006, at 5:47 PM, Bob Ippolito wrote:
>
>>
>> On Feb 8, 2006, at 2:11 PM, Kevin Ollivier wrote:
>>
>>>
>>> On Feb 8, 2006, at 1:34 PM, Bob Ippolito wrote:
>>>
>>> [snip]
>>>
>>>>>
>>>>> It's a bit confusing to talk as if needing new extensions ==
>>>>> breakage. (You know you're a geek when it's second nature to write
>>>>> equality tests like this. ;-) I remember Python 2.1 and I've  
>>>>> had to
>>>>> upgrade several times, and I never thought of re-installing my
>>>>> extensions as 'fixing what broke'. I called it 'upgrading'. Some
>>>>> people may see initially see what appears to be broken scripts,  
>>>>> but
>>>>> unfortunately that would just be because they aren't aware of
>>>>> issues
>>>>> that may occur when upgrading their Python install. I don't
>>>>> think the
>>>>> proper solution is to keep them from upgrading; we just need to
>>>>> build
>>>>> awareness that a new Python major version means new extensions.
>>>>
>>>> We're talking about upgrading Mac OS X, which implicitly upgrades
>>>> Python and obsoletes all of your extensions.  I'd call that
>>>> breaking.
>>>
>>> As does just explicitly upgrading your Python. I don't see why it's
>>> breaking if you install Leopard, but upgrading if you install
>>> MacPython 2.4 from pythonmac.org. Either way, your 2.3 extensions
>>> don't work and you have to start from scratch. And either way, if  
>>> you
>>> thought things would "just work" you're in for a rude awakening.
>>
>> The difference is that if I didn't know better, I'd get really
>> pissed off if I upgraded my OS and all of my very important work
>> stuff breaks and makes me waste a day tracking down what needs to
>> be fixed.  That's not what an OS upgrade is supposed to do.  It
>> doesn't do that for anything except applications that depend on
>> moving targets like the system's Python or Perl interpreter.
>
> I'd get really pissed off if I didn't know better and things stopped
> working regardless of how I upgraded Python. You'd consider whose
> Python broke your stuff into your decision to get upset?

Installing Python 2.4 on a machine that has Python 2.3 installed  
doesn't break anything... except for any tools you have written that  
depend on the PATH.  distutils-installed scripts are robust against  
PATH changes as they point to a specific Python binary.  It's not an  
upgrade and it's not harmful.

Upgrading the OS if you depend on its Python *is* potentially an  
upgrade and potentially *is* harmful.

There's also the problem of distribution of apps to other machines...  
we can solve that with a third party Python, but not with Apple's.

> All Apple is doing is including Python with their OS, and
> occasionally updating it. That these updates can cause not-so-
> pleasant things to happen due to how Python works is not Apple's
> fault. A lot of the speech on here practically accuses Apple of
> causing the problem and it's really not fair.

My biggest problem with their releases is that once there's a bug  
you're stuck with it for at least 18 months.  Also, their process  
isn't very transparent.  Very few people who know how to evaluate  
their patches get the opportunity to do so before they hit gold  
master and it's frozen for years.  There are threading bugs in Python  
2.3 that I personally ran into.  That was the day I stopped using  
Python 2.3 altogether because I knew that version of 2.3 was frozen  
in time forever on Mac OS X.

For example, Mac OS X 10.4 shipped with floating point bugs that  
broke Python in various ways.  They'd have found this out if they ran  
its regression tests, but apparently that's not part of their  
process.  It's simply not a trustable release.  In this case we were  
fortunate that it was a libSystem bug that they were interested in  
fixing.. but had it been a typo in their Python Makefile or  
something, we'd be screwed like we were on Mac OS X 10.2 with the  
rogue -arch i386 flag that broke extension building on their Python  
2.2.0.

>> If a third party Python had been used all along, the user has
>> freedom to upgrade their OS *and/or* their interpreter on their
>> schedule.
>
> Sure, but it's got nothing to do with problems in Apple's Python and
> everything to do with avoiding upgrades to avoid updating extensions.
> So be straight with users - tell them things break when Python is
> upgraded to a new major version; don't tell them (or suggest) things
> break because Apple is doing it.

That's not quite true because it's possible to have a couple  
different installations of Python on a given machine, but only one  
vendor Python.  If you depend on the vendor's Python, any upgrade by  
the vendor could break your installation.  If you have your own  
Python installation(s) you can keep them working for as long as you  
want or need them to, because the vendor's C ABI is stable where  
their Python ABI is not.

-bob



More information about the Pythonmac-SIG mailing list