spf13 Google -->
I’m leaving my role as the Product Lead for the Go Language at Google. I’m super proud of …
A friend of mine who is a very talented writer recently became intrigued with open source and asked me to help her to understand how to be a good open source community member.
Open source is one of the most unusual things in the world. Is there any other profession where highly skilled professionals donate their free time to give their work away for free? Many spend long hours at their day jobs, just to spend their nights and weekends doing the same thing.
I’ve been involved in open source for nearly 20 years – I’ve started some of my own successful community based projects (Hugo, spf13-vim, Cobra, Viper, Zoop), contributed to many others and been responsible for leading some of the most popular commercial open source projects in history (Docker & MongoDB).
Over the years I’ve learned 3 rules that, when followed, are sure to make you a good open source citizen.
Not only is this a good rule for open source, but it’s also a good rule for life. A lot of open source communication is done online in written formats. Community members come from all over the world and from very different cultures, so while most open source work is done in English, it’s often not a community member’s first language. Far too often I’ve seen these differences can lead to barriers and discord in the community when people assume that others are operating with malicious intent. While it’s true that there are some mean people out there, I have found that it’s always best to assume that people mean well until they prove otherwise.
Open source is built on on the backs of willing volunteers. Many people want to help out and contribute their time and talents to the best of their abilities. Far too often maintainers of projects have the attitude of “you’re not good enough”. I’ve even seen projects reject great contributions because of a spelling mistake in a comment. If you want to foster a healthy community (or participate in one), you need to cultivate an attitude of appreciation. This attitude manifests in different ways.
With all of my open source projects, as at the Docker project, we’ve adopted a policy of never saying “no”, but instead using contributor errors as opportunities to teach our community members how to make it a “yes”. Sometimes this works by showing them how to write better code, tests, or documentation. Sometimes it’s teaching them a valuable skill. This policy is generally helpful for the project overall, as once someone is taught they often have a desire to return the favor and pay it forward by helping other, less experienced members.
Another way appreciation is manifested is by accepting contributions even when they aren’t quite right. Oftentimes someone has taken a lot of time to contribute to a project, perhaps your project, and they didn’t get absolutely everything right along the way. Perhaps the documentation isn’t quite up to snuff, or the test coverage could be better. Remember that not everyone comes from the same background – if English isn’t their first language they may be embarrassed or unable to produce the quality documentation you need. In these cases, I’ve found it’s best to appreciate what they’ve done, take what they contributed, and carry it the rest of the way for them. Some people worry that contributors will be offended if you add to their contribution, but in my experience they’ve always been very appreciative.
Lastly, one of the most important ways to show an attitude of appreciation is to be responsive and thoughtful to questions, and especially contributions, that people provide. If you aren’t able to do this yourself, perhaps it’s time to ask for help. You’ll find great community members who are happy to support.
Open source is made up of volunteers. Volunteers who don’t wait for an invitation to jump in and try to contribute. One of the best things you can do is ask “what can I do to help?”. I promise that most open source communities will not only provide many opportunities, but also the support you need to be successful.
Many people are afraid that their work will be rejected if they submit it, and this fear prevents them from contributing. I guarantee that two things will happen as you contribute to open source: 1) some of your work will be rejected, and 2) you will learn far more from these rejections than any other way. I speak not only from personal experience, but from conversations with many friends who are active contributors. To ensure that your contribution has the best chance of being accepted, discuss it with the project maintainers beforehand, during and after. They will be very open to helping.