I see people arriving on lists, irc channels or conferences all the time with a clear peeve or agenda, but it’s clear they don’t understand how open source projects work and just get themselves and others frustrated and upset. In the end many go away angry with their plan/idea/bug unimplemented or unfixed. There is by no means a sure way to get whatever changes you want implemented in any open source project, but over the many years I have been involved with them there’s definitely things that improve your chances. I thought I would share a list here and see if others had additional ideas:
- Be open about how your bug/idea/plan/goal gets implemented. It may be that the community of the project comes up with a better or different way to solve your problem. You should be happy, because it is a solution. Focus on the end goal more than nitpicking about some details on the way.
- If you are just joining a community to open a dialog about your bug/idea/plan/goal, be polite and ask for feedback or thoughts from the community. Never demand or try and force a specific detailed plan on others.
- Be involved in the discussion, but don’t try and monopolize it. Force yourself to NOT reply to each and every reply to your initial interaction, only the ones where there are questions of you, or where you are adding new information.
- Have an open mind. Allow the community to explain to you why they think the way they do about your bug/idea/plan/goal. Perhaps they will convince you, perhaps you will convince them. Keep your eyes on the end goal of what you want to accomplish. Perhaps you are already there, but didn’t realize it.
- Offer to do whatever of the work you can. Even if you aren’t able to fix the bug, make the plan, have the idea, you can still offer to test solutions, write documentation, perform other functions the community needs but doesn’t have people doing. If you start working with the community your bug/idea/plan/goal might be something you can more easily discuss, since you are now a member of the community.
- Have patience. Make your case, answer questions, then wait. If your pet bug/idea/plan/goal isn’t something that high priority for the project it might be a while. Nagging people daily when they might have higher priorities is a poor approach. An occasional polite “Any news here? Happy to provide any information to move it along” is fine.
- “If you think you have a simple solution to a complex problem, perhaps you have not fully understood the problem”. Don’t be afraid to suggest some elegant solution to a complex issue, but realize that if it was that simple it would have been solved a while back.
- Know when to let go. Sometimes your bug/idea/plan/goal gets rejected by the community. Be graceful and move on. Bringing up your bug/idea/plan/goal after it’s been rejected is likely to only decrease any desire the community has to work with you.
I’m sure there’s a bunch more tips and likely the folks that need them the most won’t see this post, but perhaps some of you will find these tips useful in getting your way in a open source project.