How do I start contributing to Rust? And more specifically web-frameworks like Actix-web?
Why I want to contribute?
I strongly believe in Rust and it's potential, but want to make it more accessible or strong as a language for web-development.
I am an advocate for free and open-source software.
Hobby.
Learning.
Want to use my skills to actually do something useful (even if it are just small contributions).
Doubts
I am programming for a long time and am also a professional developer (not in Rust), I did make some projects in Rust too, but I doubt if the skills are good enough to actually make valid contributions. I do not have the deep and full understanding of Rust like some of the elites on this forum.
What kind of contributions could I do with my current skill-level?
Getting started?
How would I get started? I guess I could take a look at the Git issues on e.g Actix-web and start making pull requests with fixes. But that doesn't seem very efficient because there would be no communication between me and the other contributors, other people might fix the issue before me or better then me, resulting in my work being ignored.
I unintentionally already contributed a bit to Actix-web. More specific: the community based documentation. People Googling issues like "actix web websockets" or "persist cookies actix-web" will stumble upon posts of my asking and solving the issue.
Just write software in Rust, explore the ecosystem. While building your projects you'll run into limitations like bugs or lack of features. After some time you'll be able to understand library code and have more experience - then you'll naturally start filling the issues, explore code base to understand how things work, creating pull requests, communicating with developers.
Contributing for the sake of contributing or learning is not always the best thing you can do, because maintainers are maintaining the software, not teaching people to code. Some projects may be willing to teach people, but not in general. Better contribute when you are deeply familiar with a tool and can really bring some value to the ecosystem.
In any large project, if you pick an issue that is not recently active, then there is a very low probability that it will be fixed between the time you start working and when you have a PR ready.
Also, there will always be reasons why your work might not be accepted, or might require substantial further modifications, not just “someone else got to exactly this change before you did”. So, you have to accept some chance of those outcomes, and do it anyway.
Most projects do also have some place where work is coordinated, whether that is the issue tracker, a chat room, or something else. Finding that place and asking there may be worthwhile, but it will usually go better if you have a specific idea based on an open issue that you can ask clarifying questions about, rather than “how can I contribute” broadly.