Collaboration is the key for successful software development. It works best when code can be understood and contributed to by many. Sometimes we think the unwritten rules for successful online collaboration are obvious, but experience has shown again and again that it is not. So let's discuss these rules and write them down so we have them. We will discuss how to make successful code contributions to the projects we all rely on, and offer some strategies for encouraging contributions on our own projects.