Live data from Hacker News

RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

bountysource.com

31–40 of 60 posts

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#31

Earlier quoted context omitted.

And this is exactly the problem with all those "simpler" alternatives to RVM. They all claim to be simpler and doing less "unnecessary" stuff. And they are simpler, from a technical point of view. But unless you, the user, is very skilled at Unix and knows exactly how environment variables, shell sessions, bashrc etc works, it's going to be more confusing. RVM is more complicated because it does more, in order to mak…

> unless you [are] very skilled at Unix I don't understand this mentality. rbenv isn't advanced shell scripting by any means. Every working programmer should have the minimal unix skills required to read and understand rbenv in its entirety in one sitting. It should take no more than a week of concerted effort to learn your way around bash: You can read `man bash` linearly in an afternoon or two. For such a small pri…

> I don't understand this mentality. rbenv isn't advanced shell scripting by any means. Every working programmer should have the minimal unix skills required to read and understand rbenv in its entirety in one sitting.

I used to think that way too. It's so simple. Why don't people spend a little time to learn their tools? It's not that complicated!

Then, over the years, I realized that that's the wrong attitude. You shouldn't expect users to learn stuff no matter how much you think they should. They already have enough other stuff to worry about. They already have their hands full learning other stuff. And the reason why I thought it was easy, was because I already knew it. Expecting other people to go out of their way to learn the things you know is disrespecting their time.

Therefore, software should be easy to use for new users. Software should have a learning curve that's as low as possible. Software should not expect people to learn things that you think is important.

I am very firmly in the pro-usability camp, even for developer tools.

You said that rbenv isn't advanced shell scripting. You are right, it isn't - for us. However, that doesn't mean that it can be utterly confusing for a lot of people. The concept of environment variables are easy, until you get to the common edge cases. Did you know that environment variables are inherited on a per-process basis, so changing them in your shell does not affect already-running processes, and doesn't affect cron? Did you know adding environment variables to bashrc has no effect on cron, init scripts and the like? Lots and lots of people don't realize that. Do you want those people to give up in frustration? I'd say no. I'd say we should help those people with good documentation, and software that just works.

For example, at the Phusion Passenger mailing list, we regularly get questions from people asking why they get "command not found" errors. Apparently a lot of people don't understand what PATH is, or what environment variables are, or that sudo resets them. So we ended up writing this: http://www.modrails.com/documentation/Users%20guide%20Apache...

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#33

Earlier quoted context omitted.

> unless you [are] very skilled at Unix I don't understand this mentality. rbenv isn't advanced shell scripting by any means. Every working programmer should have the minimal unix skills required to read and understand rbenv in its entirety in one sitting. It should take no more than a week of concerted effort to learn your way around bash: You can read `man bash` linearly in an afternoon or two. For such a small pri…

> I don't understand this mentality. rbenv isn't advanced shell scripting by any means. Every working programmer should have the minimal unix skills required to read and understand rbenv in its entirety in one sitting. I used to think that way too. It's so simple. Why don't people spend a little time to learn their tools? It's not that complicated! Then, over the years, I realized that that's the wrong attitude. You…

> Expecting other people to go out of their way to learn the things you know is disrespecting their time.

That might be true if you are going to use the tool precisely once and then never again, but this is your system's shell we're talking about. You're disrespecting your own time if you don't learn how it works.

> You said that rbenv isn't advanced shell scripting. You are right, it isn't - for us.

You're conflating the objective and subjective notions of complexity and difficulty respectively. rbenv is objectively simple and subjectively either easy or hard depending on your shell scripting experience. However, rvm is objectively complex and subjectively easy or hard depending on your Ruby environment customization needs. Programmers should prefer objective simplicity and leveraged familiarity every single time.

A small initial investment in learning your shell is significantly more valuable than a large delayed investment in learning RVM.

> Did you know that environment variables [...]

Absolutely everything you mention is discussed in great detail in the bash man pages. And even "in great detail" means that the ENVIRONMENT section fits on my 13" screen vertically at 80 columns and the INVOCATION section (which I found by searching for "bashrc") is no more than two screenfuls. That's a 10 minute trade for a lifetime of saving 5 minutes a piece on Stack Overflow visits.

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#34

I would love to hear more about "leverage existing package management systems". I guess many people use rvm to install ruby and I always recommend newbies to try it out for that purpose. But recent criticisms of ruby made me wonder if that really is the right approach. Maybe it would be better to put more effort into creating top-notch packages for the major linux distros (and, say, homebrew). And to work with the di…

Creating proper platform-specific packages is a mad undertaking, requiring huge amounts of manpower to setup and to maintain. We provide native Phusion Passenger packages for 5 platforms (3 Ubuntu versions, 2 Debian versions, OS X Homebrew) and it's already crazy complicated. Check out the toolchain that we spent months on building: https://github.com/phusion/passenger_apt_automation https://github.com/phusion/passen…

