I have been contributing to a variety of open projects for about 8 years now- a life changing experience in more ways than I can list. I’ve learned so much collaboratively building, fixing, documenting, testing, and leading projects I believe in. Admittedly, some of the best lessons have also been in learning to fail, or change direction.
‘Open’ is all about people, and I have met so many inspiring, courageous, brilliant and humble people from all over the world – changing the world. This post is in gratitude of those people I met, and got to know better in 2013.
I was lucky. I started my development career in an open source ‘shop’, I saw the invitation to participate early on – I had great mentors. The doorway to contribution is often hidden or warped by misconceptions of *required* skills and commitment, fears around ‘not being good enough’ or more often than not – value of participation is unclear.
Innovation beyond the imagination is underway in open projects everywhere. New ideas in everything from science to education are being invented in the open, but the invitation to participate is still unclear.
In 2013 I focused on contribution pathways, talking to groups of people (developers and educators mainly), trying to show them this door. My standard talk focuses on personal experiences, but to provide balance I circulated a survey among a few open communities asking for their feedback as well. Below is a combination of my own advice, and results from the survey.
Find a Project you Value
This seems obvious, but I’ll say it anyway: ‘contributing for conributions-sake‘ is not the way to go. Find a project you believe in, even if it’s just a small module or a documentation effort – find something that inspires or excites you.
Responses to “Why do you contribute?”
- To learn more about a specific technology or project
- To grow and develop existing skills
- For challenge and feedback from respected peers.
- Opportunity to mentor, or be mentored
- To influence the direction of a project
- To improve a process
- Because it feels good to help someone get un-stuck
- Because the success of this project matters to me (personally, or professional invested in the outcome)
- Simply for fun
- The opportunity to be a part of something new and innovative – or something that impacts the world positively.
- To better learn and understand the philosophy of Open
‘Meh’ Reasons for getting involved
- To prove to someone you know more than them.
- Because it’s expected of me at work.
- To improve my resume.
- Improving resume is an obvious side-effect of contribution, but without a greater goal this can fall flat
Find a Project that Values You
You have skills, or desire to learn – you value the project and want it to succeed but will that be enough? Once you find the door how do you get involved? How can you access whether or not your skills, enthusiasm and time will be valued? One common recommendation is to first peer through the keyhole.
Many projects like Drupal and Mozilla work in the open on IRC, find a relevant channel and observe; in absence of IRC check out forum posts or other public conversations. Do contributors appear welcome, are they largely ignored and whole heartedly welcomed and encouraged? Does the community feel accepting and tolerant? Do they lack diversity? Take some time to see how you feel about what you see – obviously there are no specific rules other than to trust your intuition.
A side note, that not all initiatives have room or time to onboard for new contributors – before taking offense to your skillset being rejected, ask good questions about what the project needs, if they have suggestions of other projects you can work on or for a time when contributors can onboard; maybe there are other tasks you can do to help out like QA.
Contribution doesn’t have to be something you schedule or add to your already-crazy calendar – truthfully the easiest contributions are those you work into your daily routine.
- Submit a patch for a bug you found and fixed.
- Review a patch, saying ‘yes this works’, or ‘no this breaks in version x of a specific browser’ will help the project a lot!
- Add documentation that helps the next person avoid struggling to install, upgrade – or use something. Even better screencast your experience and share that in a post for others to find.
- If bad grammar makes you crazy – updating wikis are a great way to improve a project.
- Share. If you write a custom module or plugin for an open source project – contribute it. Don’t wait for perfection, don’t be shy – when it works, share it.
- Share your knowledge in forums, answer questions to help others working on open projects.
- Interested in learning or teaching? Organize a hackjam or attend a meetup in your area – collaboration is one of the best ways to move a project forward.
- Share the message. Many projects operate on tiny budgets, sharing the mission and work of a project can help fundraising and better educate others on the project goals.
You Must Code
Actually no. Coding is only one way to contribute. In recent years my own contributions have been less and less about coding and more about following my learning interests, and accommodating a busy schedule at home. There really are so many ways to help, and so many ways to grow :
Some Survey Responses to “What is your primary contribution?”
- Reporting an issues/bugs
- Community Building
- Helping people in forums / dist lists
- Project Management / Business Analysis
- Issue Triage
- Design / Marketing
- Running events
- Documentation / Improving a Wiki
- Communication / Public Relations
- Mentoring / Teaching
- Submitting patches
There are no Prerequisites
Waiting to be ‘really good at something’, or waiting until code is perfect before contribution – won’t help any single project and it won’t help you. Ideas, attempts – sharing what you have, asking questions, getting feedback matter more than holding onto something for fear of imperfection or misguided sense of proprietary value. Submitting imperfection means you’ll get valuable feedback, it could mean you get contributors to your own work. Collaboration trumps silos.
Be Accountable (to yourself and others)
Perfection doesn’t exist, but you still need to be accountable as part of a community. Don’t accept unrealistic goals or deadlines, but do try to deliver on any promises or dates you agreed to, communicate when you can’t reach those goals. Communication and accountability helps projects, but it also helps your reputation and future opportunity.
Be kind to yourself, taking on too much isn’t a good balance especially if your contribution extends beyond your job.
Trust that you can rely on others in your community, until they prove otherwise
Some other best practices from the Survey:
- Prepare to mentor and be to be mentored
- Believe in yourself
- Believe in others
- Follow-through on promises
- Mind your manners
- Don’t be negative
- Be yourself
- Argue for the betterment of a project, but also expect to have your mind changed.
- Know and recognize your limits
- Check your ego
Leaving a project or an initiative is a normal thing, recognize your limits to contribute, recognize when it’s no longer fun or rewarding and find something new that suits your new interests.
Some reasons for leaving a project from the survey
- Accomplished goals
- No more work in my focus area
- No longer interested
- Project folded
- Lack of acknowledgment, proper credit
- Community changed, focus changed and no longer matched my own vision
- Started a family (paused contribution)
- Another, more interesting contribution came up
- Never stopped feeling like an outsider
- Sexism, discrimination, abuse, trolling
This post is dedicated to my two favourite project and community: Mozilla, and for all you gave me in 2013. Specific loves to my Mozillian friends, and to the community of Mozilla Reps who personify ‘changing the world’. I am Mozillian.
Keyhole Collage – Tom Magliery
Brick Wall – Dan Machold
Trust Neal Saunch