If you want to contribute to open source, start with using open source software even if there is a better proprietary alternative. Only when you use code can you contribute meaningfully to it. Maybe it's a bug fix, maybe it's a small feature you need. Maybe it's a package for your distro. Whatever you need. And if you actually need it, then the best way is to do it in a fork and use it. When you feel like it works for you, offer to contribute it back upstream. It is fine to ask guidance to the maintainer while you do it, but don't expect them to work for you.
Avoid meaningless contributions just for the sake of contributing, like making a package for a distro you don't use ("I use Ubuntu myself, but let me contribute an Arch package I won't ever test"). Or features you don't need but think would be cool. And stop opening 10 feature requests per day: either you code them or you don't, but nobody cares about what you think would be good features. Bug reports are fine if you give proper instructions to reproduce ("sometimes it fails for me plz fix" doesn't qualify as "proper instructions").
And always remember: whatever the maintainer(s) merge becomes their burden, meaning that they don't do it lightly. If they don't want your contribution, don't take it personally: maybe they can't commit to maintaining it, or just don't feel like maintaining it. It's their right, you don't pay them. Just keep your fork in that case.