Hi, I dont know if this is the right comunity to ask, please tell me otherwise. I apologize for my poor English, I’ll try my best!
I’m a professional software developer with about 10 years of experience. I have only worked on closed-source enterprise projects throughout my entire career. I am not familiar with the workflow involved in FOSS projects.
Is there a guide that summarizes or documents all the information or standards you need to know to contribute to any FOSS project? This includes the standards for commit messages, tags, and how to propose a new feature or report a bug.
I understand that this may be basic information for many of you, but for me, it feels a bit overwhelming. Also, I think that I’m afraid of working on a codebase that I’m not familiar with. There is also a fear of my own code being judged online. You know, you can never escape imposter syndrome.
I appreciate any info, hopefully I’ll be helping on improving some of my favourite apps in the future.
From my own experience:
- Start using open source stuff.
- Get annoyed by lack of a feature / a bug / something
- Fix it, without ever intending to upstream the changes
- Notice somebody has made an issue about a thing you already fixed
- Send the patches to upstream.
- Repeat ad infinitum.
That’s pretty much how I’ve ended up contributing to a plethora of different stuff.
Yep. I’ve submitted patches to a few projects. JD GUI seems dead, there were issues regarding the same thing I fixed. Another Gradle plugin I submitted a fix for got merged pretty much right away. As quick as I would expect for people volunteering their time that is.
I don’t think there’s the one process, however, GitHub seems to be the most popular platform. There the process is usually the regular git branch/pull request workflow.
The best way to start would probably be, to simply look up where the project you’re interested in is hosted/has its forum and then ask there. Some projects (like Linux) have a rather formalized process, while others (like many smaller, hobbyist tools) are rather lax.
Actually, same here! I used to get overwhelmed by just the thoughts of contributing to GitHub projects too, because I think my code was kinda bad and I didn’t want to get judged at. Whenever I thought about repo maintainers/reviewers, I always imagined that they would be all like Linus Torvalds, and I was afraid of getting shamed for my poor code, lol!
I was lucky because I had skills in drawing arts, so I started by contributing icons to an Android icon pack project, which didn’t really require coding skills, and is actually something I know I can do. The maintainer of my first contribution turned out to be a very friendly and cool person instead of someone grumpy and direct I always had images of in my head! From there, I gradually learned about the tools and coding a project.
I think the truth is if you want to contribute, even when you think your code isn’t up to standard, you really still need to start somewhere. If you don’t feel any confident, start forking a small project with some incomplete milestones that you know is something you can do, I think? Some projects that have chatrooms that you can ask if you aren’t sure about anything should be a really good place to get started too.
Just remember that not all reviewers are out there to chew on your code, lol.
Start by reporting bugs is a good start even for those who don’t know programing, for developers many project have documentation usually on CONTRIBUTING.md or at the README.md itself, includes code of conduct, Pull Requests, Bug Reports etc…
Example for Lemmy https://github.com/LemmyNet/lemmy/blob/main/CONTRIBUTING.md
Is just a link to docsHere’s a better example: https://github.com/honestbleeps/Reddit-Enhancement-Suite/blob/master/CONTRIBUTING.md
Thanks! I’ll check all those links
I try to get involved with the smaller tasks first. Right now, I’m trying to help organize issues on lemmy and lemmy-ui. I mark duplicate issues, reply to ask for more info and so on.
Sometimes I also try to help translate a project.
On the software side of things, I usually just fork the project (given it’s on github), and start poking around the codebase, try compiling it, maybe try to change a few things. When I’m comfortable, I’ll look into the issues, sometimes they are marked as good-first-issue, and I focus on them first.
But any maintainer out there is happy to receive a pull request, so no need to worry about making an impression or being “allowed” to participate first.
In addition to what others said,
There is also a fear of my own code being judged online.
Please don’t worry about it. This is how you get better in your career/skills. You need other’s judgement to think about your code and how you can improve it and your skills. :) Thats the huge bonus you get out of code reviews.
Each project will have different standards to follow. It will depend on which you are interested in.
I’m a developer myself and from my understanding every project have their own set or rules, policies and guidelines. No two foss-projects are necessarily the same.
Best thing to do is to find a project you like then look at their PR documentation, or maybe hit up someone who’s a regular contributor to that project.
Something I find helpful in battling the mental issues I get from it is to just look at something green for a while or take a break. Also, confronting people in dms makes them more chill.
(I don’t know what kind of hypnosis GitHub and GitLab use, but everyone seems to be more intense on these platforms)
The FSF has some materials but this is from their perspective. There will be wide differences.
My advice, choose a project your interested in. A low hanging thing to do is when you find a bug put in a good bug report. If you want to go further, debug it yourself and send the patch or submit a pull request. Keep in mind most larger projects will have a developer mailing list or forum. One can talk through stuff on that forum to make sure what your doing is of interest. As far as VCS, I think most people use git but that too probably varies. Keep in mind to… the lead developer(s) will decide if they choose to include your patch in the main line.
I am also just trying to dip into Open source projects. I googled around and stumbled upon this. Maybe this might help you get started.
All the best!