[Zope3-dev] Re: Known working sets II [was: Eggification redux]
Tres Seaver
tseaver at palladion.com
Wed Sep 26 20:22:48 EDT 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Martijn Faassen wrote:
> Dieter Maurer wrote:
>> Martijn Faassen wrote at 2007-9-25 19:57 +0200:
>>> ...
>>> If you choose for flexibility first, people will need to think about
>>> versions all the time.
>> I follow Tres argumentation: somehow the Linux distributors
>> have this problem mostly solved:
>
> While I don't dispute we should look at package management systems, they
> don't have *our* problems exactly solved. I have 20 different buildouts
> installed, which may or may use the same pool of eggs, and may use
> different versions of the same package. I am the one who wants to have
> the final say in what versions of packages. I want to use. A linux
> distributor needs to have one working set of packages, instead.
>
>> Standard distributions come with a set of known working components
>> and quite weak dependancy declarations.
>>
>> When I install additional components, I will be told about
>> potential conflicts (based on the weak dependancies) and
>> asked what to do (install nevertheless, upgrade more things to
>> get dependancies right or abort).
>>
>> Usually, I do not have to worry about versions -- only
>> occationally (when I see conflict lists) or even more rarely,
>> when something breaks even though there has not been a conflict.
>
> A linux distribution, unless you're on debian unstable, has quite a
> strict control over what packages enter a common pool. They do not
> release a newer version of a library unless they know the software that
> depends on it either works or can be upgraded to it.
Anybody running against the Cheeseshop today is *more* on the bleeding
edge than a sysadmin whose production boxes are running 'sid': Debian
has cultural constraits, even for that distro, which are vastly more
restricted than the Wild West which is PyPI.
The only solution I can see is to create filtered subsets / mirrors of PyPI.
> We have a situation where we have developers, not maintainers, uploading
> new versions of packages. There will be no integrated testing done for
> all software built on all packages in the cheeseshop. Again, I can see
> similarities, but I don't believe linux distributions have *exactly* our
> problems solved. Our buildouts are used as development environments, not
> only deployment environments.
Even folks' doing pure development need more predictability than
"whatever happens to be au courant on the Cheeseshop", made worse by the
fact that *subsequent* installations may pick up projects /
distributions different than / incompatible with those which were in
effect when earlier packages were installed.
>> We currently made bad experiences with weak dependancies.
>>
>> I see several reasons for this:
>>
>> * not yet ready distributions (insufficiently tested,
>> alpha quality) have been uploaded to PyPI
>>
>> We are now aware that we must not do things like this
>
> Better diligence here would help. It would help me most as a framework
> developer developing the framework - I can upgrade to newer versions of
> my dependencies without so much stuff breaking.
Without a *huge* cultural change, I predict very low success in
persuading package authors to exercise more care in what they release to
the Cheeseshop. I further predict that efforts to manage this problem
by adding "pinned" dependencies to individual packages will make the
problem *worse*, rather than better.
>> * installation tools have prefered newer versions over
>> older ones, even when the newer versions were development/alpha
>> while the older ones have been stable
>>
>> The tools meanwhile have changed and stick preferably to
>> stable versions
>
> Sticking to stable versions helps, until a new stable version is
> released. Then all the old stuff suddenly starts using the *new* stable
> version, and probably break.
Exactly. Without some way to impose a "gatekeeper" role on the package
pool from which a given deployment draws, we can't have any
deterministic outcomes when installing packages.
>> * The installation tools work incrementally with dependancies
>> rather than based on a global dependancy graph.
>>
>> This is not yet changed.
>
>> Maybe, our bad experience are drastically reduced when the above
>> reasons are taken care of -- even with weak dependancies?
>
> I used to believe that, but after seeing Grok 0.10 break once or twice
> *every* week for the last month, I don't believe it anymore. We're
> talking about the same release, breaking over and over again as
> something goes wrong with some egg somewhere. I want these dependencies
> pinned down hard. That said, I believe there are ways to solve these
> problems without hardcoding them in install_requires. I hope we can have
> the benefits of weak dependencies while having the safetly of hardcoded
> ones. See here:
I think that replacing 'index_url' with a "gated community" of packages
is the only path to sanity here: the contract of the Cheeseshop (share
new releases of all packages with everyone ASAP") is incompatible with
our goals ("ensure that users can install a given package and its
dependencies, and have them work").
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD4DBQFG+vfY+gerLs4ltQ4RAgS0AJ9B+q0BibgbK7EZ5LyutI0l0UyTDQCVFKMg
7cBORRpQtq4Nc1YbT9yoYg==
=ROuj
-----END PGP SIGNATURE-----
More information about the Zope3-dev
mailing list