I'm genuinely puzzled as to why bluntly refusing a feature, contribution, etc they didn't like hasn't worked for them. It's worked just fine for my limited experience in maintaining FOSS projects. Perhaps there is a scale aspect that I'm missing here.
But anyway, this is how we got to the point of Hickey writing this post:
- Heavy Clojure User received bunch of feedback from friends and colleagues asking why something hasn't been fixed yet in Clojure core
- Heavy Clojure User sees that bunch of stuff hasn't been fixed, so they take it on themselves to fix these issues and submit patches
- The workflow of "Submit patch -> Have Hickey review it and deny it -> Make changes -> Wait for Hickey again -> etc etc" was too slow for the Heavy Clojure User
- So Heavy Clojure User made their post describing "How to contribute to Clojure", blaming the core team for not working tightly enough with the community and spending enough time reviewing/accepting patches
- Hickey publishes this post titled "Open Source is Not About You" not entirely aimed at "Heavy Clojure User" but the community at large, while still being a reaction to that post by Heavy Clojure User
- Heavy Clojure User apologizes for the initial post, for tying Clojure with their own identity and explains a period of self-reflection has begun.
Tone is lost in text and I don't have much background. If I was thinking of contributing to Clojure, this post is reason enough to stay away from it.
Based on your explanation, I think Hickey should have simply ignored the user's post and let that be the end of it. I mentioned "blunt" response to individual contributions. That is quite different to a blanket statement with a "we don't owe you s... - f... off if you don't like it" vibe.
Without wanting to sound flippant or rude, I think they'd be cool with that. They're talking about contributions to the core language here. Not fixing typos in a README.
In mature projects like this, all the low-hanging fruit is done. You can't just take a notion some weekend and fire off a useful pull request. It requires an investment. To make a good contribution to Clojure you have to....
- clearly define the problem that needs to be solved
- get other people on the core team to agree that it needs to be solved
- document a number of ways to solve it, discuss with the community which one will work best
- let these ideas stew for a while, people might change their minds
The above constitutes 95% of the work and would typically take months rather than days. Once all that's done, coding up the implementation is the easy bit.That's a detail that, even if specifically was mentioned, would be overshadowed by the main sentiment.
It's very sad, and it's rooted in a basic misconception of what FOSS actually is. That's why such posts are important to educate people, even if it sounds drastic.
I don’t think so. It’s rooted in the expectation of open source: that code is provided with the intent of being useful. But if you never merge patches, that isn’t very useful. There’s a forking cost and people are aware of it so it’s just natural behavior.
You'd think that people working on FOSS are aware of this pattern and watch out for it. But seemingly not!
If instead a project is described as “I built this thing for me. Here’s the source. Please don't trust me, or my code, with anything valuable” expectations can be better aligned perhaps.
There can of course be middle grounds. “I wrote this useful code. If you need me to be your project manager for it, here’s how you can pay for that privilege”
Every open source project states this explicitly. In the license. Usually in all caps. Wanna see?
MIT license has:
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---
See? "No warranty of any kind." I.e. "don't trust this with anything valuable". How can this be more explicit?
GPL:
--- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. ---
See? "The entire risk as to the quality and performance of the program is with you". How can this be more explicit?
Nowhere does it state that the author is obliged to provide support, reply to issue reports, accept merge requests, or is even nice to anybody. It's great if they are, and I appreciate such projects as well, but nobody is entitled to that. So please don't assume it or berate people if you encounter the opposite. This builds false expectations in others who don't know any better. We need to help each other out to build proper understanding within the community.
But perhaps more importantly, if you really feel that your software “has no implied fitness for a particular purpose”. Don't do keynotes and conference talks claiming the opposite.