The sad state of the Lisp user community
October 27th, 2006 at 6:12 pmWhen someone says that “people like flocking, like sheep” it’s usually meant in a derogatory way. However, when it comes to programming, flocking may be very useful. If you’re a dedicated hacker, you can surely have a lot of fun implementing a language of your own, adding to it tools of your own, and using it to develop software, but when it comes to solving real problems rather than reinventing the wheel all the time, when it comes to creating interesting and useful programs quickly and effectively, a strong community support is essential. A strong, wide community means better modules that solve a wide range of already solved problems, in a more efficient way and with less bugs. It also means a strong support base which you can use when you’re stuck solving your challenges.
This is what makes Perl such a wonderful language for writing programs quickly. Although the Perl 5 language itself is far from perfect, and many valid claims can be said about its deficiencies, its powerful user community still makes it the best language out there to just get things done. CPAN - the Perl archive of modules and Perlmonks - the community forum, are the two best things about Perl, things other languages lack. For there is no other language I know of that has a module archive as comprehensive and useful as CPAN, and as great a user community support as the one at Perlmonks.
On the other hand, there is Lisp. I don’t want to start a discussion here, but in my humble opinion on a pure language-wise basis Lisp is superior to Perl (and probably to any other language out there). This is all good and well while hacking at toy projects for fun. When it comes to creating real, useful applications quickly, Lisp falls far behind Perl. The reason for this is, I believe, is fragmented, small and belligerent community.
First of all, the name Lisp stands for a family of programming languages. The family consists of two major dialects - Common Lisp and Scheme and several smaller ones (Newlisp, Arc, EuLisp and others). Of the two major dialects, Common Lisp seems to be more practical and uniformly supported, as the Scheme community is smaller and is further sub-divided into different implementation specific dialects.
The Common Lisp community consists of a few loosely coupled module archives (nothing even resembling CPAN in breadth and quality) and a discussion group - comp.lang.lisp (formerly a Usenet newsgroup, now part of Google Groups). comp.lang.lisp has an interesting history, but to tell it I want to first define what a flame war is.
The term “flame war” was coined on Usenet to describe a discussion that has slided from professional rails and moved to personal insults - a heated exchange between two or more posters - a “noisy” brawl. Such “wars” often result from people called “flamers” or “trolls” who act in a deliberately hostile and insulting way, such as posting “C sucks, long live Fortran” in comp.lang.c, or claiming for years that they’ve found a simple proof of Fermat’s Last Theorem on sci.math, objecting any attempt to criticize the obviously incorrect proof steps they present (look up “James Harris” on sci.math, or read this).
Well, comp.lang.lisp is a champion of flame wars. In fact, it is my firm belief that during the past few years extensive flame wars made the group barely useful for sane discussion of Common Lisp. The biggest problem here is a complete resistance to any form of introspection. I will clarify this point: by introspection I mean the act of people discussing the relative merits of the language their group is devoted to, and acknowledging its shortcomings. There is something in the comp.lang.lisp atmosphere that’s wholesomely opposed to such study. It probably didn’t start with him, but one man’s acts have played a major role in this - the Norwegian Common Lisp programmer Erik Naggum.
Now would be a good time to search for “Erik Naggum” in the Common Lisp archive - 10 minutes spent reading the search results should leave a good understanding of what he was. “Was”, because Naggum bade farewell from comp.lang.lisp a couple of years ago after another noisy flame war (of which there were many). And yet, as much as the CL community will hate to admit it, and as much as its leading members have fought against Naggum for years, in some metaphorical way Erik Naggum is what Common Lisp and its community are. He is an experienced programmer of the highest level - his wizardry is apparent from the serious discussions he took place in. This is probably what leads to his inflated sense of total and utter perfection. Any objection, any misunderstanding leads immediately to an articulate rebuttal which very quickly descends to personal tones.
And yes, I think it still represents the comp.lang.lisp group, even in the post-Naggum area. Just look up the latest debate of the shortcomings of Common Lisp that was incited by Steve Yegge. Lisp is as close to a perfect programming language as any, and its zealots guard it rabidly. Criticism isn’t tolerated. Ignorance isn’t tolerated - which drives many newbies away quite quickly. Lisp has been attacked so much before, that any post by a newbie meekly seeking an advice on some arcane feature gets immediately interpreted as criticism and turns into a flame war. True, Erik Naggum was the main cause of such flame wars in the past, but he wasn’t the only one. Wake up, Common Lisp gurus - your language is so unpopular because of you - there is no one else to blame. If you ever asked yourself why is CL much less popular than the obviously “brain dead” Perl (paraphrasing Naggum’s favorite Perl quote), the answer is the community, that is you. Try logging into Perlmonks, and ask a simple newbie question, wondering why something works like this and not that. Note the answers you will get. Unless your post is obvious flame bait, you will be answered in a helpful way, often by some of the most high-standing Perl luminaries. Now, compare this to comp.lang.lisp !
So, true, Lisp is a great language. Many seasoned programmers come to acknowledge it after a few years of looking for the best language to program in. However, after 40 years, it’s still not ready for the “big world”, and that’s because of the user community. Once comp.lang.lisp learns to accept that (1) their language is not perfect, but there’s nothing fundamentally bad about it, and (2) not all programmers are wizards, especially in their first couple of years on the craft, Common Lisp might just experience a renaissance. I sure hope to see that happen.
Related posts:

