Since the term “open source” was first coined in 1998, software was indeed the only thing being described by this adjectival phrase for a long time—at least in the public domain.
Gradually, the ideas of open source hardware, open source medicine, open source education, and a host of other shared creation models were being introduced to the world. The idea of many collaborating on a creation in ways that would surpass the work of one or the collaboration of a few was too appealing not to take root in other creative endeavors.
As prolific as these other expressions of open source are, open source software still gets a lot of the attention. And because of that attention, there is a certain perception about open source software projects: someone builds a community around creating open source software, and many assume the only way to contribute to that community is via code contribution. In other words, open source projects are a developers-only club.
There is no denying that developers are a key part of any open source software project, but they are certainly not the only key part. In any given open source project, there is a variety of other content beyond the code that needs to be created to make the project successful.
Reviewing all the work involved in creating a healthy open source software project, there are quite a few roles in which people can assist:
- Web developer
- Content creator (documentation, tutorials, FAQs, videos, etc.)
- Content manager
- System administrator
- QA/QC tests
- Bug reports
- Events coordinator
- User experience testing
- Advocacy and education
- Outreach and recruiting
It is possible that just one or two people can fulfill those responsibilities, and they could also be developers within the project, too. But the idea here is that they don’t have to be, and that is a lot of ground for a few people to cover. Projects have lots of room for non-developers to participate. Whatever your talents and passion, there can be room in many open source projects for your contributions.
The many passions of open source
If you are interested in sales and business development, your skills might find a unique challenge in pitching the value of a project and its community. Communication and negotiation skills are useful in areas such as fundraising and creating partnerships with other organizations and projects.
For practicing your marketing skills, many projects have teams that work on engagement, advocacy, or outreach. In some cases, open source communities don’t have folks with marketing skills, and they can benefit from your experience, no matter what level.
If keeping your mind turned to the strategy of an organization is your thing, you may find room to build these skills working with or as part of a board of directors or governance team. There are also sometimes opportunities to work with an overall community team to help define project goals and drive bigger community initiatives.
For honing your data science skills, the people working on marketing, outreach, user experience, and so forth often need to help understand the project, its users, and the ecosystem it exists in. The governance or leadership teams may have need of such skills in helping measure the community’s health and other analysis.
With graphic design skills, there is an opportunity to touch upon many aspects of the project, such as branding and marketing, user experience polish and maturity, and in support of the many other skillsets listed here—visualizing data, building strategy, or forming relationships, to name a few.
While project and program management skills have obvious benefit to software development, you can also find your skills needed in engagement, marketing, outreach, documentation, and so forth—any team can benefit from your organizational skills, and the processes and structures you create. Your skills may be the difference between a long-drawn-out-idea and creating an actual deliverable for the project.
Even though product management skills might not seem to apply to open source communities, these skills are quite useful to any technical project, new initiatives, websites being created that serve people, and all newcomer initiatives. One of the skills here is to bridge the understanding between the project and the organizations it exists within and around, such as sponsoring businesses.
There are myriad ways legal skills can be useful to a project, such as to the project leadership or community team. Projects provide ample opportunities for self-learning and direct experience working on matters such as intellectual property, privacy, liability, and the many intricacies of open source software licensing.
If you are interested in people/human resource skills, some of the project areas that can use your expertise are leadership, the community team, and any newcomer initiatives. Projects have a unique set of recruiting and retention issues that benefit from a wide variety of backgrounds. More and more projects are using codes of conduct for participants and contributors, which can benefit from an entire range of personnel management skills and experience.
Finding a project
If you are passionate about any hobby or cause in your life, you may not need to overthink what exactly your first contribution will be. There may already be a project that is closely related to an existing interest. Do you sew clothing? Projects exist that build open source patterns or feed inputs into sewing hardware. Passionate about flight? Investigate some of the many open source drone projects.
Within any of those projects, whenever you catch yourself thinking that something could be better or different, seize on that impulse. This could be your first contribution waiting to happen.
It doesn’t have to be a major earth shattering change, either. You might find a broken link or a typo in some of the project’s text. Or you’re a user of the project and you notice something is not working as expected. This is your chance to start contributing and not only improving a project on its own, but also making the cause or hobby in which you are interested that much better!
Best practices for contributing
One of the biggest mistakes new contributors can make when they try to work in open source communities is when they take their code and give it to the open source community and expect everyone to jump right in to work on it. This is equivalent to trying to drive a car on the highway without bothering to read the manual for the car or the municipality in which you are driving. This approach, while certainly bold, can lend itself to a certain amount of chaos.
Like any other new endeavor, it’s important to approach contributing to a project with deliberation and care. The most important thing a new-to-a-project contributor should do is learn. Read documentation, watch online conversations, listen in online meetings. Absorb the community in which you are about to insert yourself. Once you’re ready, follow these guidelines when you make your first contribution.
- Find a problem to solve. It should not be a major problem, as any new contributions to a project should be small. But it should be based on an actual error or missing element, rather than just changing something just because you don’t like it.
- Understand the goals of the project. For minor changes, this should not be a big concern, but still, there may be a broader reason why something is the way it is, and you should make sure your contribution does not go against that reasoning.
- Prepare for the fact not every change will be accepted. Everyone makes mistakes, and not every change will be deemed worthy. Don’t take it personally, and be willing to learn.
- Keep learning. This is a recurring theme in healthy open source communities. Be willing to listen to feedback and improve your contributions and skills.
- Don’t overcommit. Don’t let your excitement about participation lead to you breaking promises.
Open source contributions are varied and opportunities are plentiful. Be patient in your exploration of projects to participate in, and you should find something fun and meaningful to which you can connect. Once you find such a project, listen, learn, and then learn some more as you begin the processes of contributing to that open source project.