Imagine your neighbor has a garden. It's a beautiful garden, and she's out there evenings and weekends, carefully tending her petunias and impatiens. Gently pulling the weeds in between her seedlings. Carefully watering in just the right amounts.
One day, you say to her, "Hey! You should open that garden up to everybody. You know, share the joy."
"Brilliant idea," she says, and she puts a sign on her gate that says "Free flowers."
Soon after, people start coming to get flowers. Some just look and admire the garden. Some take a few for their kitchen tables. Some take handfuls to use in bouquets that they can re-sell to brides-to-be.
Soon after that, people start to offer feedback.
"You're watering these too much."
"You're not watering these enough."
"I like your purple petunias, but what you really need are hot pink ones. With white around the edges. They would match my kitchen better."
"Where are the goddamned roses? How can I sell a bouquet to a blushing bride without goddamned roses?"
She ponders these points. She was pretty sure she was watering at just the right level, but maybe she'd been wrong. She vows to have another look. She didn't think putting in hot pink petunias with white around the edges would be a big deal, it would just take some time to find the seeds and make some room. She would add that to the list. She wasn't sure about the roses, though. She'd have to do some research on what it would take to grow the roses, about the soil and climate, and sunshine levels her garden got every day. This would take quite a bit of time.
In the meantime, she hears her little ones calling her to come play. Her laundry is piling up. Work needs her. Her spouse wants a date night, and her dog needs fed. There are also some new flowers she read about and wants to try growing, but she has nothing left. She is tired. Her garden is suffering.
She needs a break, but decides that instead of closing her garden, she will till a new spot and get it ready for planting. She will open that spot up to whoever wants to plant something else. She spends a few hours preparing the soil, then lets the rose-guy know. Maybe he knows more about growing roses anyway.
"Hey, I was just trying to help. Well, if you're going to be an asshole about it, then screw you," he says. "I will take all the money I made from selling the free flowers you gave me and bash you all over the internets."
She sighs. She thought people would be happy to get free flowers, especially fellow flower lovers like herself. Suddenly gardening isn't as fun anymore. She spends less and less time tending her garden. The weeds start to overcome the flowers. People complain even more, and eventually stop coming. It will be a long time before she opens a garden again.
And thus we have the phenomenon of Open Source. An interesting Twitter conversation today between me, Chris Hartjes and Juozas Kaziuk?nas (affectionately known as Joe) spurred this blog post. They are both good friends of mine, and are never short in the opinions department, which I love. They are passionate about what they believe in, and I think that's always a good thing. Basically they were saying that replying with "Pull Requests Accepted" when users offer feedback to your software is a copout. It's an easy escape for Open Source project leaders to disregard and discount feedback. (Then we got into a discussion about intent, but that's another discussion altogether.) While I think that being open to feedback is generally a good thing, and I totally understand what they were saying, I respectfully disagree, and think that's a completely reasonable response. Also, I think there is a greater discussion to be had.
Really it comes down to the question of how much responsibility is placed on an Open Source project leader to satisfy end users? And how much is placed on a community of users (who actually know how to code and can make changes) to help fix things and make them better? The answer is, "it depends." In a perfect world, I'd say there is a shared responsibility, an equal balance where everybody wins. But this doesn't always have to be the case. Some projects aren't conducive, by design, to receiving random pull requests. And some project leaders are only running the project to satisfy their own needs and not the needs of the users, which is also totally fine. They're glad if someone else uses it, or takes it and makes it better, but they're just doing it on the side for fun, and don't really have a desire to solve everybody's problems or make it the Next Big Thing. Shouldn't this be ok too?
What I'm saying is that it's important to remember that Open Source is ultimately about choice. If you have feedback or feature requests about a project, remember that the person on the other side is doing this in his/her free time. They may be inundated with other requests or criticisms, and not getting anybody saying simply "thank you." They may have just had a child or a sick parent. They may have just been laid off. They can make the choice that other things are taking precedence over your feedback. And that should be ok. In turn, you can make the choice to react by either bashing them or taking some time to make it better.
We all know how much hard work goes into an Open Source project. We fully understand and appreciate the value that it provides. If it's something that we use to make a living, then we owe a debt of gratitude. We're getting free flowers, after all. Gratitude is really the only currency we have in FOSS.
If we don't stop bashing and abusing each other for not writing code the way we think it should be written, or for it not being perfect and polished, or for not responding to us in a way that we think we should be responded to, then we will effectively kill off Open Source. We will kill all the flowers we've worked so hard to grow. We will have nobody to blame but ourselves when there's no one left to tend the gardens.