[Pythonmac-SIG] PackageManager / Python 2.3.x - 2.4 ideas
Jack Jansen
Jack.Jansen at cwi.nl
Thu Jul 31 01:25:59 EDT 2003
First a comment: initially I thought that doing a PEP on the client
side of
PackMan would be good enough, but now that I have had the experience of
doing a
database three times, with months in between, I think that the scapegoat
side is important too. We also need to come up with tools or procedures
that make it easier for multiple people being responsible for a single
database,
and also for a single person to keep information that is going to be
helpful
the next time the database is updated.
Scapegoat-side could be integrated into distutils. One day I think this
is
a very good idea, the next day I think it is a very bad idea. I will
ponder
on this, and I would like input.
On woensdag, jul 30, 2003, at 23:01 Europe/Amsterdam, Bob Ippolito
wrote:
> These are some ideas for future versions of Package Manager and
> friends...
>
> Should remove shell executable dependencies because python does these
> tar
> unzip
> zip
> curl
> (not sure if it uses there or not)
> rm
> mv
Definitely.
> Should leverage metadata from PyPI in some way
This is scapegoat-side. If we go for a distutils-based solution we get
it automatically,
as distutils has support for the PyPI metadata (I think?).
> Should read proxy settings from OS X rather than using environment
> variables.. allow a user override, store this as a preference
Not a PackMan problem, this is a urllib problem. There's a bug filed
already.
> Should allow user to override 'scratch area', they might not always
> have space in /tmp .. store this as a preference
Definitely. Especially for people doing source installs you want to
keep things around.
>
> We should write a cross-platform "preferences" module for python that:
> Uses the registry in win32 to determine a folders for global/user
> plists, and then uses that :)
> Uses ~/Library/Preferences/plists and /Library/Preferences/plists in
> OS X
> Uses somewhere/plists for global settings on unix and
> ~/.dotfolder/plists in UNIX
While I agree we need it I think it isn't a PackMan problem. There are
numerous
other packages that want this (bgen, for instance). This could be the
subject of a
separate PEP.
> Not have separate plist files for each distutils.util.get_platform()
> -- this is only semi-useful for binary OS X packages, and not useful
> at all for other operating systems.
This one I disagree with, and I disagree with it strongly. The central
philosophy of PackMan
is accountability (in other words: the scapegoat). We may need to
structure things differently, with major/minor OS release in the
filename and within the database entries a list of micro releases that
are known to work, but we definitely need the functionality.
Binary packages are the reason for PackMan's existence, source releases
are a service to the developer community. They already have PyPI.
> Have a cryptographically authenticated way of determining the
> authenticity of 'stuff'. [...]
This is serious reading, I will come back to this later.
> Keep receipts for installed packages, even if we don't write an
> uninstaller.
Parts are already in place, but they don't get written out to disk. It
turned out to be a harder problem than I thought. But I agree we need
to do something about this.
> Keep track of dependency versions.. for example, FooBar 2.0 might
> require a minimum BarBaz of 1.0 and is tested compatible up to BarBaz
> 1.5. BarBaz might release a wonderful 1.6 version that breaks some
> behavior that FooBar 2.0 or whatever other packages depended on.
> Upgrading to BarBaz 1.6 should warn the user that "FooBar 2.0 and
> SuperAlice 1.5 are dependent on BarBaz 1.0-1.5, but are not tested to
> work with BarBaz 1.6. This upgrade may require upgrades to these
> dependencies". Dependency graphs are a lot of fun, but we're all good
> programmers here and we can't be lazy all the time.
This should all be in there already. You can depend on a package, a
specific version of a package, or even a specific flavor
(pil-1.1.4-source).
> Package Manager should be able to install distutils-based setup.py
> source distributions that a user has on his harddrive or at any
> arbitrary URL (i.e. not in the plist) either by dragging the tgz/zip
> to PackageManager, picking a folder with a setup.py in it, or picking
> a setup.py.
Definitely. And similarly for bdist_dumb distributions. And it needs a
"recipy" file format, so system administrators can standardise large
numbers of machines in one fell swoop. We can
even automate this for them: have a tool that takes a PackMan recipe
and a Python distribution, and what comes out is a .mpkg that first
installs Python and then feeds the recipe to PackMan.
> Package Manager should be organized categorically, like PyPI. (i.e.
> they should be heavily integrated).
Yes, I think we do, indeed. On the other hand I want the database to
remain manageable in size, both for the user and for the maintainer.
The PyPI database has already become unmanageable:-)
> We should test upgrades to Package Manager :)
Definitely.
> All of Package Manager's functionality should really be in platform
> independent "designed" modules (meaning they don't have to support
> other platforms yet, just designed with that intent).
It's all there. Untested, but it's there.
> Package Manager should be a responsive application, either by using
> nonblocking methods to speak with spawned processes. Threading sucks
> in python, let's not try and use it too much.
I agree with the responsive bit, not with the threading bit. I think
switching to MVC should make threading a lot easier. Only the log
remains a problem (but not a very big one, on unix).
> Speaking more with regard to separating the model and view of Package
> Manager, we should think about making the Package Manager GUI speak
> with Package Manager over sockets.. imagine managing python
> installations for everyone on your LAN (that trusts you by SSH, or
> whatever).
I'm not sure we need to go this far, see above.
--
- Jack Jansen <Jack.Jansen at oratrix.com>
http://www.cwi.nl/~jack -
- If I can't dance I don't want to be part of your revolution -- Emma
Goldman -
More information about the Pythonmac-SIG
mailing list