Steve Yegge at speaking on Clojure debugging direction

8,480 views
Skip to first unread message

Julian

unread,
Apr 18, 2011, 4:41:07 AM4/18/11
to Seajure
Steve Yegge spoke on this according to this twitter post:
"Hearing Steve Yegge talk about what needs to happen with Clojure
debugger tooling for competitive uptake at Seajure"
http://twitter.com/#!/technomancy/status/56205750766284800

Does anyone have a set of the powerpoints or the slides?

Justin Lilly

unread,
Apr 18, 2011, 11:37:26 AM4/18/11
to sea...@googlegroups.com

There were no slides. It was just chatting in a coffee shop.

Steve Yegge

unread,
Apr 18, 2011, 3:35:47 PM4/18/11
to sea...@googlegroups.com
I do have a growing list of things I find irritating about Clojure, now that
I'm actually writing something in it.

I tend to blog when I get upset enough about something, so left unchecked
I will most likely produce a volcanic rant about how Clojure is deliberately
trying to fend away potential new users with a shotgun and a mean glare.

I'm not sure how else to handle it, though.  Whenever I've blogged like that
in the past it has been *incredibly* effective.  People pay attention and
get to work fixing whatever I ranted about.  Whereas if I gripe about things
one at a time on a mailing list, nothing will get done -- at least it appears that
way, since people have *already* griped about every single one of the issues
I'm encountering and met with passive aggression, lethargy and outright
dismissal.

-steve

Julian

unread,
Apr 18, 2011, 7:00:24 PM4/18/11
to Seajure
Steve, you should *definitely* write that blog entry.

On Apr 19, 5:35 am, Steve Yegge <ste...@google.com> wrote:
> I do have a growing list of things I find irritating about Clojure, now that
> I'm actually writing something in it.
>
> I tend to blog when I get upset enough about something, so left unchecked
> I will most likely produce a volcanic rant about how Clojure is deliberately
> trying to fend away potential new users with a shotgun and a mean glare.
>
> I'm not sure how else to handle it, though.  Whenever I've blogged like that
> in the past it has been *incredibly* effective.  People pay attention and
> get to work fixing whatever I ranted about.  Whereas if I gripe about things
> one at a time on a mailing list, nothing will get done -- at least it
> appears that
> way, since people have *already* griped about every single one of the issues
> I'm encountering and met with passive aggression, lethargy and outright
> dismissal.
>
> -steve
>
>
>
> On Mon, Apr 18, 2011 at 8:37 AM, Justin Lilly <justinli...@gmail.com> wrote:
> > There were no slides. It was just chatting in a coffee shop.
> > On Apr 18, 2011 7:39 AM, "Julian" <juliangam...@gmail.com> wrote:
> > > Steve Yegge spoke on this according to this twitter post:
> > > "Hearing Steve Yegge talk about what needs to happen with Clojure
> > > debugger tooling for competitive uptake at Seajure"
> > >http://twitter.com/#!/technomancy/status/56205750766284800
>
> > > Does anyone have a set of the powerpoints or the slides?- Hide quoted text -
>
> - Show quoted text -

Peter Thatcher

unread,
Apr 18, 2011, 7:01:57 PM4/18/11
to sea...@googlegroups.com
I agree. How do we make you more upset?

Ted Neward

unread,
Apr 18, 2011, 7:09:35 PM4/18/11
to sea...@googlegroups.com
Well, sh*t, now I'm curious.... which things are you ranting about that's
being met with a shotgun and a mean glare?

Ted Neward
Java, .NET, XML Services
Consulting, Teaching, Speaking, Writing
http://www.tedneward.com

Steve Yegge

unread,
Apr 18, 2011, 8:13:34 PM4/18/11
to sea...@googlegroups.com
The full list is at home, sorry.  I'll tell you this, though:  single-pass compilers
are a joke from the 1980s.  I thought the only one left in existence was C++.
And even C++ allows circular dependencies between translation units if you
forward-declare them.

The standard answer on the Clojure lists is "refactor", to which the standard
newcomer will reply "how about go fuck yourselves; I'll use another language."

But single-pass compilation and no circular dependencies are just two of a
growing list of gripes.  The language is rapidly becoming Not Fun as my
experience with it grows.  And that's just sad.

-steve

Andrew Cristina

unread,
Apr 18, 2011, 8:22:12 PM4/18/11
to sea...@googlegroups.com
Now I'd really like to see this blog post.

Patrick Logan

unread,
Apr 18, 2011, 9:17:12 PM4/18/11
to sea...@googlegroups.com

"Single-pass compilers no longer around" - if it's any compensation, isn't JavaScript even worse? ie it allows forward references as long as they are not used forwardly!

Patrick Logan

unread,
Apr 18, 2011, 9:20:52 PM4/18/11
to sea...@googlegroups.com

If that's the worst of it, I'd say Clojure is in good shape.

On Apr 18, 2011 5:13 PM, "Steve Yegge" <ste...@google.com> wrote:

Steve Yegge

unread,
Apr 19, 2011, 3:51:39 PM4/19/11
to sea...@googlegroups.com
The worst of it is the prevailing attitude -- which you've just done a fine job
of caricaturing here -- that "Clojure don't need no fixin', so shut yer traps."

