• FlorianSimon@sh.itjust.works
    link
    fedilink
    arrow-up
    8
    ·
    10 months ago

    Pip is definitely not saner. The way installs are centralized has bitten me in the ass multiple times, when I wanted to have two different versions of Conan installed on a single machine.

    And I know there are workarounds like virtualenvs, but they’re complex hacks. Stockholm syndrome yadda yadda yadda.

    If it was sane, downloads would be centralized (no point in downloading the same package over and over again) but installs would be project-local (symlinks? There are multiple ways to do this, cf Conan)

    Sure, NPM is wasteful with storage space but I’ll take inefficient over brittle any day.

    • azertyfun@sh.itjust.works
      link
      fedilink
      arrow-up
      5
      arrow-down
      1
      ·
      10 months ago

      It’s saner, not perfect. With virtualenvs it does basically what you describe except that it re-downloads everything for every virtualenv, but that does not typically matter much since it’s not downloading a billion dependencies.

      With NPM there’s no choice but to have hundreds of duplicates installed for every project, that’s not just inefficient but it is a security, maintainability, and auditability nightmare.

      • FlorianSimon@sh.itjust.works
        link
        fedilink
        arrow-up
        4
        ·
        edit-2
        10 months ago

        NPM is definitely saner for that use case because it works out of the box. Pip is not because it is based on shakier foundations. With NPM, you don’t get to a point where you rely on things to work correctly, and they suddenly don’t and you have trouble understanding why. And it does not force me to look at its nuts and bolts to allow me to work with it.

        I can afford big node_modules directories, even if it’s not optimal. It’s still small compared to the cruft I’ve accumulated on other projects I’ve worked on with other technologies. Remember the order of priority of things: make it work >> make it efficient. Software engineering is about delivering software, it’s not an art. It doesn’t have to be pretty everywhere.

        I will concede that NPM is not perfect. Despite its flaws, I love how Conan solves the issue we’re talking about.