I am relatively new to the world of open source and eager to dive in and contribute. I’ve been following the work that Foss United is doing and I am truly inspired by the community’s commitment to collaboration and innovation.
I have a background in software development, particularly in Python and JavaScript, and I am currently looking for projects that could benefit from my skills. However, I am unsure where to start. I have browsed through a few repositories and noticed that many projects have issues labeled “good first issue” or similar tags but I would love some guidance on how to effectively choose the right project that aligns with my interests and skill set.
Additionally… I am curious about best practices for making meaningful contributions. What steps should I take to ensure that my contributions are valuable? Any tips on engaging with project maintainers and the community would also be greatly appreciated.
You could try browsing the website or repo of any software you use (and like), such as your favourite music player or favourite distro. Websites of most free software will have a get involved section or there will be a CONTRIBUTING/HACKING file on the repo.
Software developed by a community such as GNOME or KDE or Debian might be good place to start, since they have good documentation and mature Code of Conduct.
GitHub’s “How to Contribute” guide is pretty decent. My only suggestions on top of that are:
Triaging open issues - reporting if they can be closed as invalid, already fixed, etc, or providing more details (such as a broken testcase) is very underrated.
Do not ask maintainers to “assign an issue”. Specifically on GitHub/GitLab - assignment can only happen to existing maintainers, so maintainers can’t even do it. If you’re working on a specific issue, feel free to mention it, but only if you’re serious about it, and ideally have something to show (like a link to a branch with changes).
If you’re picking up something large, it is good practice to open an issue, and get some early feedback on the approach to see if it fits with the project vision.
The most important pro-tip for async communication is to “provide details upfront”. Try to think of obvious questions someone might ask about your contribution:
Code review items (why is this a variable instead of a constant)
Are you planning to add test-cases?
Is this PR final, or WIP?
Are you looking for feedback on the PR now? If yes, what kind of feedback?
What is the motivation behind this change?
Are there alternative approaches you considered and decided against?
And answer them pre-emptively. So your PR description could look like:
Adds a quick language switcher to the Profile Page. This is helpful for multi-lingual users. There are no tests yet, I will add them once the functionality is finalized. I’d like some feedback on the UX design, especially around the dropdown interactions. Would a list of buttons work better here perhaps, since we only have 2 languages supported?
Another approach would have been to just use the browser supported language, but that has limitations, since that applies browser-wide, and users might only want to change the language for our website.
how to effectively choose the right project that aligns with my interests and skill set.
+1 to @Pranav1’s suggestion - pick something you use, and make a habit of checking the issue-tracker for every time $software annoys you, in any way possible - feature not documented well enough, or missing feature, or a bug you found. If you find an open issue - provide more details, put a +1, subscribe to it. If there isn’t one - file an issue.