- try to discuss issues on the bug trackers (or IRC), propose a solution, then send a patch/PR.
- find an itch on the project and scratch it. I did that for grml-etc-core [0], and helped port some advanced functionality to *BSD because I found it cool, but it only worked well enough on Linux. I also add some specific info in documentation when needed [1]
Don't work alone on a task before pushing a patch to the devs, make sure someone's aware of your work.