4 ms·
> 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 h
by brandonbloom 13y ago
> 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 price, you can gain hugely disproportional leverage.
> had to manually mess with $PATH, bashrc and other stuff
Personally, I wish Unix had a better framework for these sorts of environment/dependency/versioning needs, but altering $PATH in your bashrc is about as easy as it gets. It's not nearly as nice as a union mount plan9-style, but it's what we're stuck with, and it should take you no more than 5 minutes to understand and install rbenv. If not, then you should `man bash` and invest that time. Again, for such a small investment, you get a tool that is non-magic enough to trust on your production server too, rather than putting the rvm mystery box in to the wild.
- FooBarWidget 13y ago> 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.html#about_environment_variables http://www.modrails.com/documentation/Users%20guide%20Apache...
- brandonbloom 13y ago> 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.
- FooBarWidget 13y ago> 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.
- brandonbloom 13y ago> I'm going to assume that people don't, and don't like to, read documentation, and adjust my software to that fact. Fine, but rvm has chosen the completely wrong way to go about adjusting the software to that fact! Rather than build a simple system that has an optional easy-mode layer on top, rvm begins with some crazy complex shell-builtin overriding functionality and works backwards from there. If at some later time I want to use the just put shit on my path mode, I'm shit out of luck.