Steps to reproduce:

  1. Start a Node project that uses at least five direct dependencies.
  2. Leave it alone for three months.
  3. Come back and try to install it.

Something in the dependency tree will yell at you that it is deprecated or discontinued. That thing will not be one of your direct dependencies.

NPM will tell you that you have at least one security vulnerability. At least one of the vulnerabilities will be impossible to trigger in your particular application. At least one of the vulnerabilities will not be able to be fixed by updating the versions of your dependencies.

(I am sure I exaggerate, but not by much!)

Why is it like this? How many hours per week does this running-to-stay-in-place cost the average Node project? How many hours per week of developer time is the minimum viable Node project actually supposed to have available?

  • peereboominc@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    I wonder if it has something to do with the framework you pick. There are probably frameworks that aim to be as stable as possible but lack the cutting edge.

  • LaSaucisseMasquee@jlai.lu
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year ago

    If you set the versions of your dependencies in the package.json file, you’ll reinstall exactly the same ones.

    You may get new vulnerability warnings popping up, but what is the issue here ? You’d rather not be aware that a vulnerability has been found since your last development ?

    If you are not happy with others modules, dev your own and no one will let you know about security issues 😝

    • heeplr@feddit.de
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      You’d rather not be aware that a vulnerability has been found since your last development ?

      I’d rather develop with dependencies that don’t have so many vulnerabilities.

        • heeplr@feddit.de
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          If you mean web development, you’re right.

          If you mean computer science, then I’d say that webdevs have little in common with the industry that came up with stuff like ADA or functional correctness.

        • heeplr@feddit.de
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          1 year ago

          That’s why people came up with defensive programming and functional correctness.

          Just seems to be difficult for the webdev industry. Seems easier to push fixes from time to time.

  • heeplr@feddit.de
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    It’s a job machine. Maintenance is easier than improving code quality or adding features.

  • lysdexic@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    Something in the dependency tree will yell at you that it is deprecated or discontinued.

    Only if you didn’t pinned the dependencies you actually consume, and expect that all your dependencies magically comply with semver.

    Blindly replacing dependency versions never worked, at least reliably. If you do not put in the work to ensure things work, more often than not you’ll be surprised by them not working.

      • lysdexic@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        Then you’ll end up with tons of vulnerabilities within days.

        You only end up with vulnerabilities if you refuse to update your dependencies. Updating a dependency is something you need to do yourself, along with running build validation tests after a successful update. Just because npm can download newer packages that does not mean those packages are good.

        • AggressivelyPassive@feddit.de
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          …which is the opposite of the comment above.

          So, you still have to go through all the dependencies, vulnerabilities and incompatibilities. Yes, you can now kind of control the timing, but it’s still unacceptable in my opinion, that you have to spend so much time just to not be an active danger to everyone.

          NPM is completely alone in that regard. Maven, Pypi, etc. don’t have these problems.