Amp: A Revolution in Source Version Control (in Ruby!)

Amp is a new Ruby based project that aims to "change the way we approach VCS" (version control systems). Currently it's basically a port of the Mercurial version control system - a common alternative to the Git system that's more popular in Rubyland - but it aims to abstract things to the point where it could be used in place of Git, Bazaar, SVN, CVS, Darcs, and so forth.

The creators of Amp believe that while there are lots of great repository formats out there, none of the official clients are "truly good software" and so they're aiming to build something that abstracts away all of the pain into a heavily customizable Ruby library and client. Even now you can add your own commands to Amp or adjust those that already exist, meaning you can totally customize a powerful source control tool to your own taste.

I hope that this project does well. Git is an incredible piece of technology, and I don't want to go back to Subversion, but I do feel that we lost some things in the transition. Git is built by UNIX hackers for hackers, and that approach runs all the way through from the architecture to the rather bare-metal interfaces, so graphical tools built specifically for Git are probably always going to be what John Gruber calls spray-on usability - http://daringfireball.net/2004/04/spray_on_usability

I don't see the point of re-implementing every existing VCS. The only marginal one I can see is darcs, as attempting an OO implementation of it's patch engine may produce some useful knowledge (largely as documentation of its patch algebra). But even that is hard to sell without a more compelling reason. Isn't this a huge duplication of effort?

seydar says:December 1, 2009 at 4:25 am

@Jack - there is already a bug posted on the lighthouse tracker and we are working to fix it.

@Ashley - have you ever wanted to extend a VCS? Use it from Ruby? Also, there is s0 much to learn by writing Amp. Amp isn't about just duplicating effort. The duplication part, really, was to bring us up to speed with the implementation. The real purpose is in going beyond.

"Currently it's basically a port of the Mercurial version control system - a common alternative to the Git system that's more popular in Rubyland"

Are you kidding!? Git is far more popular in Ruby land than Mercurial. I'm not knocking Mercurial, but I really doubt it comes anywhere close to Git in popularity. SVN (as much as its users don't want to admit it) might surpass Git's popularity, but not Mercurial.

Brandon, you've highlighted the ambiguity in my phrasing, but it means the opposite ;-)

I could change "a common alternative to the Git system that's more popular in Rubyland" to
"a common alternative to Git, a more popular system in Rubyland". But basically I'm saying Git is more popular in Rubyland.