Hacker News new | ask | show | jobs
by nigelk 4838 days ago
We very much encourage people to use the package repositories we host:

http://docs.puppetlabs.com/guides/puppetlabs_package_reposit...

Are you suggesting we should drop gem support entirely andyl?

2 comments

Gems are the most confusing thing to new Ruby users.

Example that most people on HN will likely get, but most people in real life will ask you why? They have a point you should pay attention to.

If you read most ruby books you'll get one of two patterns.

1. Install brew 2. Install libyaml in brew 3. Install rvm 4. Install ruby in rvm linked to libyaml 5. gem install x and if you need y... just get another gem that supports it.

One of the core problems I've seen is most people do not grasp that a 'gem' is a package. After looking over some of the gems published to Rubygems they quickly realize the quality differs and they are at their own mercy.

Now ask yourself, why would anyone who wants their product to be (useful|used) condone this?

Basically it's a slippery slope, I understand both sides of the coin and I don't know what to say shrug

I'll be perfectly honest, as a Debian user/admin, I've never really saw the point of Gems. They just seem like Yet Another NIH unnecessary package format.
This is the classic operating-system package management/programming-language library packaging dichotomy. You see the same conflict of philosophies with Perl and CPAN packages versus Red Hat / CentOS .rpms of the same package.

Sysadmins frequently seem to like the operating-system approach. Developers frequently seem to like the programming-language approach.

I think this is because most developers haven't (yet) been paged at 3 AM to discover that everything is fucked because a handful of critical servers somehow still have bugs in libraries that were already fixed. I'm a developer and I think language-specific package ghettos are a pretty crazy way to handle deployment to production. Any dependency I can't express in the same way as all the others (namely my platform's one and only package manager) is a ticking bomb.
So on the latest version of Ubuntu (12.10), if I run "apt-get install rails" I get Rails 2.3. That was originally released over 4 years ago. There have been (nearly) 4 major releases since then. How do you work around that, or do you not?
One way to work around that is to host an internal apt/yum/etc repository and put whatever you need into a package there.
More honesty, my original composition was a bit more inflammatory, but I do (sort of) understand where the urge to package comes from. I've been someone who's pulled things quickly together, whether it be through CPAN or the incredibly convoluted checkout-build scripts of ROS (http://ros.org), and yes, very often I will clone and build things from GitHub, cause dangit, it's not packaged yet.

But I've come also from the dependency hell that was GNOME on RedHat over a decade ago, and I just love the fact that I can almost always type "apt-get install $name_of_new_toy" and be playing with it in under five minutes, all without having to worry about breaking other packages or strewing files god-knows-where, or having multiple, redundant, possibly bug and security hole ridden copies of dependencies, and knowing that I can deploy it instantly on my web server. Windows and OSX also don't figure very much into my worldview, so I don't really care much that they need bolted on package managers to fix their brokenness.

brokenness

Seriously, why even bother posting? Your view and your original question is totally worthless as it turns out you're an OS-bigot. We work in a world of logic peppered by pockets of irrational fan-boys. Is it fear of the unknown that drives you to such extreme statements?

You would do much better if you just reviled them all equally as I do. Windows is shit. Macs are shit. Linux is shit. All programming languages are shit. Though I profess a special hatred for javaschipt. That's built its own little corner of hell. Computers are items of vast wasted potential covered in liberal amounts of poorly implemented shit.

And the best we can do for the next 50 years is mine it and clear it gradually away as we uncover the occasional nugget of gold in festering piles of, well, you know what.

I mostly agree, except for the ability to install multiple versions of the same gem or package at the same time.
RubyGems works cross-platform?
Things like nix do too. Even apt-get used to work on MacOSX (fink).
As long as you're on a *nix, yes. RubyGems works cross-platform, not just cross-POSIX.
nigelk - yes, it think using Package Repos exclusively would be a win for Puppet. Fewer install options to confuse new users, simpler support model for your developers.

BTW I do use your repositories. For me, they have proven to be more reliable than the Gem install.

One of the things I like about Vagrant's installer is that he packages an embedded ruby version and installs it at /opt/vagrant/embedded. Vagrant plugins are installed at /opt/vagrant/embedded/gems. (using 'vagrant gem') This is sweet, because the whole Vagrant environment is isolated from the rest of the system.

By contrast, the Puppet installer depends on a system ruby. It puts ruby 1.8.7 on my path, which I don't want. Then I've got to take special effort not to use it or corrupt it. Yukk.

So if I were King - Puppet would use Package Repos exclusively, and depend on its own isolated/embedded Ruby.

Thanks for the feedback andyl.

We're thinking very much about the direction of embedding all dependencies, but we're also conscious of the needs of the Linux distros, who don't package software that way.

There is a downside to having all your apps embed their dependencies. It becomes significantly more complicated to update libraries in response to vulnerabilities and bugs.

I've never seen an apt package that embeds ruby like Vagrant does.

But - it works! (my dev platform is Ubuntu 12.04)

Perhaps you don't need to embed all dependencies - just Ruby.

Good luck in thinking this thru!