Honestly I don't hate the language itself that much (I'm just learning it though so who knows) but developing with it fucking sucks. First npm installs a thousand dependencies, then you have to use it to install an entirely different package manager (yarn) and hope it works.

If you're using npm, you install a package or two that you're working with and get 10+ vulnerabilities. It tells you to run "npm audit fix" so you do it, but it just lists the vulnerabilities again and tells you to run "npm audit fix", so apparently you're just stuck with those.

Then you try running your react app and it crashes with an error about failing to stat a random file in your home directory. It turns out that you mistyped an import, and instead of giving an error about that it recursively backs up and checks every single file to see if it's the one it's looking for. Cool.

  • crime [she/her, any]
    ·
    3 years ago

    I'm an ops engineer so I spend a lot of time fighting with package managers for languages I dont necessarily work with day-to-day

    Ruby's is the gold standard. I love bundler. I'll bitch about some of the weird edge cases from time to time but that's mostly just around behavior changes in version upgrades and it's fine. I wish every package management ecosystem was like Bundler.

    NPM stresses me out, specifically with Yarn. Why are there six copies of my dependency installed, all with different versions? Who decided this was better than having standards around better version constrains for sub-dependencies?

    Python is absolutely terrible. If you need one package as a one-off then fine, pip works ok. But its lock file system fucking sucks. Why do I need a virtual env all the sudden, just let me specify the path where my packages are. The current attempt to improve it, poety, is a step in the right direction. But the underlying ecosystem is so fucked that any time you want to upgrade or install a single package it takes like five minutes to run.

    It's been awhile but last time I worked with Go it was pretty painful too.

    Maven is ok. Opening an XML file makes me feel like I just time travelled and like anything in the Java ecosystem, the CLI is inscrutable, but it's not that bad.

    I've heard good things about rust/cargo but I haven't done more than installing a package or two as a one-off so I can't speak to it more than that.

    • SolidaritySplodarity [they/them]
      ·
      3 years ago

      Cargo is the very best imo. Painless experience, batteries included for everything.

      poetry is the best thing to happen to Python since list comprehensions.

      imo npm assumes that its package developers don't know what they're doing and they'd usually be correct in this.

      My experience with bundler has been mixed because I have ran into pulled package version issues crazy often. Maybe I'm just unlucky. Not really bundler's fault unless this is a systemic issue among Ruby packages.

      Go's Dev team is insufferable and this is why they simply didn't have a package manager, not really. And now that they're starting to build the features of one, it's all about how dependencies breaking is good because it puts pressure on upstream to fix them.

      Maven works when it works and does nothing for you when something breaks. It's up to you, Java dev, to go resolve incompatible dependencies manually.

      • crime [she/her, any]
        ·
        3 years ago

        My experience with bundler has been mixed because I have ran into pulled package version issues crazy often. Maybe I’m just unlucky. Not really bundler’s fault unless this is a systemic issue among Ruby packages.

        Huh, Ruby's my day-to-day and I haven't run into that much in years. Maybe just bad luck for you then, or things have improved substantially with the ecosystem recently

        And yeah poetry has been head and shoulders above any other python package management, especially since it's for venv-management rolled in. There's a couple crucial missing features still, especially around authenticating to private registries, but I think that's a pip problem at its core — mostly it suffers from having to use pip under the hood.

        Lmao about the Go devs, you're absolutely right on the money with that one

      • ComradeBongwater [he/him]
        ·
        3 years ago

        Cargo has been the best in my experience too...about as painless as deps can be imo.

        If what you say about poetry is true, I'll definitely have to look into it asap.

        Never used bundler or Ruby, and I've never been sure about what the appeal of Ruby is, so if dependency management is more painless than most languages, I'd understand immediately.

        I've never had a more frustrating dependency experience than with maven. Using XML and being tied to Java are more than enough to guarantee I never touch it again unless absolutely necessary.

      • crime [she/her, any]
        ·
        3 years ago

        Yeah, I've been using it for six or seven years at this point and even for all the stuff i like to grumble about it's far and away my favorite language I've worked with — the syntax definitely aligns most closely with how I think about code, nothing else really stuck the way that it has for me.

        I haven't had too hard a time finding places that use it, rails is still pretty well-used and getting better with every release, and there's plenty of places that use chef on the ops side of things too. Still every time I see a listing for jobs I'd otherwise like but that use python/django it hurts my soul a little since python is imo pretty similar to Ruby except everything is a little bit worse lol