Do you want to contribute to open-source but you are not sure of your coding skills?
I have good news for you.
Non-code contributions are more valuable than contributing code.
But what are non-code contributions? How can I make non-code contributions? Why are you bashing coders?
I will try to answer these questions in this post.
And with Hacktoberfest right around the corner, I hope this post will encourage more open-source contributions.
Like most of my posts, you can read this in Tweet format like the gods intended here.
Any contribution that helps an open-source project that does not involve writing code.
These can be anything but I have categorised it broadly into these categories:
- ✍️ Writing
- 🎨 Designing
- 🧑🔬 Testing/Using
- 👥 Mentoring
- 🧑🤝🧑 Community Managing/Organising
Let's look at each of these categories in detail.
If you are good at technical writing and creating content, then this is for you.
Here is how you can use your writing skills.
Contributing to documentation is really impactful.
Even if the project is really amazing, without documentation, nobody would be able to figure out how to use it or at least would not get maximum value from the project.
Here is a tip to help you contribute to docs:
When you first check out an open-source project, go through their existing documentation and see if you can understand or use the project from what you see in the docs.
Most likely, you will find areas that you can improve.
Open issues for these and try to create a pull request adding changes that you think are needed.
It is always helpful for projects to have a new pair of eyes look at things. New perspectives and new ideas often come from new contributors.
If you have been a user of the project and you are looking to contribute to it, then this is the best way.
You can write tutorials and blog posts to help people who are using the project.
You can also share your own insights and tips while writing these.
If the project has a dedicated blog, you can ask to publish there or there are other platforms like this where you can freely publish content.
I find myself looking for well-written and up-to-date tutorials and blogs instead of going through the documentation.
There is no doubt that these will help the project as well as the users of the project.
People from different parts of the world could use your project.
Language barrier is real and sometimes people may prefer Mandarin over English.
So, if you know Mandarin and English or any other pair of languages, translate the documentation to the other language.
This will open up the project to a whole new user base.
If your project has social media accounts, take control of it and start creating content.
Even if you directly do not have access to the accounts, get in touch with the social media manager of the project and suggest content and ways to engage with your users and community.
This will drive the project's visibility and will help gain more users and contributors.
If you are a creative person and loves designing stuff, this is where you belong.
Here is how you can use your palette to help the project.
You can put your skills to use to create artworks for the project to share on social media, blog posts and even swags. (who doesn't like swags!)
Most open-source projects have a large and a geographically distributed set of contributors.
Among other challenges, this makes it difficult to maintain consistency in visual designs.
As a designer and a contributor, you can create a style guide to ensure consistency.
As a user of the open-source project, there are multiple ways in which you can make valuable contributions.
If you run into any bugs while using/testing the project, raise them.
Open up an issue and let the code contributors know about the bug.
This will help them identify and fix bugs improving the quality of the project.
Most open-source projects are community-driven and they usually do not have a dedicated marketing team to publicise the project.
This is where you step in as a volunteer advocate and talk about the project in events and social media while encouraging people to use the project.
Here is a tip:
Don't even ask the project owners before advocating for the project.
Everyone likes free marketing.
Most open-source project maintainers/code contributors are usually too close to the project to realise bad and unintuitive UX.
I am and I know a lot of them.
Step in here wearing your user hat and report these issues.
They are always well received.
Alpha/Beta tests are controlled tests of a new feature or a release to ensure quality and user experience before making it available to the general user base.
As a user, you can sign up for the alpha/beta programs and test out the project before the new features are released and provide feedback.
Feedback from these tests always provide insights that can help in iterating over the features/releases.
Pay it forward by mentoring other contributors.
Here are some of the ways in which you can do it.
The more people there is to review code, the better the quality of the code will be.
Having more eyes on the code would mean less bugs, faster reviews and a better project.
Most projects let anyone review pull requests and comment on it.
If you have opinions, this is the place for you to go.
Are you skilled in the project's tech stack?
Can you help contributors make better contributions?
Pay it forward by becoming a mentor!
Share your experiences and knowledge and empower them to become a better open-source contributor.
There are a lot of open-source programs which connect mentors and mentees.
I had curated some of these in a previous article. You can check that out here.
Open-source projects thrive as its community thrives.
But who manages this community? Who manages the contributors? Who manages the project?
This is where a community manager comes in.
Stale issues? Follow up!
Issues without proper labels? Add them!
Does this issue still exist? Verify and close them!
Unclear issue descriptions? Ask for clarification!
Unreviewed pull requests? Request for reviews!
Help in every way you can to organise the project and make it whistle as a well oiled machine.
From my experience, project organisers and community managers are well recognised in the community as well!
A release manager keeps track of what everybody is working on and ensures that a project is ready for a release.
Some of the responsibilities of a release manager are:
- Checking with each team
- Ensuring different components and features are tested
- Organising the alpha/beta programs
This list can go on. Basically you decide when the project is ready to make a new release.
Organise project meetings.
Represent your project in conferences.
Organise community events.
This list is note exhaustive.
Great community managers go above and beyond and are key players in the success of an open-source project.
Engineers attract other engineers.
But the environment these engineers create are usually not super welcoming to non-code contributors.
So, become a steward of the community and make it welcoming to newcomers!
Host newcomer meetings, share onboarding resources, connect newcomers to mentors.
What would we do without community managers?
That's the list! Did I miss anything?
Feel free to add them to the comments below.
What other open-source related topic should I write about next?