Format C: and Other Thoughts on Programming Language Community

The Lisp community gets horrible press. The Ruby community gets great press. How come?

Sometimes things like this happen. In the linked thread, a Common Lisp beginner asks how to clear the environment. Pascal Bourguignon first replies with a solution, but when the questioner can't get it to work, Pascall submits a "fix" that contains the following code.

(mapcar (lambda (x) (ignore-errors (delete-file x)))
               (directory "/**/*.*"))

This code deletes all your files. The newbie thankfully notices this and the conversation continues:

Beginner: I'm not ready to debug/fix your untested guesses at a solution
and I certainly don't need malicious bullshZt thrown my way.

Pascall: That's exactly because you're a newbie you must try to
understand any piece of code thrown at you, bullshit or not.  If you
had tried, you could have corrected the trivial error you got from
my first version.

Beginner: After completing all of "Hello World"!?  Go fZck
yourself you arrogant POS!

Wow. Just wow. What's interesting here, is:

  • How badly this reflects on the Lisp community.
  • How little this actually has to do with the Lisp Community at all. The real jerk here is Pascall Bourguignon.
On the other hand, the first wave of responses barely disapprove. Thankfully, a few responses later the community begins to express outrage at Pascall's behavior. The victim handles things remarkably well and refuses to let this experience turn him off of Lisp.

But can you think of a worse first community interaction than that? Which brings me back to Ruby. Why does Ruby's community get such great press?

I'm part of the Portland Ruby Brigade (and therefore the greater Ruby community as well), and I have to say, these are some of the nicest people I know. It's a truly friendly and curious group. If you come to a meeting they'll make you feel right at home.

So I guess I'd say the Ruby community has a good repuation because it deserves it! But wait, I've interacted with the Lisp community too, and it's made up of great people as well. But it only takes a few bad apples, or even just a few bad experiences, to smear a whole community.

So I was a little shocked by the thread that unwound on our PDX.rb mailing list a while ago. A Ruby on Rails beginner sent the follow email (I'm reproducing it here since it was sent to a public mailing list):

I feel like I've been thrown back in a time warp to 1996 when I was
coding Java in emacs with TextMate.  RadRails just isn't stable.

Don't some of you guys come from the Java world?  Don't you miss the
features in code completion, re-factoring and all that goodness that
IDEs gave you?  How productive is it to stop, change windows, search
and look an API and switch back to you editor to finish the task
every time you forget the exact APIs format?  I could do the same
with Java and JEdit but why would I ever work like that?

Don't get me wrong, I'm committed to finishing the "Agile with RoR"
book but I miss Java already.

So far I'm not seeing the benefit over Maven w/ project templates
(which can give you convention over configuration), Spring (which
gives you IoC), Hibernate (ActiveRecord) and a Eclipse with all the
web tools plugins (which doesn't cost me $50 either like TextMate).

Admittedly, the comment was a little inflammatory. But as someone who loves to try new programming languages and environments, I know that exact feeling. Your new tool does all these cool things, but it completely falls down at these things your old tool did just fine. Why can't the new tool just be perfect!?

The truth is, Ruby doesn't have very good development tools. I would personally love some powerful refactoring utilities and maybe a neat integrated documentation system. On the otherhand, some of the problems with other languages that can make IDEs so neccessary are absent in Ruby. An editor (*cough* emacs ;-), a REPL (irb), and a good reference (http://ruby-doc.org/core) go a very long way when you're working with a language as clear and concise as Ruby.

But having seen Smalltalkers work, I'd be crazy to suggest that IDEs were stupid or unhelpful.

A lot of people were supportive, talked about some of the benefits that had convinced them to switch, or provided helpful work arounds.

Unfortunately, some other members told the virtual vistor to go back to Java or told the poster was wrong to need development tools. Several of these replies reflected poorly on the community.

Now, these are not bad people! But they perceived a stranger to be criticisizing their programming language of choice and reacted strongly. A programming language is a very personal choice and there are lots of identity issues tied to the decision.

To be clear, what happend on the PDX.rb mailing list is not the same as the Lisp example cited above. There was no perceived threat to Common Lisp, just a jerk squatting inside the community. But the outcomes may have been similar.

All it takes is one person to represent us poorly to the world. When we feel threatened, we should stop and think for a while. Unless a person is flat out wrong about something objective, there's probably a kernel of truth to what they're saying. And even when they're just wrong, we have a chance to help educate them instead of making them feel bad. And if they're maybe a little bit right, maybe we can try to think of solutions that we've used in the past.

Let's keep the perception of the Ruby community friendly and thoughtful. After all, we are, aren't we?

Before I wrap up, I'd like to link this back to one final thing. There's a growing trend on Planet Smalltalk for Smalltalkers to respond to other bloggers' posts saying "Smalltalk doesn't have that problem, so you don't need that solution."

While they are almost always right, it's not winning any friends. And Smalltalk needs all the friends it can get. I'm still hoping it will take over the world someday. And so a reply along the lines of "Oh, interesting problem! Not sure it's possible to hit that in Smalltalk because of ..., but I'm going to keep this in mind next time I'm programming in ..." might be more appropriate.

This is a silly way to end, but be kind!

posted on: 06/12/2006 | path: /tech