Thursday, June 10, 2010

The Flerb Paradox

Chas Emerick has ranted against Emacs conducted a survey of Clojure usage. That's right, in the middle of a friggin survey of Clojure usage he took the time to bash Emacs, and I'm kinda fed up with Chas' Emacs hate. I'm a heavy Emacs user, and I think its the bees knees, and I would like to correct some errors in Chas' article.

Fact #1: Learning Emacs is not necessary for learning Clojure

No one has ever said it is. It's a flat-out false statement. Chas does not use Emacs to write Clojure. Neither do 30% of Clojure users according to his survey results, and when you look at the comments on Brian Carper's article, you see many people saying they gave up trying to learn Emacs, and went with another editor.

Fact #2: No one is pushing Emacs

The clojure.org homepage does not say it is a syntax error to write Clojure code in an editor other than Emacs. In fact, I remember a time when I almost unsubscribed from the Clojure mailing list because there was so much talk about VimClojure (not that I hate vim, it was just noise to me). Contrary to Chas' belief, people are not running around thumping their Emacs. Chas probably just sees Emacs mentioned with Clojure in blogs and tweets and IRC and gets the impression that people are being bigots, but as revealed by his survey there is a simple explanation for this: 70% of us are using Emacs. In fact, if anyone is obsessed with Emacs its Chas, he seems incapable of talking about Clojure IDEs (or perhaps just Clojure) without ranting against Emacs.

Fact #3: There are alternatives

Frankly, if I was the developer of Counterclockwise, Enclojure, La Clojure, or VimClojure (that's right four other, non-Emacs editing environments for Clojure!), I would probably be hurt my Chas' comments. He looks at Emacs, which he finds too difficult to be worth his time, and concludes that there is no decent editing environment for Clojure. He even goes so far as to offer to pay someone to develop a green-field environment for him.

Fact #4: People hate Clojure's syntax more than any particular editor

Clojure's Lisp syntax and abundance of parenthesis is mentioned as a weakness/blind spot in the survey results just as many times, if not more, than IDE complaints. Many people think syntax is scaring off newbies more often than not. I think that is a natural reaction. I too was put off by the parenthesis at first, but once Lisp clicks for you, you realize that the parenthesis are necessary for its power. Someone who puts off learning Clojure because its syntax looks weird and different is missing out on the power that is enabled by that "weirdness." You have to be willing to try something different, completely different, and go through some pain to gain this incredible power.

The Flerb Paradox

That leads me to my last point. I'm not sure how to say this without it coming across as me being a jerk. Let me just say that I'm not out to attack Chas or anyone else personally. I don't think Chas is an idot. I don't hate him. I just wish he'd stop riding his anti-Emacs hobby horse. However, what I'm about to say is controversial: editing environments vary in their productivity enhancement. This is a corollary to the Blub Paradox that I call the Flerb Paradox.

Editing environments lie along a continuum of productivity enhancement from a plain text editor on up. The Flerb editing environment is a fictional environment that is somewhere in the middle of the continuum. A user of the Flerb editing environment looks down one end of the continuum at Notepad and balks at its lack of feature x (syntax highlighting, code completion, etc.). He knows he is looking down the continuum and his editor makes him more productive than those below it. Otherwise, why wouldn't he just use notepad?

However, when he looks up the power continuum at Emacs he doesn't realize he's looking up the continuum. He only sees something strange and confusing. He doesn't understand why anyone would want to use something like Emacs, because Emacs can do everything Flerb can do, but it has all this hairy stuff thrown in for no reason. It has different key bindings and Meta keys and buffers! It seems to be designed to confuse its users. This is the Flerb paradox.

Now, am I saying that Emacs is the best editor that could possibly be invented? No. What I'm saying is that it's the most productive editor that is available. There's still room for other editing environments. Perhaps one of them will turn out to be more productive than Emacs. There are plenty of people out there who would rather use something other than Emacs, and I'm fine with that. I think they won't be as productive as possible, but that's their choice.

Learning Emacs was tough. It was painful. And just like most tough things in life, it was worth it. But this is coming from someone who switched to the Dvorak keyboard layout, and taught himself to use the mouse with his left hand. I like to do things for the challenge, because it keeps me sharp. I fear the day I become dull and complacent.

So, while I said Clojure developers aren't Emacs bigots, I've turned into one, and it's Chas' fault :-), just like superheros create supervillians that create superheros. If Chas hadn't railed against Emacs so much I wouldn't have turned into the supervillian I am today. >;-)

3 comments:

Chas Emerick said...

Ouch. :-/

I'm quite certain I didn't bash emacs in my survey results post. You're right that I said that existing non-emacs environments weren't sufficient, but I'd hope that, given my "ideal clojure environment" wiki page (http://muckandbrass.com/web/x/DoBZ), that the authors of those environments take my analysis of the survey results as constructive.

Second, did you look at the actual responses to the survey, and the comments made about development environments? Yes, people believe that emacs is *functionally* necessary to program in Clojure, and yes, they don't think that existing IDE plugins are cutting it.

Beyond that, there's not much to respond here. Check out that wiki page, where I say that (a) I've used emacs before, though not with happy results, and (b) I think the truly ideal environment may be something like dropping emacs' raw editing capabilities into a more approachable base such as Eclipse. I'm pretty sure I'm not suffering from the dreaded Flerb paradox -- just trying to help move the needle so that mere mortals can have their cake without experiencing the pain you describe in your adoption of emacs.

Perplexed,

- Chas

paul said...

In your survey results post you said, "I think [Emacs] falls down badly on a number of counts related to usability, community/ecosystem, and interoperability. But, I'm not here to harsh on emacs (at the moment! :-))" and have also said we need an editor that "mere mortals can use," which seems to me to be a backhanded complement.

In response to those two point I'd just say that the only thing Emacs "falls down" on is doing things differently, and different isn't necessarily worse. Secondly, I'm certainly no ubergeek, which is an existence proof that "mere mortals" can use Emacs.

I did read the survey results, and I did not see the results saying that Emacs is "functionally" necessary for Clojure. I mentioned one of the themes I saw in the results in my post.

I did read your "ideal clojure environment" wiki page, and I saw that most of the things you mentioned Emacs already has.

I'm not trying to stand in your way. I think it is a worthwhile goal to try to improve the non-Emacs environments. I just don't see that it is necessary to always point out "flaws" in Emacs every time the topic is brought up. Though I think Emacs is the best editor available, if you get flack from Emacs users for trying to improve other editors, I will defend your right to do so.

Chris said...

Have you tried to install vimclojure? Piss poor documentation, a wildly outdated "stable" version, and no indication of any kind from the developer that he's interested in future releases. I'd love to try clojure support in vim, but I'm not guru enough to get it to actually work in a reasonable and timely way.