Capistrano had been my baby since mid-2005. It was a fun project, and all the more gratifying because it was fairly popular as a deployment tool for Rails applications. But this last year I’d begun to notice something.
I wasn’t enjoying Capistrano as much as I used to.
It had become a chore to work on. It already did everything we at 37signals needed it to do, everything and more. I didn’t feel any need to extend it, and yet bug reports, feature requests, and patches still trickled in. I began to resent each issue that was raised. I began to resent Capistrano itself, because it stood between me and other projects that I wanted to participate in.
And yet, Capistrano was my baby. I couldn’t just leave it! How can you just walk away from something that you’ve put almost four years of blood and sweat into? Is it even possible?
For months I’d been wrestling with that line of thinking, and also the idea that I “owed” the community something. I wrote Capistrano, I promoted it, I encouraged people to use it; wouldn’t I then be irresponsible for walking away?
The answer I finally came to was “no”. I owed the community nothing. I had made no promises. I had cooperated with them, trying to build a community around Capistrano, and that very success made it possible for me to walk away. There is an ecosystem there, potentially self-sustaining, with plenty of capable programmers who are able to carry the torch. (Whether they are willing to remains to be seen!) Capistrano, as it is, works fine for the majority of folks, and for those for whom it doesn’t quite work, the source code is available and they are welcome to fork the project and tinker to their heart’s content.
So, I walked away.
Overall, the response has been overwhelmingly positive, but I’ve received a little criticism from some people who believe I could have handled things more gracefully at the end. They suggested that instead of walking away, I should have appointed a successor. I’ve pushed back: appointing a successor works fine if there is a pool of people that are obvious candidates, but there was no such pool for Capistrano. I had been the sole developer on Capistrano since its inception. Sure, there were plenty of contributions, but there was nothing like the Rails “core team”, no one I could turn to and say “you’ve been a huge help, would you mind taking over from here?” Without that pool, it would have been pointless to “appoint a successor.” They might have agreed, and might have even worked on Capistrano diligently for awhile, but an appointment cannot replace passion, and before long they would have found themselves burning out, as I was, and we’d be back to square one.
So instead, I left it up to the community. I walked away, and encouraged anyone who was interested to step up and take the torch.
Will it work? Is it enough? Will Capistrano live, or die? It’s too early to say, yet, but if it doesn’t work, and Capistrano stagnates and dies, then that is proof enough to me that Capistrano needed to die. If there was no one but myself passionate enough to push it forward, then (as harsh as it may sound) it was a waste of my time and people should be looking elsewhere for things that they are passionate about. On the other hand, if someone steps up and the community backs them, then Capistrano deserves to live, and will live, with them at the helm. Either way, my decision was the right one.
It’s been hard, watching and waiting, seeing what will come of it. There have been some promising hints at new leadership. It’s been exciting (in a thrill-ride kind of way) to follow the discussions on the mailing list, and to see people helping each other there. I still haven’t felt much like a “weight has been lifted”, but I have had time, finally, to work on other projects. It’s been nice to dabble in other things (like my long-languishing personal finance app, or learning Erlang), without feeling guilty for not working on Capistrano.
It’s been a curious experience, all around. When you don’t have time for the things you really feel passionate about, look around yourself. What things are you hanging onto out of a false sense of obligation? Look beyond your assumptions, and you might be surprised at what can really go.