I was under the impression that the good folks at github were using Vagrant in some capacity. Assuming they've used it or heard of it I'm wondering if/how it fell short for their server based projects.
We're using vagrant to a very limited extent. It's kinda slow (thanks RubyGems!) and overly complicated (why the hell does it use that huge COM-like API thing when it could just shell out to the command line utils?) It's been mostly replaced with two or three short bash scripts now... but they are relatively specific to our app.
In short, the world needs a Vagrant-clone that's < 500 lines of bash.
It's funny you should mention the virtualbox gem. Originally the library did just what you described but the switch back to shelling out was made for windows compat in 0.9
I'm scanning the GitHub repository and it doesn't seem much different from when I last looked. The code is extremely Java-y. I wanted to make a small change to some command (I forget what), but I had to wade through 4+ levels of indirection simply to find a single line of code doing the real work.
> Running a whole VM just to run an app is immensely irritating.
Although starting a VM to run an app is irritating, spending time hunting down why your build is breaking (or worse, why production is breaking) because someone had a library a few minor versions out of sync or because they're on a different operating system is immensely more irritating.
It probably depends on what you're doing, but I've found Vagrant extremely valuable for doing sysadmin work. I do a lot of work with Chef for various clients, and Vagrant makes it trivial to test. From a clean Ubuntu or CentOS VM to a running system in a few minutes. I could see a lot of benefit to using this for application development and testing as well.
This was the original reason that Mitchell and I started the project. We were Rails consultants at the time who just got sick of juggling application environments.
> Unnecessary statefulness for what should be a script
Can you clarify your meaning here? I fail to see how sequestering n random server components inside a vm, or vms, is more statefull than doing the same on your workstation.
[edit] I upvoted your response, because I appreciate your other points
Comments
I was under the impression that the good folks at github were using Vagrant in some capacity. Assuming they've used it or heard of it I'm wondering if/how it fell short for their server based projects.
We're using vagrant to a very limited extent. It's kinda slow (thanks RubyGems!) and overly complicated (why the hell does it use that huge COM-like API thing when it could just shell out to the command line utils?) It's been mostly replaced with two or three short bash scripts now... but they are relatively specific to our app.
In short, the world needs a Vagrant-clone that's < 500 lines of bash.
It's funny you should mention the virtualbox gem. Originally the library did just what you described but the switch back to shelling out was made for windows compat in 0.9
Worth checking out again.
I'm scanning the GitHub repository and it doesn't seem much different from when I last looked. The code is extremely Java-y. I wanted to make a small change to some command (I forget what), but I had to wade through 4+ levels of indirection simply to find a single line of code doing the real work.
My understanding is Vagrant is an important tool used heavily on the GitHub Enterprise side of things. It's distributed as a virtual machine.
- https://enterprise.github.com/faq
I don't know Github's reasons, but I can tell you mine!
Unnecessary statefulness for what should be a script sucks.
Running a whole VM just to run an app is immensely irritating.
Also, Vagrant breaks in the same ways the usual bundler mess breaks as well.
> Running a whole VM just to run an app is immensely irritating.
Although starting a VM to run an app is irritating, spending time hunting down why your build is breaking (or worse, why production is breaking) because someone had a library a few minor versions out of sync or because they're on a different operating system is immensely more irritating.
I'm not sure what your opposition is.
It probably depends on what you're doing, but I've found Vagrant extremely valuable for doing sysadmin work. I do a lot of work with Chef for various clients, and Vagrant makes it trivial to test. From a clean Ubuntu or CentOS VM to a running system in a few minutes. I could see a lot of benefit to using this for application development and testing as well.
This was the original reason that Mitchell and I started the project. We were Rails consultants at the time who just got sick of juggling application environments.
> Unnecessary statefulness for what should be a script
Can you clarify your meaning here? I fail to see how sequestering n random server components inside a vm, or vms, is more statefull than doing the same on your workstation.
[edit] I upvoted your response, because I appreciate your other points