[Off-Topic] Someone Important Left the Community! Now What??

July 6, 2014 · 💬 Join the Discussion
If you're lazy, click here for the TL;DR

This week a well-known Node.js community developer announced he was jumping ship. It was TJ Holowaychuk, one of the most prolific contributors to that community. As you’d expect, the news kicked up controversy, arguments, and people freaking out.

If you’re an experienced programmer, you don’t need me to tell you this. But if the recent news rattled you, maybe what I have to say will give you some perspective.

First, I want to share a few other articles I read over the last few days:

  • My Next Chapter: the statement by Mike Perham, one of the best-known Rubyists of this generation and creator of the ubiquitous, excellent Sidekiq. He’s not abandoning the project; he’s building a new product, and that product doesn’t involve Ruby.

  • Saying Goodbye To Python: here it was the Pythonista Ian Bicking, announcing he was trading Python for JavaScript, riding the current wave. Worth understanding that today’s JavaScript bubble doesn’t “require” you to “leave” anything for it. You can quietly stay a Pythonista and use JavaScript at the same time, no conflict.

  • Why I Left the .Net Framework: a developer named Jonathan Oliver also decided to lay out why he’s leaving his day-to-day technology, weighing the pros and cons of the Microsoft stack. No troll here; it’s actually a pretty interesting read.

  • Java Again: anyone from the first generations of the Java community remembers James Duncan Davidson, creator of nothing less than the first Tomcat and Ant. He left Java, spent a while in the Ruby community, and threw himself into photography (go look for photos of the RubyConfs from eight years ago and you’ll see the official ones are all his). Now he’s announced he’s going back to Java.

  • Why Go Is Not Good: as the title says, it’s a critique arguing that a freshly launched language should have been thought through better to cover cases other languages already handle.

  • Rust vs Go: again with a whiff of sour grapes. Rust really does look like a technically superior language to Go in design and features, and the piece shows the frustration of watching Go stay more popular anyway.

  • Why Perl Didn’t Win: mandatory reading on the fortunes of one of the most popular languages from the late 80s to the late 90s, which fell into obscurity and disuse. Even Swift, released by Apple weeks ago, already has more active users than Perl 6. One of the takeaways: anything new has to aim at the problems of the future, not the ones from the past.

Anyone from the first generations of the Ruby and Rails communities will remember the “traumas” we went through:

  • Zed is Not Dead: from 2008, when one of our most prolific developers, Zed Shaw, creator of Mongrel and one of the first to take on the challenge of measuring and optimizing Ruby’s performance, announced he was leaving the community and moving to Python.

  • Bomb: Merb and Rails Merge!: also from 2008, when the Merb team was on a collision course with Rails Core. The solution, happy for many and unhappy for a stubborn few, was to fold Merb into Rails 3, and it left dead and wounded behind. In retrospect, it’s worth reading “Learning from Rails’ failures” by Matt Aimonetti (who also moved to Go) and who counts among the wounded of that insurgency, and “The Rails/Merb Merge In Retrospect” by Giles Bowkett (still a Rubyist), who breaks down the results with a very critical eye.

  • Twitter switches from Ruby to Java: from 2011, when Twitter announced it was replacing the messaging-infrastructure parts written in Ruby with a proprietary solution in Scala. What the original news said and what people chose to remember are two different things, but the fact is it turned into a good Public Relations headache for us. Thankfully that one’s behind us.

And these are just the links I’ve read and can recall off the top of my head. There are dozens more.

Anyone still young or inexperienced in software communities, especially newcomers to Node.js, must be asking themselves: “Now what? If someone important like TJ says he’s leaving, shouldn’t I leave too?” Do your homework and you’ll see this isn’t the first time. In 2012 the creator of Node.js, Ryan Dahl announced he’d keep an eye on his project but would step out of the day-to-day coding. “Man, the world is ending!”

This Isn’t Bad News. This Is an Excellent Opportunity! (Seriously!)

In 2006, right as I was starting my run as an activist in the Ruby and Rails world, I already knew what was coming. We were the newcomers, immature, with unfinished technology and a pile of expectations, so naturally the road would be as hard as it gets. That’s why I wrote the article Evolution through Competition.

A lot of people imagine the best of all worlds is the one where nobody questions what you’re doing, everyone leaves you alone, and they take your promises on faith, promises you fully intend to keep, someday. (yeah, right…)

I disagree. Any promise or expectation worth having has to be questioned, pushed, scrutinized. If it’s so fragile it can’t take criticism, direct and indirect attacks, and sabotage, then the promise was weak to begin with and didn’t deserve to move forward. The sooner it falls, the better, because that’s less time wasted.

That’s why I always welcome the attacks: I expect to be ready to hit back twice as hard or die trying. And I’d expect nothing less from the Rails community. Everyone still believes constraints are bad, but I’ve said before that constraints matter, because they’re the only place innovation comes from.

Anyone who has to reach for the old trick of trashing others, the classic “I don’t feel like getting better, so I’ll drag the other guy down to look bigger” (I wrote about this back in 2007 too, “For me to win, the other has to lose…”), is declaring himself weak all on his own. Stop and think back to articles, talks, and interviews where you heard someone you admire trashing another community. “Ah, Ruby, that girly thing. Because we men use JavaScript.” It makes me laugh and feel a little sorry, because to me it’s clear that person will always be weak.

