Get familiar with git's collaboration model - there are plenty of resources for this!
Fork this repository, and push all your changes to your copy. Make sure your branch is up to date with the central repository before making a pull request. Git-scm describes this model well.
Follow these guidelines in particular:
- keep
upstream/master
functional - write useful commit messages
commit --amend
orrebase
to avoid publishing a series of "oops" commits (better done on your own branch, notmaster
) (read this)- ..but don't modify published history
- prefer
rebase master
tomerge master
, again for the sake of keeping histories clean. Don't do this if you're not totally comfortable with howrebase
works. - track issues via GitHub's tools
We are using Python 2.7. I recommend using virtualenv
to set up an environment; requirements.txt contains the necessary python modules. Beyond that, follow these guidelines:
- remember that "code is read more often than it is written"
- avoid premature optimization. instead, be pedantic and clear with code and we will make targeted optimizations later using a profiler
- write tests. These are scripts that essentially try to break your own code and make sure your classes and functions can handle what is thrown at them
- document every class and function, comment liberally