InfoQ

News

Capistrano gets competition: Vlad the Deployer

Posted by Werner Schuster on Aug 17, 2007

Community
Ruby
Topics
Deployment / Datacenter ,
Programming ,
Design
Tags
Rake ,
Deployment ,
Ruby on Rails
Capistrano, is a popular deployment tool for Ruby apps and Rails apps in particular. It's now challenged by the Ruby Hit Squad's Vlad the Deployer. The group consisting of Ryan Davis, Eric Hodel, Wilson Bilkovich and Shaners Becker, released the tool after a 4 day coding session (InfoQ featured an interview with Ryan Davis). One reason was the number of dependencies of Capistrano, as well as other issues.

We talked to part of the Ruby Hit Squad about their motivations to create Vlad the Deployer. Following the information on the website, the first question was whether Vlad is simpler than Capistrano:
Eric Hodel: Not so much simpler as less complex and easier to understand and maintain.

Wilson Bilkovich: Not just simpler code, but a simpler user experience as well. I have occasionally had serious difficulty 'handing off' a Capistrano config to a customer at the end of a project. Vlad is less complex in an empirical way. We frequently decided on an approach by using 'flog' and picking the code with the lowest score.

EH: We also wanted the most common deployment operations built-in making it easy for most users to get up and running. At the last Seattle Ruby Brigade meeting Geoff Grosenbach sat down to learn vlad expecting to take all night. He was done in about 5 minutes.

Ryan Davis: Yeah, we're trying to give basically the same amount of functionality, but with much less complexity:

Flog (1.1) Scores:

net-ssh-1.1.2.gem : 7528.3
needle-1.3.0.gem : 1685.4
capistrano-2.0.0.gem: 5609.2 (nearly 6x more than vlad)
TOTAL = 14822.9 (more than 3x more than vlad + deps)

vs.

open4-0.9.6.gem : 742.0 (and we really only make use of 1 method)
rake-0.7.3.gem : 3208.9 (this includes contrib)
vlad-1.0.0.gem : 945.5
TOTAL = 4896.4
Note: Flog is a tool that looks at Ruby code and determines how "tortured" it is, with higher scores indicating higher levels of pain. The tool uses Ryan Davis' ParseTree library to analyze the Ruby code (in ParseTree's AST form). It checks various aspects of the code, among them the use of methods like define_method or eval, hooks like method_added, use of open classes and other concepts that have the potential to increase complexity..

The Ruby Hit Squad continues with more reasons for creating Vlad:
RD: A few reasons:
1) Understanding cap, Net::SSH, and needle was way too hard for me. I'm simply allergic to clever code these days.
2) Net::SSH had way too many problems to be used as an actual SSH client.
3) It took me hours to diagnose some Net::SSH problems and all I got in response was basically "*shrug* SSH is wacky".
4) Finally, deployment is always last and always under pressure and you shouldn't have to have so many problems with it. It should Just Work(TM).

EH: Capistrano sits on a large stack of software and is deeply coupled to it. We wanted something simple and understandable. We chose to sit on top of rake because its much more familiar and is much easier to understand.

WB: If my only problems with Capistrano were a few bugs, I would have submitted patches. I wanted a deployment toolkit that would fit on a T-shirt.

Asked whether they are recommending Vlad over Capistrano, they answered this:
RD: Absolutely. We were targeting 80% of the cap features in 20% of the code, so it seems reasonable for us to target 80% of the cap users. The ones with really esoteric setups probably have their cap-fu down so strong they don't want to move anyways.

WB: Absolutely. We want to accomodate most of Capistrano's users, and also the ones that can't make it work.

EH: We also want vlad to work for more than just deploying web sites. In the rapidly-approaching 1.1 you'll be able to skip including the default vlad recipes and use it as a general system administration tool.
Asked whether there could be some cooperation or interaction between the Capistrano and Vlad projects, the Ruby Hit Squad seems positive:
WB: I would like to see a repository of system-specific commands for performing various tasks. Both tools could make use of something like that. It might be possible to move SCM support into a library that could be shared, as well. After conquest comes assimilation.

RD: It is certainly possible... I'm not really willing to speculate. I do agree with Wilson that there is probably a nice middle ground we can both benefit from.
What is your experience with Capistrano?
What a cool name by Toni Menzel Posted Aug 20, 2007 5:55 AM
  1. Back to top

    What a cool name

    Aug 20, 2007 5:55 AM by Toni Menzel

    I am not that much into ruby/rails but i definitly like the humor they always have: vlad the deployer - yes thats a name you just wanna try out to actually know that its all about! (btw, Capistrano is a tooi never liked when i tried rails a while back, same for the name..sometimes productnames are just foldernames, sometimes names are mantras)

    Toni

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.