All the statements above, and others like them (“I’m leaving Node”, “I’m leaving .NET”, “I’m leaving Ruby”, “I’m leaving X”), I honestly believe came with no bad intent or bad faith, at least not consciously. But I have a theory. Everyone who makes statements like that wants validation from their peers, or worse, wants their peers to follow them, which is also validation of their own position. “I don’t like my old toy anymore, but I don’t want anyone else playing with it either.” It’s a pretty childish stance.

Take the Ruby community as an example. Plenty of names sort of “left” their main activities without slamming the door or acting childish about it. Chad Fowler is in Germany running Wunderlist, focused on mobile and back-end development, and we don’t hear him talk Ruby anymore. Ilya Grigorik had his startup bought by Google and eventually dropped off too. Matt Aimonetti, after the Merb vs Rails episode, quietly stepped back and now works with Go.

Ryan Bates, one of the most beloved in the community for his tireless years of work on RailsCasts, stopped publishing months ago and said nothing about it. David Chelimsky, maintainer of RSpec, handed off the baton and stepped away without any fuss. José Valim, one of the key people behind Rails 3, is over in Elixir and Erlang land now and rarely says a word about Ruby.

“O.M.G! You mean it’s all over!? It went up in flames!?”

No. In the meantime, hundreds of new Rubyists showed up and carried the work forward. The most immediate example is Carlos Antonio and Rafael França, who sort of picked up José Valim’s mantle in Rails Core. Evan Phoenix picked up Chad Fowler’s mantle at Ruby Central. Avdi Grimm sort of picked up Ryan Bates’ mantle with his excellent RubyTapas, and on it goes.

A community is made of individuals, and each individual performs best when acting to maximize their own benefit. The side effect is that they end up naturally influencing and pulling others up alongside them. It’s always voluntary exchange for mutual benefit. Nobody acts with zero benefit to themselves; some believe they do, and those are exactly the ones who hit “burnout” fastest, because the question quickly becomes:

"Why do I wear myself out collaborating in this community, stress myself out, and even so not everyone appreciates what I do? I do it all for them!"

That’s the wrong question, and the wrong question leads to the wrong answer. Some start to believe others owe them something, since they poured so much of their free time (especially in the open source world) into “helping others”. And “the others” figure they owe nothing, since nobody asked for that effort in the first place. In practice, “the others” are right.

If you take part in a community, you do it for yourself. Maybe because you understand that helping others is part of your own reward. Maybe because it gives you peace of mind or a clear conscience. Or because you’re a good strategist and know certain contributions will open doors for you down the line. The reason doesn’t matter, as long as there’s a reward you don’t force others to hand over. Demanding respect, demanding manners, demanding compassion, none of it makes sense without a counterpart. Nobody asked you to do what you’re doing; if you are, understand it’s for yourself. That’s the definition of voluntary work.

And to be crystal clear: voluntary work means work without financial pay, and not work without benefit or purely altruistic. If your work is paid, that’s a different conversation, and the best advice there comes from Don Draper:

Back to the topic, I imagine the names I mentioned above, the ones who stepped back partially or quietly, get this. They went looking for personal satisfaction elsewhere. They owe nothing to anyone, and nobody owes anything to them.

The ones who leave with bombastic declarations are, consciously or not, throwing it in everyone’s face: “you didn’t value me, now you’ve lost your chance, and I know you’ll miss me!” It isn’t written that way, but that’s what it adds up to. Otherwise, why throw it into the fan and turn it into a public controversy? Any written argument is only part of the reason, never “the” reason.

You, the Individual

The flip side is whoever follows, admires, and idolizes one of these people who walked away from where you are. Depending on how deep the admiration runs, you feel the floor drop out, stunned, not knowing which way to run. One of two things happens: you either go hunting for another idol and start the classic “he wasn’t even that good”, or you sink into depression and the panic of “I don’t know what happens now”.

My advice: "don't have idols, have references."

Stop thinking you owe others something and, by extension, stop dumping on others the job of helping still more people. That’s what’s going on: you don’t understand your purpose and figure others should do what you yourself won’t. Worse, you let others decide which road you take. If you’re that insecure, stop for a second and think about what you “are” before anything else.

Your only purpose in life is to take care of yourself and produce, without getting in anyone else’s way. When you do that, the natural effect is that spontaneous collaborations spring up, communities evolve, and everyone comes out ahead. A community where everyone makes demands on everyone grows without any purpose.

On technology, opinions, proposals, and promises, remember this too: you want to be under constant “attack” and constraint. Nothing is worse than being ignored. I wrote another article, a translation from someone far wiser than me, Kathy Sierra, called Dilbert and the Zone of Mediocrity, where I quote:

How brave are you? How far will you (or your employer) go to avoid the Zone of Mediocrity? Until or unless you're willing to risk passionate hate, you may never feel the love. Scott Adams agrees. In a recent post on the Dilbert blog, he wrote: "If everyone exposed to a product likes it, the product will not succeed... The reason that a product 'everyone likes' will fail is because no one 'loves' it. The only thing that predicts success is passion, even if only 10% of the consumers have it."

So what if someone left your community? Is it so fragile that one blow, no matter the size of the impact, brings the whole thing down? If you believe your community is only resistant, you’re right: past a certain point, it collapses. But if it’s resilient, malleable and adaptive, it survives. That’s what guarantees the survival of species, the Law of the Most Adaptable (not the “strongest”! Keep the difference between resistant and resilient in mind, you want to be the second one).

Are you adaptable? Or are you just fishing for other people’s validation, letting them decide for you? One thing I’ll say for sure: if I ever give up what I do, nobody will find out from a written statement. I settled that the day I started.