[Distutils] PyPI is a sick sick hoarder

Robert Collins robertc at robertcollins.net
Sat May 16 03:52:51 CEST 2015


On 16 May 2015 at 13:45, Donald Stufft <donald at stufft.io> wrote:
>
>> On May 15, 2015, at 9:22 PM, Robert Collins <robertc at robertcollins.net> wrote:
>>
>> On 16 May 2015 at 11:08, Marcus Smith <qwcode at gmail.com> wrote:
>>> Why not start with pip at least being a "simple" fail-on-conflict resolver
>>> (vs the "1st found wins" resolver it is now)...
>>>
>>> You'd "backtrack" for the sake of re-walking when new constraints are found,
>>> but not for the purpose of solving conflicts.
>>>
>>> I know you're motivated to solve Openstack build issues, but many of the
>>> issues I've seen in the pip tracker, I think would be solved without the
>>> backtracking resolver you're trying to build.
>>
>> Well, I'm scratching the itch I have. If its too hard to get something
>> decent, sure I might back off in my goals, but I see no point aiming
>> for something less than all the other language specific packaging
>> systems out there have.
>
>
> So what makes the other language specific packaging systems different? As far
> as I know all of them have complete archives (e.g. they are like PyPI where they
> have a lot of versions, not like Linux Distros). What can we learn from how they
> solved this?

NB; I have by no means finished low hanging heuristics and space
trimming stuff :). I have some simple things in mind and am sure I'll
end up with something 'good enough' for day to day use. The thing I'm
worried about is the long term health of the approach.

Good questions. Some of it is structural I suspect. A quick rundown.
cabal (haskell) has a backtracking solver that accepts various
parameters to tell it to try harder.
javascript effectively vendors every dep ever, so you end up with many
copies of the same library at different versions in the same process.
rust's cargo system currently solves everything in a single project
only - it has no binary packaging, only vendor-into-a-binary-build
packaging.
The gem behaviour I'm not yet familiar with.
perl I used to know but time has eroded it :/.

-Rob

-- 
Robert Collins <rbtcollins at hp.com>
Distinguished Technologist
HP Converged Cloud


More information about the Distutils-SIG mailing list