Hello,
I have been thinking about making the jump towards Open Source, not just using OSS but also contributing to it.
First, some OSS projects/apps I know of are Peertube, Lemmy (right now using Voyager app), Mastodon, Matrix (used to use the Element app, gave up because I realized it was too hard for those around me who got used to Whatsapp), OpenStreetMap (through OrganicMaps), Jellyfin, and Actual Budget, Godot Engine, Luanti, GrapheneOS… I might know more, but those are the ones I remember right now.
Second, I have some basic experience with programming (mainly Java [haven’t learnt GUI yet tho], SQL, and C# for Unity videogames), but no experience entering an already created codebase yet, let alone making changes and sending them (and I admit I might need to get some practice with Git), so it is pretty intimidating. Do you have any advice about it?
Third, I’d like to hear about projects you find interesting or useful. Not neccesarily to contribute or even use them myself, but I’m interested in which other projects there are out there.
Lots of good advice here. Best method arises but cannot be sought. When you run into something broken or you don’t like, don’t set it aside hoping somebody else will fix it. Fix it.
Even if the maintainer doesn’t want your change. This is the best way to grow the seeds of software freedom you’ve already planted by caring. This is the fundamental ethos in my view of a good steward of the community. When something isn’t ideal, they make it work for themself and then are willing to share if others find it useful.
You’ve already done the first step, which is actually using FOSS software. That’s the only way to get real context on what you’re contributing to and find issues or lack of features that bothers you or is incredibly specific to your system or use case, and fix something that maybe would not have come up otherwise or no one would have time to get to.
Filtering issues by ‘Good First Issue’ as someone said is also a really good way to find tasks that are relatively easy to get your feet wet with a codebase. Don’t feel bad about taking on too many of them, it’s better that someone does them all and gains enough experience to become a regular contributor, than the rest of them collecting dust until someone else like you shows up.
Don’t worry too much about not knowing X or Y language, the great thing about being into FOSS is that you get to become a multilingual developer, which is very eye opening and educational as opposed to sticking to a language like Java and never realizing the limitations it has or even the benefits it has relative to other languages, and use that knowledge to be a better engineer overall. It’s easier to learn new languages nowadays, plenty of guides and docs to find, and AI can help for more specialized and context aware questions, just don’t fall into the trap of letting AI do the job for you, you would only be fooling yourself.
Also don’t underestimate the value of small contributions like documentation updates, translations, creating issues, etc. You don’t need to come up with a PR for every issue you create, just finding things and keeping active is enough when you don’t have the time or energy to go the whole way.
Basically two choices:
- Find a project you’re interested in and make a contribution. Many projects tag certain issues with something like “Good First Issue” as a way of lowering barriers to entry. Other things are updating documentation, fixing typos, then you can branch out into patches and pull requests.
- Make your own FOSS project.
Pretty much on point.
You don’t have to touch the whole codebase to contribute, you can only touch the parts you are familiar with.
Find something broken or missing something, fix it.
Yep … the pipeline to becoming an open source developer:
1: Use open source software.
2: Get annoyed by some small, incredibly specific bug.
3: Fix that bug yourself.
I’ve fallen victim to that a couple times personally.
And @TotallyWorthLife – it doesn’t take a whole lot of knowledge, as long as you’re working on a project that’s willing to humor beginners’ mistakes. I contributed to OpenRCT2 and KDE, both written in C++ … and I know basically zero C++. (I only knew a bit of Python and some half-forgotten PHP.) But I knew enough to look at the source code, ask devs questions about which files do what, and understand the code enough to zero in on the issue I was experiencing. In both cases, I ended up asking more experienced devs there if I’d gotten the changes right, but in both cases, I actually had. (Admittedly, one of those cases was basically by pure luck. They were using bitwise operators, which I knew nothing about, but I’d copied the line from elsewhere in the codebase where similar operations were done, and it happened to be the right one.)
Just two pieces of advice I’d have for starting out:
1: Look for something that should be a very simple fix. In both of my cases, I only needed to change one file, and only a couple lines in that file.
2: Look into fixing a bug, not implementing a new feature. Or, at least, if you want to add a new feature, you should definitely be talking to that project’s devs first to see if they even want to implement that feature, and if so, get their advice on how they’d want to implement it. Yes, you’re doing free work, but if you’re adding more code for them to maintain and then expecting them to maintain it, you’re kind of demanding that they do free work as well. A simple bug fix, though, is a one-and-done that should (at least in theory) reduce the amount of maintenance work the regular devs of that project need to do.
Use a software you like, find something you would change about it, report a bug and get maintainer approval, try your hand at it.
It’s not actually important to succeed, you will learn a kot trying. But it sure does feel good using software you helped create.
Find something wrong or something you think could be improved. Check if it’s a raised issue or on a roadmap. If not, raise the issue. Fork the repo, fix the issue, make a pull request.
Github is probably the most accessible for doing this, create an account and learn the basics.



