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 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...