[Pythonmac-SIG] Pack Man issues on OS X 10.3.4
has
hengist.podd at virgin.net
Mon Jun 7 08:38:51 EDT 2004
Bob Ippolito
[snip 'Bill Cosby' moment]
>PackageManager was designed to have as simple of an *implementation*
>as possible, and it pretty much does. You do a lot of hand-waving
>about how awful it is, but the reality is that it is VERY simple and
>works pretty well. The GUI application is horrible and has lots of
>bugs, but that is easy to fix. The underlying system doesn't have
>very many real problems.
My problem isn't that it's inherently awful, it's that it's
inherently pointless. 1. Expending 100% of labour creating a solution
that caters to <1% of module installations if not an efficient use of
extremely scarce, and therefore extremely valuable, manpower and
brainpower resources (i.e. yours, Jack's and the other core MacPython
developers). 2. Its administration model is inherently non-scalable,
being utterly dependent on the good will and hard work of a few elite
MacPython gurus to maintain its custom databases.
I've stated several times that I couldn't care less about the state
of its GUI. PackMan's major problem _isn't_ its technical glitches
(which can be easily resolved with a bit of elbow grease as we're
both happy to acknowledge). It's a complete failure to perform a
proper cost-vs-benefit analysis of its basic concept/design, which
would quickly show it to be a classic white elephant, impossible to
support at the kind of level that would make it genuinely useful due
to the high ongoing support costs that will spiral out of control
long before you ever reach that point. And _that_ is the foundation
of my argument for abandoning PackMan and starting over again. (So
please don't haul out the old "minor technical glitches" canard
again, because it'll only annoying me... and Hulk Smash when he get
angry, which won't do any of us any favours.)
So if you want to refute my argument as an unmigitated load of old
codswallop then you're going to have to explain how the logistics of
creating, expanding and maintaining a centrally managed package
database can be justified, and how they're not going to cause the
entire system to slowly suffocate under its own weight. (Because, you
know, that whole central planning and control thing really didn't pan
out too well for the old USSR or People's Republic of China.) And how
it's going to be more cost-effective than cutting a deal with
something like PyPI that already has a robust and sustainable - not
to mention well established and quite successful - model for doing
this sort of thing. (Decentralisation rocks. Cooperation rocks.)
Because as the whole history of software development shows, a
50%-good practical solution that addresses 90% of the common need
will beat out a 100%-perfect ivory tower one that obsesses over a few
% of corner cases to the neglect of everything else.
I realise a lot of programmers get a bit funny about throwing out
"working" software, but that's just something y'all need to get over.
e.g. See the arts and sciences which, being rather older and wiser
than software dev, have no such hangups about letting go and moving
on. Time to cast aside your inner albatrosses, yes?
>>>I think your effort would be better spent filing bugs, feature
>>>requests, and PEPs for what we have. It's definitely not as
>>>fundamentally flawed as you make it out to be. If you really do
>>>believe it's broken beyond repair, then feel free to start
>>>developing an alternative.
>>
>>You've told me this already, and I've done exactly that. And I've
>>asked for feedback on what I've done and whether it would be
>>suitable for inclusion in the standard distribution, and I'm
>>_still_ waiting for a response.
>
>Ok, here's some feedback.
Thank you. And I say that with 100% absolute sincerity. Just what the
doctor ordered.
>I downloaded PyMod and the following things happen:
>- It launches with a window that says "Path" and has some buttons.
>If it worked, I wouldn't really know what to do with it. Path to
>what?
Path to the setup.py script of the distutils package to build or
install. Or to a .zip or .tar.gz archive assumed to be a compressed
package. (Note: I suspect I should cater to other compressed forms
too, e.g. .tar.bz2 or whatever it's called. Any easy way of doing
this, other than writing a different archive-decompression shell
script each time?)
FWIW, the tool tip and built-in help do explain what this field is
for. But you're quite right that the visible label is poor, so I'm
wide open to suggestions for a better name.
>- I can't focus the application because it's busy doing something.
>There is no indication of what this something is.
There's a few seconds' delay upon startup as it initialises itself. I
suspect the bottleneck is the following shell script:
find /usr -name python; find /usr -name pythonw
To use PyMod, the user must first specify the Python executable with
which to run distutils via the combo text field in the Preferences
dialog. For their convenience, a list of known python executables is
provided under the combo box's drop-down menu, so folks can usually
just pick the one they want without having to type the path from
scratch (though they can do that too if.
Given the length of the delay, the application should really do
something to indicate it's working rather than just frozen, e.g. drop
down a sheet with a barber-pole and "Looking for installed python
executables..." message.
Though see the next point for why this may cease to be an issue anyway...
>- Eventually it comes up with an error dialog that says "find:
>/usr/local/pgsql/data: Permission denied" twice, with a Quit button.
Looks like my genius shell script just blew up. I'm open to suggestions:
- Could a better 'python exe locator' be written?
- Or should I bundle one in the app, or just link dynamically to the
MacPython framework? Though if I did that, how then would users
indicate which Python installation they wanted to install into?
- Or I could hardcode a few 'reasonable guess' paths like
/usr/bin/python, /usr/local/bin/python, /usr/local/bin/pythonw (whose
presence I can easily check for at startup and eliminate invalid
paths from the list before showing it to the user). That'd be easy
enough to do, and might be an adequate compromise. (It'd also
eliminate the slow startup.)
- Or I could just leave it entirely to the user to key in the path(s)
they want. (Not very friendly, but about as simple and reliable as it
could get.)
>- After clicking Quit, which is the only thing I am allowed to do,
>it pops up another dialog titled "AppleScript Error" that says
>"NSReceiverEvaluationScriptError: 4(1)" with an Ok button.
Yeah, welcome to Cocoa Scripting. Worst. Error. Messages. EVER.
Scripters have been bollocking Apple over its cruddy incomprehensible
error messages since year dot, and they still haven't sorted it yet.
(This is one of the reasons I've been making appscript so anal about
checking event params, specifiers, etc. before dispatching them, btw;
better the premature faked-up error message you can grok than the
real one you can't.)
Anyway, it's noted now. Though I'll not worry too much about this one
right now, as it's probably just a knock-on effect from the other
bugs, so let's see if it clears up when those are fixed.
>- I cilck Ok, and it quits.
Yayy! SOMETHING worked! ("But it works just fine OMM!")
Anyway, this is what [third-party user] testing is for. Much
appreciated, and in return I've posted a modified version with the
funky 'python mis-finder' script disabled so you can [hopefully] try
the rest of it out:
http://freespace.virgin.net/hamish.sanderson/PyMod_for_Bob.sit
Let me know what other horrors you find. ;)
(BTW, delete any PyMod.plist preferences file before running, just to
get a clean shot at it.)
>So much for simple, general-purpose, reusable software eh?
When your v0.3 releases are all the very shining models of
perfection, I'll happily concede you that jibe... but NOT before. :p
Thanks,
has
--
http://freespace.virgin.net/hamish.sanderson/
More information about the Pythonmac-SIG
mailing list