• key@lemmy.keychat.org
    link
    fedilink
    English
    arrow-up
    30
    arrow-down
    2
    ·
    8 months ago

    Node packaging is fucked. Node packaging remains fucked. And we have fucked it. How shall we comfort ourselves, the makers of all unmaintainable spaghetti? What was webscale and most utilitarian of all that the computers have yet executed has ground to a halt under our keyboards: who will wipe this blood off us?

    • FrameXX@discuss.tchncs.de
      link
      fedilink
      arrow-up
      6
      ·
      8 months ago

      Node packaging is fucked. Node packaging remains fucked.

      I am sorry, but as a noobie user of npm I don’t understand. It works pretty well for me if you use it normally for what it is supposed for.

      • dependencyinjection@discuss.tchncs.de
        link
        fedilink
        arrow-up
        5
        arrow-down
        1
        ·
        8 months ago

        If used in larger systems it can be a pain to maintain code bases as you could install an innocuous package but that package may depend on 100 other packages which in turn could have other dependencies and it cascades.

        This can introduce bugs into your code which can be a pain to resolve.

        • FrameXX@discuss.tchncs.de
          link
          fedilink
          arrow-up
          5
          ·
          edit-2
          8 months ago

          Isn’t this a problem with every package/library system? Is there really a solution to this that doesn’t limit packages with how they handle their dependencies?

          This may also be about trust. npm probably could limit a number of dependencies that a single package can have with an arbitrary limit, but they don’t do that, because they trust the developers they won’t misuse their options. Well…

          • dependencyinjection@discuss.tchncs.de
            link
            fedilink
            arrow-up
            2
            arrow-down
            1
            ·
            8 months ago

            Thats a good question and I’m not sure to be honest.

            We use NPM at work client side for React Typescript and Nuget server side for C# .net and all I know is the senior always complains about NPM but not NuGet I do believe the backend is less package reliant on our applications so maybe that’s why it’s not as bad.

    • UnculturedSwine@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      8 months ago

      I’m curious if you mean this one issue talked about in the article is the only reason why node packaging is “fucked” or do you have any citations you can provide that point out other issues with it?

      I feel this is just a natural progression of how the developers wanted it to function and this is an opportunity to resolve it.

      Better that this is done by mistake and resolved than it being used in a malicious attack.

      • dependencyinjection@discuss.tchncs.de
        link
        fedilink
        arrow-up
        3
        arrow-down
        1
        ·
        8 months ago

        It’s the cascading nature of the dependencies. You could install a single package that might directly or indirectly depend on 100’s of other packages, which can introduce bugs into existing code bases which can be difficult to fix as you have no control over another library or dependency.

  • originalucifer@moist.catsweat.com
    link
    fedilink
    arrow-up
    18
    ·
    edit-2
    8 months ago

    We’ve since realized there is an issue with “star” versions - a.k.a depending on any/all versions of another package ( “package-xyz”: “*” ) - any version of that package is now unable to unpublish.

    kinda reminds me of the ‘reply all’ snafu that microsoft caused themselves with early exchange server, the complete system failures, and the subsequent attempts at controlling that feature

  • RonSijm@programming.dev
    link
    fedilink
    arrow-up
    16
    ·
    8 months ago

    This situation is due to npm’s policy shift following the infamous “left-pad” incident in 2016, where a popular package left-pad was removed, grinding development to a halt across much of the developer world. In response, npm tightened its rules around unpublishing, specifically preventing the unpublishing of any package that is used by another package.

    This already seems like a pretty strange approach, and takes away agency from package maintainers. What if you accidentally published something you want to remove…? It kind of turns npm into a very centralized system.

    If they don’t want to allow hard-removals because of this, why not let people unpublish packages into a soft/hidden state instead? Maybe mark them with the current dependencies, but don’t allow new ones - or something

    I prefer the approach of Azure DevOps more. When you publish any nuget, or npm into their system, the entire package dependency tree is pulled in and backed up there. So you don’t rely on NPM anymore to keep your referenced packages safe

    • Flipper@feddit.de
      link
      fedilink
      arrow-up
      3
      ·
      8 months ago

      Cargo.rs also has no option to unpublish a package. There is however the option to yank a package which disables the inclusion in new projects by the automated dependency resolution. If the version is entered manually it will still be used.

    • UnculturedSwine@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      8 months ago

      I feel like you could also give the maintainers the power to “re-publish” using a different verified maintainer so that if such a thing does happen, it can be reversed without input from the maintainer that originally pulled it. I don’t know enough about the system to really know if this is a good idea tho.

      • locuester@lemmy.zip
        link
        fedilink
        English
        arrow-up
        7
        ·
        8 months ago

        Yeah then you’ve got security problems. If a maintainer pulls a package, you wouldn’t want some rando able to push a new one in its place.

    • jeffhykin@lemm.ee
      link
      fedilink
      arrow-up
      6
      ·
      edit-2
      8 months ago

      Ryan Dhal, the creator of node, litterally saw the npm problem(s) before incidents like this happened, and created Deno to fix his mistakes. And fix them he did! The Deno import system is incredible. Its basically the only reason I use deno. You can just import URLs directly, the deno vendors (aka caches) them. Deno has an equivlent to npm.org (Deno.land/x) but anyone can import straight from github, or make their npm.org equivlent, or import from their own private server. So if a company wants reliability, they can mirror deno.land while also avoiding unpublishing.

      • QuazarOmega@lemy.lol
        link
        fedilink
        arrow-up
        2
        ·
        8 months ago

        Yes, that’s really nice! Even though I haven’t touched it in a long time, I remember messing around with it out as soon as it came out a few years ago. There’s also nest.land between the alternative repositories, I find their concept interesting

    • azertyfun@sh.itjust.works
      link
      fedilink
      arrow-up
      1
      ·
      8 months ago
      1. Like Python, have a large and featureful standard library such that > 80% of NPM packages are redundant. Other languages allow you to make very large projects with only a few tens of dependencies. JavaScript requires THOUSANDS.
      2. With this in place, stop with the recursive dependencies, immediately and forever. Every other package manager under the sun installs the dependencies next to each other.

      I’d say pip is saner, though not by much as its support for private registries is very bad and seems designed to facilitate supply-chain attacks. I’ve heard a lot of good things about cargo but haven’t used it enough myself to have a strong opinion.

  • rekabis@lemmy.ca
    link
    fedilink
    arrow-up
    7
    ·
    edit-2
    8 months ago

    I see this as a delightful and very apropos revenge against how they treated Azer Koçulu for his use of kik as a package name, and how they tore it out of his hands simply because he wasn’t some million-dollar corp with an army of vampire lawyers.

    Any truly fair system would have a “you used it legitimately first, you can have it” system.

    You want to centralize control, and kick small devs in the teeth? Enjoy the fallout, f**kers.

  • Big P@feddit.uk
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    5
    ·
    8 months ago

    Any site that uses AI generated images for the thumbnail can fuck off, I’d rather see nothing

    • expr@programming.dev
      link
      fedilink
      arrow-up
      5
      ·
      8 months ago

      It’s less of an issue of reviewing all packages than it is that this causes DOS in the first place. It’s pretty damn stupid that you can’t unpublish packages others depend on, and the whole recursive dependencies thing makes the situation a lot worse than it otherwise would be. Neither of these are issues with other package registries.

    • zygo_histo_morpheus@programming.dev
      link
      fedilink
      arrow-up
      4
      ·
      8 months ago

      One problem that’s particular to node is that you can’t unpublish packages if another package depends on them. As it says in the article, that means that no one can unpublish their packages, including the everyone package since someone apparently depends on that.