If you don't want to work on the feature (i.e. you're uninterested), it's better to be honest about it.
If you do want to work on it, but your time would be better spent on anything else, and you're willing to work on it for money, first ask if the requester is interested in paying for it and then give your estimate.
The difference between a feature request and a client approaching a freelancer/company is that in the latter case, the other party initiates the conversation with a clear expectation of paying — they only have to decide if they like the terms and price.
Being uninterested to do it for free: Yes. But when I am interested to do it for money, giving an upfront estimate based on the hourly rate is the most honest way imaginable to me.
I would rather say that asking to "implement <Feature that takes a month of work>" for free exudes several more magnitudes of arrogance.
Not all users are at the same level of experience as you (a maintainer); this doesn't make them lesser people or even lesser developers (sometimes they're just good in a different problem space than yours), but it makes their expectations a lot less realistic. Don't offload your annoyance on the requester — sometimes they don't know that their request is significantly harder than they think.
I give/gave an estimate based on my hourly rate so that this misconception is cleared of as directly as possible. If you want it for free, you better convince me that it is worth the opportunity cost for me to implement it.
You seem to be setting up a few strawmen here.
I admit that I may be reading too much into the dynamic at play here.
To be precise, naturalgradient did not say anything about the intrinsic value of users, but his/her comment says "people who have never contributed anything" and "supporting their laziness", both valid sentiments. The complaint is that the user is inconsiderate; I'm positing that it's better long-term to teach those users to be better users and eventually good maintainers. It's wishy-washy, but the good attitude of maintainers and other users is what taught me how to behave in open source.
If your policy is to charge for features, please disclaim it in your README. It's not a wrong practice, but you should set up the correct expectations.
-
Because this is HN: For anyone looking for brass, this problem is muck and there's a product opportunity here.
I wouldn't want to assume that someone asking for a feature is willing to pay for it. I also wouldn't want to make an offer unless I'm serious about doing it if they say yes.
But, if you are doing contract work, letting people know it's an option seems like a good thing?
Perhaps I'm advocating for a frivolous courtesy versus a fully rational process. Maybe the rational process works better than my suggested approach, but my intuition says no, and would prefer that it be done in a way that communicates "I can help you, but money is a requirement", not "I really wish you would fuck off, but here's an alternative".
Answer with an estimate based on your hourly rate.