Hunting for Gems: How Ruby's package management system evolved
railsexplained.com
Hunting for Gems: How Ruby's package management system evolved
1–10 of 22 posts
Re: Hunting for Gems: How Ruby's package management system evolved
#2Re: Hunting for Gems: How Ruby's package management system evolved
#3Specifically, bundler allows side-by-side version installs and the program simply loads the version specified in the bundle.lock thus making the lock file the source of truth where as npm, pip, even poetry install whatever version exists at the path. This pushes the source of truth from the .lock to that path.
It's not the end of the world, but when you're testing library versions side-by-side you can easily get confused whether you remembered to run `install` between the switches.
Re: Hunting for Gems: How Ruby's package management system evolved
#4FWIW, I LOVE bundler and it absolutely kills me that npm, pip still haven't settled well in to the management of it. Specifically, bundler allows side-by-side version installs and the program simply loads the version specified in the bundle.lock thus making the lock file the source of truth where as npm, pip, even poetry install whatever version exists at the path. This pushes the source of truth from the .lock to th…
It also doesn’t understand how to get packages from a git source.
From a release engineering perspective, this drives me batty.
Re: Hunting for Gems: How Ruby's package management system evolved
#5FWIW, I LOVE bundler and it absolutely kills me that npm, pip still haven't settled well in to the management of it. Specifically, bundler allows side-by-side version installs and the program simply loads the version specified in the bundle.lock thus making the lock file the source of truth where as npm, pip, even poetry install whatever version exists at the path. This pushes the source of truth from the .lock to th…
It’s even worse when npm install modifies the package lock file. It also doesn’t understand how to get packages from a git source. From a release engineering perspective, this drives me batty.
Not sure what you mean.
Re: Hunting for Gems: How Ruby's package management system evolved
#6Earlier quoted context omitted.
It’s even worse when npm install modifies the package lock file. It also doesn’t understand how to get packages from a git source. From a release engineering perspective, this drives me batty.
> It also doesn’t understand how to get packages from a git source. Not sure what you mean. https://bundler.io/guides/git.html
Re: Hunting for Gems: How Ruby's package management system evolved
#7FWIW, I LOVE bundler and it absolutely kills me that npm, pip still haven't settled well in to the management of it. Specifically, bundler allows side-by-side version installs and the program simply loads the version specified in the bundle.lock thus making the lock file the source of truth where as npm, pip, even poetry install whatever version exists at the path. This pushes the source of truth from the .lock to th…
It’s even worse when npm install modifies the package lock file. It also doesn’t understand how to get packages from a git source. From a release engineering perspective, this drives me batty.
Re: Hunting for Gems: How Ruby's package management system evolved
#8FWIW, I LOVE bundler and it absolutely kills me that npm, pip still haven't settled well in to the management of it. Specifically, bundler allows side-by-side version installs and the program simply loads the version specified in the bundle.lock thus making the lock file the source of truth where as npm, pip, even poetry install whatever version exists at the path. This pushes the source of truth from the .lock to th…
It’s even worse when npm install modifies the package lock file. It also doesn’t understand how to get packages from a git source. From a release engineering perspective, this drives me batty.
It makes the pretty heavy assumption that a developer will always be able to bugfix the version differences.
Re: Hunting for Gems: How Ruby's package management system evolved
#9Earlier quoted context omitted.
It’s even worse when npm install modifies the package lock file. It also doesn’t understand how to get packages from a git source. From a release engineering perspective, this drives me batty.
i’ve said before that it’s like the npm people have made the worst possible design choice whenever asked for a decision. it’s insane how bad it is compared to bundler or comparable package management tools.
In the npm-style dependency managers, generally speaking, you don’t really get dependency conflicts unless it’s a large overarching peer dependency or something like global singleton e.g. a GPU driver. Regardless of your thoughts on npm or having a massive number of tiny dependencies, you can’t deny npm dragged the dependency management field into the 21st century and forced it to scale.
Re: Hunting for Gems: How Ruby's package management system evolved
#10FWIW, I LOVE bundler and it absolutely kills me that npm, pip still haven't settled well in to the management of it. Specifically, bundler allows side-by-side version installs and the program simply loads the version specified in the bundle.lock thus making the lock file the source of truth where as npm, pip, even poetry install whatever version exists at the path. This pushes the source of truth from the .lock to th…
I'm surprised Python hasn't caught up to that. At best you can use Anaconda, but in order to have multiple versions of the same library, you end up having to create a new environment, which is another Python installation.
There are currently some nasty dependency issues caused by 3.11->3.12 breaking back compatibility in the standard library around the build system, alongside Numpy just kinda deciding semver doesn't matter between 1.20 and 2.0, that breaking changes don't warrant a major version bump if they tagged a deprecation warning on it. You just have to know their version scheme isn't really semver when pinning versions, which is lame of them, because ignoring that expectation has caused so many downstream breakages in the last couple of years.
So much could be solved if you could just say "this version of this package" in a dependency and not have to worry about compatibility on a completely different package