- Go on github, find the repo
- Fork the repo
- git clone https://github.com/me/forked_repo
- cd into the repo, and 'git checkout -b me_myfix'
- write your change
- cd ..
- 'pip uninstall forked_repo' so that you can work with your fork's clone instead
- Sometimes, if the repo has a setup.py, some symbolic linking needs to be setup so we can easily do 'import forked_repo'
- use 'import forked_repo'
- later, you can do 'git push origin me_myfix' and submit a pull request from Github.
I think there is a better way but I did not think about this problem much. It would be nice if someone could outline how to go about this properly. And there's almost no chance I could do this with another language since I am not as comfortable with the building/packaging with other languages.
A while back I needed py3k support in pybindgen so hacked it in and it magically got merged into the main branch. Surprisingly, as is -- I guess I can hack on the python good enough ;)
For the benefit of both the maintainers and the contributors, projects should really have advanced, comprehensive, automated code linting/style-checking/safety/etc. It should be possible to run it locally, and it should also integrate with GitHub's Pull Requests with automated comments (e.g. Travis CI).
This should instil confidence in the contributor, they know they have at least passed the basic checks.
Well, in this day and age, that kind of thing gets called out pretty quickly.