Topic: Confused about why something like Piston or svn:externals is important
Not really sure if this should go here.. and I hope that I don't get flamed too badly for what might be a dumb question ;-)
I am trying to learn best practices for working with Rails, since my background is .NET and I've never had the opportunity in my professional career to use good practices (not by choice, obviously, but working at clueless companies) like source control, automated deployment, tests, etc. I keep reading about using svn:externals and/or Piston (or Braid, I guess, since I am dabbling in Git at the moment) to manage plugins. What I don't get is why you would want to keep plugins up-to-date for an application. Isn't it a good idea to "standardize" on a particular version and use that for your project, to avoid it breaking if a plugin is changed?
Maybe it's just because I come from Microsoftland (where "update" usually means "major change that obsoletes the old version"), but I'm not seeing the significance of this, or why it's important. When I script/plugin install some plugin, doesn't it copy the current version (or the version I specify) to my vendor/plugins directory? Shouldn't I be putting that directory under source control as-is, so anyone who I work on the project with will get the same version I'm using? Right now the first thing I do after creating a new project is to freeze the current version of Rails - should I not be doing this? From what I understand, using svn:externals or equivalent tool (e.g. Piston) makes it so that if I issue an update command, it will check for an updated version of that plugin and checkout the update if necessary; wouldn't this make the application very brittle and prone to break if there was a significant change to the plugin's source code?
I'm really sorry if these are stupid questions - before I got into Rails I never really dabbled with the open-source community, and like I said above I've unfortunately been saddled with a string of stints at companies whose idea of version control was to zip up all the files of a project and store them in "My Documents", and who felt that writing tests was wasting time, so all of these concepts are pretty foreign to me, although I'm trying my hardest to learn them.
Here's hoping I can get pointed in the right direction... I've tried to Google for it, but most of the results seem to just be indicating that it's a good idea, without really saying *why* it's a good idea.