A lot of developers are helping the community by making their source code public or publishing packages to npm or something like that.
Are there other ways to help? Like helping to find a bug, discussing about how to setup an application for a certain use case or anything like that?
Answering questions on Stack overflow is an example but is that the best way?
Something a lot of open source projects lack are designers and UX experts. Translation is also something a lot of people can help with. Documentation writing too.
For the programming community at large, sharing knowledge is a great thing to do. There are many channels available, blogs, wikis, even videos on YouTube.
Unfortunately I'm not a UI designer or UX expert:/
Blogs/wiki is an idea but then you would need ideas what to write about. In my dayjob I quite like helping coworkers with a specific problem to figure out what's the problem or what the best solution would be. I'm not sure how I can convert that to helping the community then
Documentation is a big thing that's unfortunately often overlooked. It's not as sexy as adding new features or fixing elusive bugs, but it can really make or break a project for others to use.
Yes, folks, whenever you see a problem or get confused by something submit a fix for it! I've submitted a PR for a Vim plugin that mentioned some weird Vin task that I added the command to do the thing mentioned. My reasoning was that not everyone knows what that meant. They accepted. I hope it has helped more novice Vim users (like myself) once it was accepted.
Like helping to find a bug, discussing about how to setup an application for a certain use case or anything like that?
Answering questions on Stack overflow is an example but is that the best way?
Generally the best way to help out is to do a thing that's needed and that you can figure out how to do. Your list includes a bunch of good options, and I've been thanked for doing all those things at one point or another. Some common growth paths include:
Using the software
Encountering bugs, problems, or small opportunities for improvement.
Discussing those informally in forums and helping people find workarounds.
Identifying some of those issues as common things other things experience as well, so filing bugs for them with clear explanations and links to related forum discussions.
Reading source code to better understand bugs.
Discussing potential fixes in developer bug threads (or in GitHub or whatever).
Submitting small fixes for simple bugs as pull requests.
Another path might be:
Using the software and reading forums/docs for help.
Answering basic questions on forums, looking to old threads and relevant docs.
Learning about common questions.
Writing blogs or forum posts about common questions.
Submitting improvements to official docs to clarify common areas of confusion.
There are other paths as well, the main thing is to use a thing so you learn about it and then use that knowledge to make it a little easier for the next person. Good luck!
Which community? This is an extremely abstract and large scale question as asked lol.
I think a good way to help the open source community is to fix bugs you find in software and documentation you use that you're capable of fixing. Open source work is extremely easy to get burnt out on. A pull request with a fix for a well documented problem is infinitely better than just a bug report of a well documented problem (which itself is infinitely better than a badly documented bug report).
The "best way" depends on the project and its need, or immediate most pressing needs. You may refer to their contrib docs or ask.
But generally, any quantity and quality contribution helps. Community support and issue reproducibility and testing being low-barrier entry ones. Next lowest barriers being translation and documentation.