Comment by abraae
7 years ago
I haven't used Clojure much but what I hear is mostly great. And I love this rant, its always refreshing when people speak their minds.
But.... Rich is pushing things a little too far I believe.
On the front page of the Clojure web site, under the section 'Rationale", his very first 6 words are:
> "Customers and stakeholders have substantial investments [...]"
Those words do not sit well with (from the rant):
> "[..] you are not thereby entitled to anything at all. You are not entitled to contribute. You are not entitled to features. You are not entitled to the attention of others. You are not entitled to having value attached to your complaints. You are not entitled to this explanation."
I get it, Rich is making a point, and its a fair and unarguable one - if he indeed has no loyalty or feeling whatsoever towards said Customers and Stakeholders.
But in the real world, we want our work to be valued by others, and I'll bet that the stewards of Clojure feel just the same and maybe shudder just a little.
Rich Hickey stands for good design. That means saying "no" to a lot if ideas that are good, but not part of the vision, and it means not running experiments on your users in the main releases. Whether he reaches that ideal, I dunno, but he lays out the vision pretty clearly when he speaks. It isn't the only way, but it is Clojure's way.
When he talks about customers and stakeholders, he is talking about people who have bought in to that design. It is very easy to support his position here. Rich knows exactly how he wants to program and the man is a visionary of data-driven programming and thinking. If you don't like that vision, maybe don't use Clojure and find a different lisp.
Great design is a very foreign idea to a lot of mainstream software developers - most of them, sooner or later, go for the "big rewrite" because they didn't get the design right to start with. Things like Python 2 -> 3 spring to mind (breaking changes to print! whoever thought that was a good idea didn't respect the language users). With that rational, he is promising not to do exactly what the Python people did.
There is a big difference between design and bug fixes. There are many small tickets with bug fixes already written that have not been merged into Clojure citing Rich’s time. Sometimes months or years go by, even when the Jira thread includes supporting comments from Alex Miller at Cognitect. Small fixes that improve the language without altering its design, making core functions more stable with edges cases, and they never make it into the language.
quoting _halgari from June 2016(on clojure)[https://news.ycombinator.com/item?id=11884028]:
> Something that is often very hard to understand (it took me years to do so). Is that maintaining a language is insanely hard. Everything has a cost. Let me give a good example: A few years back someone submitted a patch that improved the error messages in Clojure. Worked great, just a single extra "if" and a message. It was committed to master. Then people's code got way slower. Why? Well this was a often used function and that single if blew the JVM inline budget causing that function to never be inlined. And that improvement had to he yanked out.
2 replies →
It's caveat emptor, even when you pay $0. When you choose an open source tool or library for your project, or even a closed source one, you need to evaluate what support / bug fixes / modifications / enhancements you will get in the future and if it will meet your needs. Are you prepared to fork or workaround things where it doesn't meet your needs. Or is it better to choose another library or tool?
Loyalty and valuation are not equivalent to entitlement.