Without a "let's fix all the really stupid stuff" attitude, it's never going to get
fixed, and the friction will preclude adoption.  And believe you me, the mailing
list is filled with people harboring that attitude.

-steve

Ted Neward

unread,
Apr 19, 2011, 4:01:44 PM4/19/11
to sea...@googlegroups.com

That’s actually one of biggest things that turns me off to the Python language—the community and their “Guido is the only one who is smart enough to decide how things should be done” attitude.

 

I think part of the problem there is that the Clojure community is populated by ex-Lispers who feel like they’ve finally, after decades of popular neglect, come into the limelight and recognized for the geniuses they are. Which is quite the turn-off.

Brody Berg

unread,
Apr 19, 2011, 4:03:17 PM4/19/11
to sea...@googlegroups.com
Non-genius here - totally happy to help on the Yegge-list should it be presented. 

Cheers, 

Brody 

Steve Yegge

unread,
Apr 19, 2011, 4:41:35 PM4/19/11
to sea...@googlegroups.com
Actually I get the impression that Clojure doesn't have many ex Common Lispers.
Common Lisp folks seem quite happy to continue using Common Lisp, and I can't
really say I blame them.

Clojure's community seems to have been populated by Schemers and folks from
various statically-typed camps like ML and Haskell.  They generally whine and bitch
whenever anyone tries to work around Clojure's pedantic insistence on functional style
-- for instance, the crapped all over the folks who've tried to port the CL loop macro.

Other examples:

  * There doesn't seem to be any standard mechanism for nonlocal exits, and Rich has
    pronounced: "do not use exception handling for control flow".  Where are catch/throw?

  * Some dude gave a talk last year about how macros are dangerous and you should
    never use them.  I'm not going to look it up, because it'll make my blood boil and I'll
    probably have a heart attack.

It's really easy for a community to become a permanently poisoned well.  Java went
that way.  They now have a fanatical insistence on avoiding certain language mechanisms
(such as inheritance, arrays, static methods, constructors and a bunch of others I'm
forgetting), even though they're perfectly harmless and appropriate much of the time.
The reasons are manifold -- compiler bugs that have never been fixed, issues with the
expressiveness of Java's type system, language inflexibility that precludes unit testing,
and so on.  But rather than fix the language, they've hobbled it even further by cultural
convention.

Clojure is already starting to show signs of cultural poisoning.  The big question in my
mind is whether it's too late to try to fight it.  If it's too late, I'll move on and not worry
about it.  But given that Clojure doesn't show up in the Tiobe top 50 yet, I'm going to
assume that it's not yet too large to be fixable.

-steve

Patrick Logan

unread,
Apr 19, 2011, 4:51:58 PM4/19/11
to sea...@googlegroups.com
For the record, I never wrote (nor intended to write) anything
remotely like "shut yer trap".

I did weigh in with my opinion, which is the same as what you did. I
respect your opinion, and would not be upset if clojure changed it's
single-pass declarations.

I expect that you also respect people with different opinions, as long
as we're all tolerant. If you read something other than that in what I
wrote, it was absolutely unintentional.

FWIW I personally have criticisms of clojure that I consider worse
than those you've listed to date in this thread. (Based on my
weighting system and certainly no one else's!)

Regards
-Patrick

Phil Hagelberg

unread,
Apr 19, 2011, 4:59:21 PM4/19/11
to sea...@googlegroups.com
On Tue, Apr 19, 2011 at 1:41 PM, Steve Yegge <ste...@google.com> wrote:
> * Some dude gave a talk last year about how macros are dangerous and
> you should never use them. I'm not going to look it up, because
> it'll make my blood boil and I'll probably have a heart attack.

Eh; that's not quite right. The talk I saw was about how functions are
generally more composable than macros, so they should be the first
tool you reach for. I think it was more directed at folks who come to
lisp and are drunk with the power of macros.

