By and large, I've been a happy user of Clojure for around 6 years. I've contributed to the community, given talks, and advocated for the language in my places of work (generally with a great deal of success!). I like the language, its community and its general design principles. I have difficulties with Cognitect's general treatment of its user base. I say user base here because 'community' can be confused with the conduct on slack, twitter, and other venues where discourse occurs. It seems very clear to me that the Clojure user base has contributed very heavily to the success of the language and its ecosystem for years and the role of users seems to go unnoticed when representatives of Cognitect address users. I acknowledge that Cognitect is a consultancy first, and as a consultancy it has a responsibility to its workers and customers first. I also think there are a number of libraries maintained by Cognitect that the consultancy does not have the resources to maintain. core.async is one example of a library that:
- Doesn't require any new interface work
- Does require fixes in the code-rewriting and exception handling machinery
- Has enough small bugs with its abstractions that developers are required to know enough about core.async that the use of a concurrency library at all seems like a dubious tradeoff.
When Cognitect introduces a new tool or library, my tradeoff evaluation centers around how long this new tool or library will be either interesting or necessary to the consultancy. If I don't think it will, I'd much rather use a tool maintained by the userbase or a tool written in-house. And ultimately, I don't have a significant problem with this, but I *do* have concerns when cognitect tools displace existing efforts and live in the core of the language. This is often a poorly communicated (spec excluded, spec has advocacy has been consistent) and looks often like blithe disregard of the years of effort that existing libraries and toolchains have invested. When complaints of this nature are raised, those who raise them have been cast implicitly as non-helpers, and venues of conversation are labeled generally unproductive. On the one hand we have people accused of ad-hominem attacks or disrespect of work by Cognitect representatives, while simultaneously representatives say things like "Not everything is awesome" and participate in frankly puzzling attacks on language features that *aren't relevant to Clojure's design space*. I don't really expect any of this to change but I hope the feedback helps in some way.