October 27th, 2006 at 7:43 pm
I agree, it’s all about the community. When Rails came out and changed the landscape of web frameworks, other languages hastily copied the features and now Python, Perl and even Java have frameworks to compete. Even Haskell has an application server now. Lisp on Lines and UnCommon Web have not taken off, yet.
October 27th, 2006 at 8:24 pm
http://social-problems-of-lisp.blogspot.com/
October 27th, 2006 at 10:42 pm
This is an interesting premise. Can you point out examples where Erik Naggum showed close mindedness?
Even if you can’t, there’s a point to the argument. Somebody like Erik Naggum may get away with a prickly writing style because of the content of his writing, but he also spawns imitators who copy his style rather than his substance.
October 28th, 2006 at 2:14 am
I am a beginner to Lisp, and I don’t worry too much about the kind of issues that you have raised. I frequent the #lisp channel on IRC, the c.l.l newsgroup on Usenet or the http://www.cliki.net or http://www.common-lisp.net on www and the RSS feed from Planet lisp at planet.lisp.org/rss20.xml And neither have I been discouraged or let down there. In fact, there is something interesting every day. I use C++ professionally, and also dribble with Python for fun. But I quite enjoy the Lisp community.
More than all this, I really really like the language and the immense power that it yields. Also there really is a simplistic mathematical beauty about it. The tools that there are in Lisp are unique and not very easy to build for other languages. And there is a good deal of quality open source projects to study from.
There is little that I could ask for.
You obviously don’t have any common lisp effort to show about, and don’t look like a person who looks at the brighter side of things.
October 28th, 2006 at 3:36 am
Couldn’t help but chuckle when I read this. A few years ago I worked through SICP and got comfortable with Scheme. I was also looking at Python. (Never liked Perl. Guess I’m more of a “one way” kind of guy. So I never looking into the Perl user community.)
Anyway, I lurked for a while on both c.l.python and c.l.lisp. The Python group was much like the Perl community you describe above. Even when there are *spirited* debates, they are usually civil and one rarely sees newbies getting dumped on. The Lisp group seemed more like a food fight. I was once trying to describe the difference to a friend and I said something like — “Just go to c.l.lisp and do a search on ‘Naggum’.”
October 28th, 2006 at 3:41 am
Absurdity of the Day
> He is an experienced programmer of the highest level - his wizardry is apparent from the serious discussions he took place in. This is probably what leads to his inflated sense of total and utter perfection.
October 28th, 2006 at 4:56 pm
There may be more flame wars on c.l.lisp, but the Perl usenet group is far less friendly. There are several old hands on there that seem to spend most of their time saying RTFM (or rather RTFperldoc) and producing mutliple post threads about why a newbie shouldn’t have asked a question in a particular way.
This may be why Perlmonks is such a great place. All of the snideness stayed over on Usenet.
For all of its flaws, c.l.lisp sems like a rather friendly place.
October 28th, 2006 at 9:33 pm
You see this to a lesser extent on comp.lang.python as well.
I was somewhat surprised to seeing it happening on Wikipedia, too.
I think basically anywhere you see the word “troll” or “flamer” used, it’s a good bet the community is not very useful or productive.
And like you and Steve Yegge have said, it brings negative publicity to the thing that the community was built around (a programming language, an encyclopedia, etc.).
These posts from Steve Yegge about the python vs. ruby communities and marketing is brilliant:
http://www.cabochon.com/~stevey/blog-rants/anti-anti-hype.html
http://www.cabochon.com/~stevey/blog-rants/bambi-meets-godzilla.html
October 28th, 2006 at 9:44 pm
Reading skillet-thief’s comment, too, you might be interested in this other person’s post about Eric Raymond and the RTFM jerks:
http://www.libervis.com/blogs/15/Jastiv/eric_raymond_and_the_rtfm_jerks
October 31st, 2006 at 1:59 pm
Holy crap! Have you read that social-problems-of-lisp blog, listed above? Are they sociopaths, or what?
By chance I’ve just read another blog that includes a checklist for how to tell if someone is an asshole. Here it is:
http://blog.guykawasaki.com/2006/10/you_have_to_lov.html
Reading it I had to laugh. It seemed to be written exactly with the guys from that social-problems-of-lisp blog in mind.
October 31st, 2006 at 5:22 pm
It’s true that c.l.l. and #lisp have some problems, but as far as I have asked there something during my last 1.5 years of lisp studying, I’ve always got answers to my questions, even when they were very simple and newbie questions. It just seems that both c.l.l. and #lisp expect you to do your homework and read some docs and faq’s.
November 11th, 2006 at 2:33 am
I always thought it was just some hidden factor in usenet and irc. Posts which dominate either arena seem to revolve around casual personal conversations with no bearing on the claimed topic, and wild flaming of anybody who trolls, comments, or asks an actual question.
Focused community sites like Perlmonks are incredibly handy because they make a special allowance for inane chitchat (the Chatterbox). Threads throughout the main body of the site stay on topic much more often than in the demented environment of usenet.
There may have been a time when irc and newsgroups could be relied on consistently for helpful and informative posts, but that was over a long time before I showed up on the scene.