(Assuming it was this talk: http://clojure.blip.tv/file/4522250/)

-Phil

Kevin Downey

unread,
Apr 19, 2011, 5:03:05 PM4/19/11
to sea...@googlegroups.com
I find common lisp very distasteful, on a number of levels (community,
lisp-2, etc) so I see no reason to complain about the lack of common
lisp in clojure. I hope the common lisp folks are always happy to
continue using common lisp. If you would rather use common lisp,
please go ahead.

--
And what is good, Phaedrus,
And what is not good—
Need we ask anyone to tell us these things?

Patrick Logan

unread,
Apr 19, 2011, 5:09:25 PM4/19/11
to sea...@googlegroups.com
This seems right up the traditional alley of "X Considered Harmful"
position statements in programming. Taking a strong stance is good.
Having a good sense of when and why to ignore such a stance is also
good.

Hopefully there are few things in CS or life that would actually cause
one's blood to boil.

It's sunny in PDX. The sun's the only thing allowed to boil _my_ blood.

Patrick Logan

unread,
Apr 19, 2011, 5:10:25 PM4/19/11
to sea...@googlegroups.com
Oh, now you've crossed the line into Lisp-1 v. Lisp-2. You've gone too far! 8*O

Steve Yegge

unread,
Apr 19, 2011, 5:24:03 PM4/19/11
to sea...@googlegroups.com
You've missed my point in a rather spectacular way.  I'm glad we're
having this discussion, though, because I need to fine-tune it before I
take it to a larger audience.

What Clojure needs is to be non-prescriptive.  You shouldn't force people
to code in a certain style -- and by "force" I mean exerting cultural pressure
by saying things like "If you would rather use Common Lisp, go ahead."

I'm always surprised that I need to repeat myself here, but I'll do it again.
Here's the litany:

  * languages need users to survive.  The more, the better.  Users get you
    documentation, libraries, fleshed out edge cases, and lots of feedback
    about what works and doesn't work in the language.  Users beget jobs,
    money, and commercial/industrial acceptance.

  * to get users, languages have to say Yes.  You can't ever say No.
    This is why language guides are always phrased in terms of what you
    can do in a language, and are never about what you cannot do.  It's a
    fundamental marketing issue.

You _can_ say No, but then other languages win, and you're stuck wondering
why nobody is using your beautiful language.

If you really don't think users matter, then you have no cause to complain
when nobody uses your language.

As for me, I would rather like to see more people use Clojure, and I would
in fact like to use it more myself.  That means Clojure needs to start being
less prescriptive and more accommodating.

So what we need is a pretty simple cultural shift.  Clojure just needs to start
saying Yes.  There are a bunch of patches out there just languishing because
nobody wants to say Yes.  And there are a bunch of libraries that aren't getting
any attention.  And there are a bunch of missing abstractions in the language
itself that are going unaddressed.  Not because nobody is trying to fix them --
no, not for lack of effort on the part of the would-be users.  It's because Clojure
is fast getting into the habit of saying No.

One guy ran into the lack of the >>> operator and made a patch, and his patch
is just sitting there unused -- which means that everyone (including me!) who is
porting Java code to Clojure (which, by golly, is a good way to get a lot of people
using Clojure) is stuck having to rework the code semantically rather than just
doing the simplest possible straight port.  The more they have to do this, the
more you're going to shake users off the tree.

If you embrace users, then Rich won't have to publicly beg for money.  The
money will come naturally as an emergent ecosystem.  But you need users!

The cultural shift here is not just important -- it's life-threateningly so.  Clojure's
life is on the line.  When people announce:  "hey, I made a loop macro!" the
response absolutely can NOT be:  "why can't you just write it as a series of
maps and reductions?"  If anyone says that they need to be re-educated in the
*economic* importance of embracing diverse programming styles.

If you don't understand the marketing issues here, and you fail to see the
basic financial significance of being nice to contributors from all backgrounds
and not just those from the pure-functional crowd, then Clojure is dead at the
starting gate.

-steve

On Tue, Apr 19, 2011 at 2:03 PM, Kevin Downey <red...@gmail.com> wrote:

Ted Neward

unread,
Apr 19, 2011, 5:39:15 PM4/19/11
to sea...@googlegroups.com

I’m not really “in” t the Clojure community, but I have several friends who are (Stu Halloway, Neal Ford, etc) and I didn’t get the impression that it was heavily populated by the MLers or Haskellers; in fact, I got the impression that the MLers and Haskellers were more into languages like F# and Scala because of the static typing and type inference in those languages that were more similar to ML and Haskell. *shrug* Like I said, I’m coming at this third-hand, so I can’t say for certain.

 

I do find it interesting that you take the position that Java-ers “have a fanatical insistence on avoiding certain language mechanisms
(such as inheritance, arrays, static methods, constructors and a bunch of others I'm forgetting)”; that’s definitely not been my experience when interacting with said community. If anything, I find it difficult to get them to recognize that arrays suck, that inheritance isn’t the be-all/end-all solution to problems, and so on. I’m not one of the fanatics that you describe—though I do subscribe to some of the aforementioned beliefs, I don’t subscribe to it religiously—but that’s not my point. My point is that I’d love to sit down with you sometime and try to figure out where our opposing views on this come from. (And I mean that in the most pleasant sense—I’m always fascinated by examples where two people look at the same thing and see radically different things.)

 

That said, I do think that domain-driven design is the kiss of death for any multi-JVM project.

 

Meanwhile, back to Clojure.

 

It seems to me that clearly the key to fixing Clojure is to convince Rich Hickey of the sin or infraction in question, and though I’ve not met Rich personally, I get the impression that he’s (a) pretty smart, and (b) pretty opinionated. I’m not sure how successful such an effort would be.

Peter Thatcher

unread,
Apr 19, 2011, 5:50:37 PM4/19/11
to sea...@googlegroups.com
Just curious: Is there a good example of a "yes" language community?

Andrew Cristina

unread,
Apr 19, 2011, 5:52:24 PM4/19/11
to sea...@googlegroups.com
Common Lisp struck me as a "yes" language, with the caveat that it was
mostly "yes, you can do it yourself"

Steve Yegge

unread,
Apr 19, 2011, 5:53:25 PM4/19/11
to sea...@googlegroups.com
I agree that convincing Rich is going to be the key to getting individual problems fixed.

Clojure's been around for over three years now.  It's fairly mature.  But it's not in the TIOBE top 50 languages.  It's not seeing a dramatic uptick in adoption.

To me that says Clojure is doing something seriously wrong.

I don't think the problem is Rich, and I don't think the individual problems with the language or libraries are anywhere near as significant as the overall culture, which Rich can influence but not control.

Understand that it only takes a few people to poison a community, as long as nobody else is doing anything to prevent it.  Rich and Stu and the other "big names" seem nice enough to me, and as far as I can tell it's people like them -- and the 95% of the rest of the community -- who are responsible for everything *good* about Clojure's community.

But that 5% is going to be the death of the language l if we don't start fighting it Right Now.  Languages only have a short window before people say "oh, that's old", meaning nobody liked it and it failed. Clojure is still "new", but it'll only be that way for a few more years.

-steve

Steve Yegge

unread,
Apr 19, 2011, 6:02:17 PM4/19/11
to sea...@googlegroups.com
Perl.  How else did such a crappy language become such a dominant force?

Python wasn't until I called them out on it back in my "Bambi Meets Godzilla"
days, and now they're _much_ more careful about their fielding of questions on
the mailing lists and newsgroups.  And (mostly in response to Ruby) for the past
few years they've also been fiercely evolving what used to be a stagnant language.

Common Lisp was -- admittedly at the expense of having to design by committee
and placate a bunch of very large incompatible Lisp bases.  CL "died" during the
AI Winter, so they're no longer adding features to the language, but it was a very
strong "yes" language during its design and evolution.

Java and C++ got where they are today via marketing and tons of money.
If Clojure had tons of money to throw around, then it wouldn't need to take Larry
Wall's guerilla approach of being nice to people and adding everyone's pet feature.

I could go on.  This is an interesting discussion in its own right.

-steve

On Tue, Apr 19, 2011 at 2:50 PM, Peter Thatcher <ptha...@gmail.com> wrote:

Steve Yegge

unread,
Apr 19, 2011, 6:05:04 PM4/19/11
to sea...@googlegroups.com
Absolutely -- nothing wrong with that.  Yes is yes.

If Clojure people all said "of course you can use macros!  Of course
you can use CL-style loop facilities!  It's your code, do what you like!
Feel free to use nonlocal exits all you like!" -- well, then it would be a
lot closer to a Yes language.

We'd still need to get some issues resolved that are not fixable by
end users -- circular dependencies, for instance.  Or we'd have to come
up with some really good tools and design patterns that smooth over
the problem so well that people don't notice it anymore -- that's another
perfectly valid way of being accommodating.

-steve

Patrick Logan

unread,
Apr 19, 2011, 6:18:51 PM4/19/11
to sea...@googlegroups.com
Common Lisp is also a "yes" language in that, that's how it was
defined in the first place: a combination of MacLisp, NIL, ZetaLisp,
Franz Lisp, Interlisp, Portable Standard Lisp, etc.

Lisp in general is a "yes" language. The more "purely" functional the
lisp, the more challenging it is to have imperative statements "yes"'d
into it. But still. It could be worse. (And that's not better.)


On Tue, Apr 19, 2011 at 2:52 PM, Andrew Cristina <acri...@gmail.com> wrote:

Stan Dyck

unread,
Apr 19, 2011, 7:29:14 PM4/19/11
to sea...@googlegroups.com
On 04/19/2011 02:53 PM, Steve Yegge wrote:
> I agree that convincing Rich is going to be the key to getting individual problems fixed.
>
> Clojure's been around for over three years now. It's fairly mature. But it's not in the TIOBE top 50 languages. It's
> not seeing a dramatic uptick in adoption.
>
> To me that says Clojure is doing something seriously wrong.
>
> I don't think the problem is Rich, and I don't think the individual problems with the language or libraries are anywhere
> near as significant as the overall culture, which Rich can influence but not control.
>
> Understand that it only takes a few people to poison a community, as long as nobody else is doing anything to prevent
> it. Rich and Stu and the other "big names" seem nice enough to me, and as far as I can tell it's people like them --
> and the 95% of the rest of the community -- who are responsible for everything *good* about Clojure's community.
>
> But that 5% is going to be the death of the language l if we don't start fighting it Right Now. Languages only have a
> short window before people say "oh, that's old", meaning nobody liked it and it failed. Clojure is still "new", but
> it'll only be that way for a few more years.
>


We must not tolerate the intolerant! My new rallying cry.

StanD.

Kevin Downey

unread,
Apr 19, 2011, 8:40:03 PM4/19/11
to sea...@googlegroups.com
so where is your set of proposals that have been shot down? where is
your github fork of clojure which the changes you would like to see?
where are the patches, where is the code? Have you done anything to
move the language in the direction you want?

Steve Yegge

unread,
Apr 19, 2011, 9:51:43 PM4/19/11
to sea...@googlegroups.com
On Tue, Apr 19, 2011 at 5:40 PM, Kevin Downey <red...@gmail.com> wrote:
so where is your set of proposals that have been shot down? where is
your github fork of clojure which the changes you would like to see?
where are the patches, where is the code? Have you done anything to
move the language in the direction you want?


I am collecting a list.  Most of my concerns have already been raised on
the mailing lists -- this alone should be a strong signal that something
is amiss.  And in several cases people have already submitted patches
that have been met with apathy or even antipathy.

My primary focus is getting a debugger written.  I believe this is one of the
most pressing needs, and it is the area to which I think I can best contribute,
having spent a few months last year modifying JSwat to add a command-line
interface.  I've also worked with powerful debuggers in the past and have a
clear vision around what I want it to do.  In contrast, most devs consider
a debugger to be a slightly dirty adjunct to the compiler tool suite, and they
only use one in times of dire need.  I hope to change this perception by
creating a tool that people can't remember ever living without.

Hence my compilation of an issues list has been -- and will continue to be --
second-priority and somewhat ad-hoc.  And I am not going to set aside the
debugger work to try to make language or library patches, particularly when
so many others have been so poorly received.  Instead I believe it will be most
useful to highlight the root problem by calling attention to the failures of people
who tried to fix issues long before I came along.

Before I publish anything I'll make sure I have references to the relevant
Clojure group threads.  And I have no plans to publish until the debugger is
up on github -- to give me plenty of time to "adjust" to irritations that may fade
with experience -- so it'll likely be several months before I blog about it.

With any luck, my concerns will have already been addressed by then,
and I can focus on how great Clojure is.

-steve

 

Tim Clemons

unread,
Apr 19, 2011, 10:08:43 PM4/19/11
to sea...@googlegroups.com
On Tue, Apr 19, 2011 at 6:51 PM, Steve Yegge <ste...@google.com> wrote:
My primary focus is getting a debugger written.  I believe this is one of the
most pressing needs, and it is the area to which I think I can best contribute,
having spent a few months last year modifying JSwat to add a command-line
interface.  I've also worked with powerful debuggers in the past and have a
clear vision around what I want it to do.  In contrast, most devs consider
a debugger to be a slightly dirty adjunct to the compiler tool suite, and they
only use one in times of dire need.  I hope to change this perception by
creating a tool that people can't remember ever living without.
 
Interesting.  Do you have any of the code on github?

Patrick Logan

unread,
Apr 19, 2011, 10:45:32 PM4/19/11
to sea...@googlegroups.com

A pretty reasonable way of writing a debugger is to take advantage of lisp being a good "yes" language. See Dybvig, et al.'s paper on "Expansion Passing Style". Even if you don't want to use EPS for the final product it's more than sufficient to build a highly usable prototype.

Fogus

unread,
Apr 19, 2011, 11:04:47 PM4/19/11
to Seajure
> My primary focus is getting a debugger written.

George Jahad has been working on a debugger called CDT (that
integrates with Emacs) and there may be some chance for collaboration
or inspiration.

http://georgejahad.com/clojure/cdt.html

David Nolen

unread,
Apr 19, 2011, 11:54:14 PM4/19/11
to Seajure
On Apr 18, 8:13 pm, Steve Yegge <ste...@google.com> wrote:
> The full list is at home, sorry.  I'll tell you this, though:  single-pass
> compilers
> are a joke from the 1980s.  I thought the only one left in existence was
> C++.
> And even C++ allows circular dependencies between translation units if you
> forward-declare them.
>
> The standard answer on the Clojure lists is "refactor", to which the
> standard
> newcomer will reply "how about go fuck yourselves; I'll use another
> language."
>
> But single-pass compilation and no circular dependencies are just two of a
> growing list of gripes.  The language is rapidly becoming Not Fun as my
> experience with it grows.  And that's just sad.
>
> -steve

Have you considered what might be lost if the current single-pass
compiler is ditched? Certainly the current limitation/design
simplifies some advanced uses of macros, user-defined type systems
come to mind. Clojure has stiff competition in the functional PL space
- Haskell, Typed Racket, Scala. Clojure should have a clear and simple
path to face those challenges as well. Personally, I think the
paradigm shifting potential of a la carte type systems solidly trumps
the convenience of multi-pass compilation - but that's my humble
opinion.

Having experienced pain with languages that allow circular
dependencies (pretty much everything) I kind of meh about that.

Since the person most qualified to implement such deep changes to the
compiler is Rich Hickey and he hasn't done much on either of these
significant fronts, I have a growing suspicion these are well
considered design decisions to keep the door open for the community to
build very sophisticated extensions/experiments with the language
without undue complications.

David

Rich Hickey

unread,
Apr 20, 2011, 7:26:53 AM4/20/11
to Seajure
As far as 'languages have to say yes', I propose the following thought
experiment - YesLang. Each user of YesLang will get a coupon entitling
them to add or change one feature as their needs require. Obviously
this will be the most popular and successful language, acquiring
hundreds of thousands (or millions?) of developers and a commensurate
number of features. Users, possessing only a single coupon, are bound
to make well-considered design decisions.

Sounds dangerous? Perhaps, as a safety net, a community-appointed
committee (sworn to immediate response times) will be empowered to
reject no more than 5% of suggestions, e.g. on the basis of the
proposer's failing to enumerate the tradeoffs associated with the
feature. Rejected applicants will be able to redeem their coupon for a
T-shirt that says "The Sky is Falling!".

Rich
> > > On Tue, Apr 19, 2011 at 1:01 PM, Ted Neward <ted.new...@gmail.com>
> > >> On Mon, Apr 18, 2011 at 6:20 PM, Patrick Logan <patrickdlo...@gmail.com
>
> > >> wrote:
>
> > >> If that's the worst of it, I'd say Clojure is in good shape.
>
> > >> On Apr 18, 2011 5:13 PM, "Steve Yegge" <ste...@google.com> wrote:
>
> > >> > The full list is at home, sorry. I'll tell you this, though:
> > single-pass
> > >> > compilers
> > >> > are a joke from the 1980s. I thought the only one left in existence
> > was
> > >> > C++.
> > >> > And even C++ allows circular dependencies between translation units if
> > >> > you
> > >> > forward-declare them.
>
> > >> > The standard answer on the Clojure lists is "refactor", to which the
> > >> > standard
> > >> > newcomer will reply "how about go fuck yourselves; I'll use another
> > >> > language."
>
> > >> > But single-pass compilation and no circular dependencies are just two
> > of
> > >> > a
> > >> > growing list of gripes. The language is rapidly becoming Not Fun as my
> > >> > experience with it grows. And that's just sad.
>
> > >> > -steve
>
> > >> > On Mon, Apr 18, 2011 at 4:09 PM, Ted Neward <ted.new...@gmail.com>
> > >> >> > > done -- at least it appears that way, since people have *already*...
>
> read more »

Rich Hickey

unread,
Apr 20, 2011, 2:49:01 PM4/20/11
to Seajure
http://news.ycombinator.com/item?id=2467809
> > > > done -- at least it appears that way, since people have *already*
> > > > griped about every single one of the issues I'm encountering and met
> > > > with passive aggression, lethargy and outright dismissal.
>
> > > > -steve
>

Steve Yegge

unread,
Apr 20, 2011, 3:48:26 PM4/20/11
to richh...@gmail.com, sea...@googlegroups.com
I replied to your post on ycombinator with a question, but with all the buzzing
over there it may go unnoticed.

Can declare be made to accept qualified names from other namespaces?
This would solve the user-annoyance problem while maintaining interning
integrity.

-steve

stevey

unread,
Apr 20, 2011, 7:09:51 PM4/20/11
to Seajure
I think that one's called "Perl".

Unfortunately I've conflated saying Yes to features vs. saying yes to
*users*.
Saying yes to features is clearly a way to get a kitchen sink a la C++
or Perl.
Maybe it helps make a language successful, but I'm not really
interested in
arguing for it for Clojure -- particularly because as a Lisp, it gives
us much
flexibility for building our own features.

Saying Yes to users is more subtle. If someone has an issue or
complaint,
and it's not going to be fixed in the language itself, there are good
and bad
ways to field the question.

By the way, Rich, I've not seen you being guilty of bad answers, but I
do see
them from many of the regular contributors on the main Clojure group,
so I'm
going to reply for their benefit.

Let's say Bob Noob is trying to do X, and you can't do X in Clojure.
There
are friendly/welcoming ways to address the question, and then there
are
hostile ways.

Examples of friendly answers:

* "Yes, we need to document that corner case better -- everyone hits
it."

* "We also ran into this issue and found this alternate design
pattern
works well..."

* "This sounds like something we should consider addressing in a
library.
We'll add it to the to-do list. In the meantime, here are other
options:"

* "That's an interesting issue. To be honest it probably won't make
the
priority list, but we'd definitely recommend documenting how you
wind
up solving or working around it, and if possible even smoothing
it over
with a tool or a library."

* "We're having trouble reproducing it -- can you try the following
steps
and tell us what happens?"

Examples of hostile answers:

* "I don't see why anyone would ever need to do this."
(This is an amazingly common response all over the internet, not
just on Clojure groups, and it's passive-aggressive, immature,
unhelpful, and off-putting all at once.)

* "Why are you doing it that way? That's not Clojure-y."
(This is implicitly accusatory, and also offers no other
options.)

* "Without commenting on the usefulness of this feature, since I've
never personally needed it, I'd try xyz."
(The opening clause is very much a comment on the usefulness of
the feature.)

* "You shouldn't be doing that. This isn't language Y."
(Being prescriptive and making bold assumptions about the reasons
behind the question being asked.)

Note that I haven't posted on the Clojure list, so none of this has
happened to me -- I'm just observing what I see is a really negative
pattern.

Hopefully this makes it clearer what I mean by saying Yes. I mean
this:

"Yes, there's a solution for you!"

-steve

Gregg Williams

unread,
May 2, 2011, 3:07:30 AM5/2/11
to Seajure
Let me add a specific example of what Steve is talking about. See my
post on the Clojure mailing list entitled "help--reading keyboard
input from Clojure is surprisingly difficult" (here's the link--http://
groups.google.com/group/clojure/browse_thread/thread/9261480fbea72ead/
c2fb8a910ee410cf?lnk=gst&q=Gregg+williams#c2fb8a910ee410cf--but if
that doesn't work, you can search on my name or the title).

Note the nature of some of the suggested responses. Only one person
(thanks, Lee Spector) even agreed with the reasonableness of my
complaint: "But still, I will humbly submit that it's totally freakin'
nutso that it should be so hard to do basic user interaction."

Don't get me wrong--*everyone* was polite and helpful (to their frame
of reference). I'm just saying that nobody responded to my call to
action:

---
My modest proposal:
I invite the Clojure community to deem this input-from-keyboard
problem to be a Clojure "Adoption Assassin" that is stifling Clojure
adoption by the larger programming community. There are other such
pain points, and they need to be solved.
---

I *love* Clojure, but if I weren't such an *insanely* stubborn cuss, I
would have dropped Clojure SEVERAL HUNDRED HOURS OF EFFORT ago (no
exaggeration).

Thanks, Steve. I too want to see Clojure become very, very popular. I
refer beginners to my own site, http://www.GettingClojure.com.

--Gregg

David Nolen

unread,
May 2, 2011, 12:15:44 PM5/2/11
to sea...@googlegroups.com
On Mon, May 2, 2011 at 3:07 AM, Gregg Williams <gre...@innerpaths.net> wrote:
---
My modest proposal:
I invite the Clojure community to deem this input-from-keyboard
problem to be a Clojure "Adoption Assassin" that is stifling Clojure
adoption by the larger programming community. There are other such
pain points, and they need to be solved.
---

Why not solve the problem yourself and share your solution if you feel strongly about it? I've run up against this myself, but didn't care enough to solve the problem. Perhaps you can make this particular pain point less so for the rest of us.

David 

Phil Hagelberg

unread,
May 2, 2011, 12:40:53 PM5/2/11
to sea...@googlegroups.com
On Mon, May 2, 2011 at 12:07 AM, Gregg Williams <gre...@innerpaths.net> wrote:
> Let me add a specific example of what Steve is talking about. See my
> post on the Clojure mailing list entitled "help--reading keyboard
> input from Clojure is surprisingly difficult" (here's the link--http://
> groups.google.com/group/clojure/browse_thread/thread/9261480fbea72ead/
> c2fb8a910ee410cf?lnk=gst&q=Gregg+williams#c2fb8a910ee410cf--but if
> that doesn't work, you can search on my name or the title).

The problem is well-understood, at least on the Leiningen side. It's a
bug in Ant (or possibly a missing feature if you want to argue) that
apparently the Ant developers have no intention of fixing. So
Leiningen needs to completely change the way it handles subprocesses.
It's been on the roadmap for a while now, but it's a huge endeavour,
and other things (deploy functionality, search, and retest) have taken
precedence due to their much higher bang-for-buck ratios.

I'd be thrilled if anyone who is particularly interested in fixing
stdin wants to help; start a thread on the Leiningen mailing list and
I can provide details. I also have an idea for a short-term
non-transparent workaround that would be much less involved.

-Phil

Gregg Williams

unread,
May 2, 2011, 1:33:23 PM5/2/11
to Seajure
Phil, thanks for stepping up to the plate for us beginners--that's the
kind of attitude that will help grow the Clojure installed base. I've
started the thread in the Linengen group and will do whatever I can to
solve the problem, or at least drive its solution forward. Thanks
again!

--Gregg Williams

On May 2, 9:40 am, Phil Hagelberg <p...@hagelb.org> wrote:

James Baker

unread,
May 2, 2011, 6:51:16 PM5/2/11
to Seajure
Beautiful. I hope my observation isn't seen as a personal attack
here, but this quote seems like a textbook example of an "unfriendly"
reply:

>
> Why not solve the problem yourself ...? ...
> I've run up against this myself, but didn't care enough to solve the problem. ...

There is no aspect of "yes" to this response - it's pretty similar to
"I don't see why anyone would ever need to do this." from the
perspective of the aforementioned Bob Noob.

Contrast this to another response:
> ...it's a huge endeavour, and other things ... have taken precedence... [but] ...
> I'd be thrilled if anyone who is particularly interested in fixing
> stdin wants to help

Wonderful! There you see empathy and cooperative invitation.

Was there any real difference between the two replies? I would argue
that they both say "go for it yourself" at their core. It's the
attitude difference here that is, I believe, Steve's whole point
(which I endorse heartily, for ANY community - not just Clojure). I
just couldn't help but point out the beautiful illustration that was
just provided.

Thanks,
James

David Nolen

unread,
May 2, 2011, 7:11:54 PM5/2/11
to sea...@googlegroups.com
On Mon, May 2, 2011 at 6:51 PM, James Baker <james....@gmail.com> wrote:
Beautiful.  I hope my observation isn't seen as a personal attack
here, but this quote seems like a textbook example of an "unfriendly"
reply:

Thanks,
James

I don't take it as an attack, and I thought my reply was a perfectly fine respectful response which amounted to, "Hey dude, go for it otherwise no one else will. I'd use that too!" ;)

David

Steve Yegge

unread,
May 2, 2011, 7:15:40 PM5/2/11
to sea...@googlegroups.com
Couldn't have said it better myself. :)  I'm pretty sure David didn't mean
it the way it came out (at all).  But I think going forward we need to start
being extra-careful with wording and phrasing -- myself included.

I'm planning on writing a blog post about Clojure, and I intend to downplay
this a little, since I don't want it to dominate the discussion (nor what people
think of Clojure).  However, I do think I need a language-neutral follow-up
post where I remind people that programming languages are not Twilight,
developers are not fanboys, and open criticism of languages is *mandatory*
if we want to make any forward progress and avoid being a hive mind.

Hive minds are bad.  Let's all say it together now.

-steve

Stuart Halloway

unread,
May 3, 2011, 8:47:32 AM5/3/11
to sea...@googlegroups.com
Let me add a specific example of what Steve is talking about. See my
post on the Clojure mailing list entitled "help--reading keyboard
input from Clojure is surprisingly difficult" (here's the link--http://
groups.google.com/group/clojure/browse_thread/thread/9261480fbea72ead/
c2fb8a910ee410cf?lnk=gst&q=Gregg+williams#c2fb8a910ee410cf--but if
that doesn't work, you can search on my name or the title).

w/r/t the specific problem here, is there an action item in Clojure itself, or (as Phil's response suggests) is this an issue requiring patches to ecosystem tools?

My modest proposal:
I invite the Clojure community to deem this input-from-keyboard
problem to be a Clojure "Adoption Assassin" that is stifling Clojure
adoption by the larger programming community. There are other such
pain points, and they need to be solved.

It would be great to have a handle on the issues that pose the most trouble for beginners, so that volunteers can easily find high value items to work on, and so that we can prioritize development efforts into releases. I have created a top-level page in the wiki for this: http://dev.clojure.org/display/design/Usability.

Some work has been done to create a standard Clojure launcher (http://dev.clojure.org/display/design/CLJ+Launcher). Check it out -- it might be a good home for a solution to the "reading stdin" problem.

Cheers,
Stu

Stuart Halloway
Clojure/core
http://clojure.com

Nick Dimiduk

unread,
May 4, 2011, 1:12:14 PM5/4/11
to sea...@googlegroups.com
I'm afraid that by focusing on this specific problem the point is missed. I think what Steve is saying here is open source projects need to have great customer service in order to thrive. Having processes to collect bugs and curated priority lists of desirable features is necessary for product building; having a friendly, responsive, positive public face is necessary for community building. There's a reason why positions like "Community Manager" and "User Advocate" keep popping up in businesses built around OSS -- they're necessary for adoption which is in turn necessary for success.

Just my 2-cents.

-n

Tim Clemons

unread,
May 4, 2011, 1:52:08 PM5/4/11
to sea...@googlegroups.com
On Wed, May 4, 2011 at 10:12 AM, Nick Dimiduk <ndim...@gmail.com> wrote:
I'm afraid that by focusing on this specific problem the point is missed. I think what Steve is saying here is open source projects need to have great customer service in order to thrive. Having processes to collect bugs and curated priority lists of desirable features is necessary for product building; having a friendly, responsive, positive public face is necessary for community building. There's a reason why positions like "Community Manager" and "User Advocate" keep popping up in businesses built around OSS -- they're necessary for adoption which is in turn necessary for success.

Just my 2-cents.

-n

'User facing' and 'developer facing' communications are often in opposition to one another.  Developers need to be able to deliberate on ideas in a frank manner that takes feelings as a secondary consideration.  In this regard, the Clojure mailing list is definitely more developer focused.

Perhaps the answer is to let local user groups like Seajure take on the work of answering questions from newer users and helping them acclimate to functional programming tropes.  Just like the linux kernel development list wouldn't be the first place you asked a question when having issues with your video card.

Nick Dimiduk

unread,
May 4, 2011, 2:50:50 PM5/4/11
to sea...@googlegroups.com
On Wed, May 4, 2011 at 10:52 AM, Tim Clemons <tcle...@gmail.com> wrote:
'User facing' and 'developer facing' communications are often in opposition to one another.  Developers need to be able to deliberate on ideas in a frank manner that takes feelings as a secondary consideration.  In this regard, the Clojure mailing list is definitely more developer focused.

Sorry Tim, I whole-heartedly disagree with you on this. There is no difference between a "developer" and a "user" if the "product" is a programming language. Developers are just as emotional and irrational as any other human sub-group. Developers still want to know the tools they're using support their needs and the people behind those tools care about supporting their needs.

Perhaps the answer is to let local user groups like Seajure take on the work of answering questions from newer users and helping them acclimate to functional programming tropes.  Just like the linux kernel development list wouldn't be the first place you asked a question when having issues with your video card.

I agree with you here -- local groups are a great way to evangelize software. On the other hand, it's a lot easier to interact with a community via mailing lists and IRC than coordinating schedules to meet people IRL. The linux kernel dev list is exactly the place to ask questions when developing drivers for a video card -- those are the same kind of "users" we're talking about re: clojure.

-n

Andrew Cristina

unread,
May 4, 2011, 3:04:48 PM5/4/11
to sea...@googlegroups.com
On Wed, May 4, 2011 at 11:50 AM, Nick Dimiduk <ndim...@gmail.com> wrote:
> On Wed, May 4, 2011 at 10:52 AM, Tim Clemons <tcle...@gmail.com> wrote:
>>
>> 'User facing' and 'developer facing' communications are often in
>> opposition to one another.  Developers need to be able to deliberate on
>> ideas in a frank manner that takes feelings as a secondary consideration.
>> In this regard, the Clojure mailing list is definitely more developer
>> focused.
>
> Sorry Tim, I whole-heartedly disagree with you on this. There is no
> difference between a "developer" and a "user" if the "product" is a
> programming language.

This is not generally true if you make the distinction between users
who develop software using the language and the developers who
implement this language. That said, I'm a huge fan of the lisp
philosophy of putting the application developers on the same footing
as the implementers, so in spirit I agree with you.

I also think that while user groups are great, there are many areas
where they just do not exist and even when they do, a language's
website, FAQ and irc channel are the first places a potential user is
going to look for help getting setup and determining if the language
will do what they want.

Reply all
Reply to author
Forward
0 new messages