Maybe that points to one source for the packages in many distros as the wrong way to go about it? You might be better off promoting a list of packages that repo maintainers (distro or secondary) could use to supply a well known set of ruby packages for a specific target. It's not like there's a shortage of people or institutions to do this if you make it easy for them.

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#35
post #9

How does one write a page like that, without even trying to explain, in a single sentence, what "RVM" is ? It surely wouldn't hurt? I assume that if you don't know (like me), you're not in the target audience of people willing to chip in to get the conversion done, but it still manages to frustrate me.

Thanks for the feedback, I’ve updated the fundraiser description, it was so obvious to me what RVM is, it should be now clear what RVM does.

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#37

Earlier quoted context omitted.

RVM shouldn't still be around because of its user-hostile behavior of modifying the user's dotfiles (.bashrc, etc.) on installation without warning or permission. This breaks other software in confusing ways. For example, I've had cases where after installing it, I could not view man pages for any programs because installing RVM modified broke my $MANPATH. In other cases, things that were failing for other reasons st…

> RVM shouldn't still be around because of its user-hostile behavior of modifying the user's dotfiles (.bashrc, etc.) on installation without warning or permission. RVM tells the user very clearly that it has modified the user's dotfiles. And how many people do not want to modify the dotfile? Which user thinks, "oooh, modifying dotfiles is so evil, I'll just type in this command every single time I open a terminal"?…

> Have they been fixed in the latest version?

I don't know. I don't use Ruby or RVM anymore.

> Which user thinks, "oooh, modifying dotfiles is so evil, I'll just type in this command every single time I open a terminal"?

I did. And it's not "every single time I open a terminal", it's "the once in a blue moon that I need to work on a legacy Rails app".

> They found in a user survey that 80% of the users want auto-switching

Obviously people who choose to use RVM are going to be people who like the way that RVM operates.

> If these problems are fixable then why throw the baby out with the bath water?

The bath water is the specific bugs I ran into. As you say, those may fixed and aren't the point. The baby is the general practice of automatically injecting things into dotfiles and messing with shell builtins. We should throw that away because when it fails, it leads to "spooky action at a distance" bugs that are hard to understand and that break totally unrelated things (the user is in a shell session where they aren't doing anything related to Ruby).

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#38

Earlier quoted context omitted.

> I don't understand this mentality. rbenv isn't advanced shell scripting by any means. Every working programmer should have the minimal unix skills required to read and understand rbenv in its entirety in one sitting. I used to think that way too. It's so simple. Why don't people spend a little time to learn their tools? It's not that complicated! Then, over the years, I realized that that's the wrong attitude. You…

> Expecting other people to go out of their way to learn the things you know is disrespecting their time. That might be true if you are going to use the tool precisely once and then never again, but this is your system's shell we're talking about. You're disrespecting your own time if you don't learn how it works. > You said that rbenv isn't advanced shell scripting. You are right, it isn't - for us. You're conflatin…

> Absolutely everything you mention is discussed in great detail in the bash man pages.

Great. If you would tell the entire human population about this so that they don't ask these questions anymore, then I would be very grateful.

Until then, I'm going to assume that people don't, and don't like to, read documentation, and adjust my software to that fact.

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#39
Or, they could just learn shell scripting. How much would that cost?

I do not understand why the[1] shell... which is a relatively small language... is so difficult for people to learn.

If you can find the time to learn Ruby, what stops you from learning a shell? What is the cost of ignoring it?

1. Preferably something resembling the proposed POSIX standard which might lend to portability. Bash is not necessarily the best choice unless every server you will ever use will be GNU userland/Linux kernel.

Re: RVM 2.0: Convert 20,000 lines of shell script into Ruby [Fundraiser]

#40

Earlier quoted context omitted.

The fact that RVM "does more" means that users need to understand more in order to fix problems that it causes. If you install RVM and other things on your system break due to its tampering with .bashrc, you need to understand what it has done. If I didn't understand $PATHs, etc., I would still be unable to use "man" due to $MANPATH being broken from the last time I installed RVM.

Correct, but it also means that the authors take responsibility for fixing those problems. That's the attitude we have for Phusion Passenger: it does a lot of stuff for you so that you don't have to. And if things break because of our fault, we take the responsibility of fixing it so you don't have to and can concentrate on your own business. Have the RVM authors not fixed the problems you experienced?

> we take the responsibility of fixing it so you don't have to

Surely you must say no to some people... I can't take the risk that person might be me and then be left up the creek without a paddle.

Do you have an SLA? What if I have an issue in production and the core contributors are all sleeping? Can I wake you up? Can I pay you for the right to wake you up? Even if you are awake and willing to help on my schedule, can you do so reliably without breaking everybody else? As your complexity (and popularity!) grows, your ability to take responsibility shrinks.

EDIT: A quick Googling suggests that you do offer commercial support. Take my comments above more generally for the wider array of open source projects out there that real businesses depend on.

Post reply on HN