Github is a website for opensource communities. It is sort of the place in the Web where developers get together to work on projects. Because of this, I find it the best place to learn how to contribute to/start an opensource project or even just to see and learn how other developers code and communicate with each other to resolve issues. To cut the long story short, Github’s a good place to learn.

Things I have learned over at github

Here, I list some significant things I have learned over the time I have lurked around Github.

  1. Projects, the good ones, attract developers with the same interests. Communities get born around good projects. Once the project becomes big enough, Governing bodies with leaders rise up to ensure the direction of the project is properly set.
  2. There are documents that are crucial to the health of a good project. The leaders of the community/contributors need to work on these:
    1. README.md - this document contains necessary information regarding the project for everyone interested in it.
    2. CONTRIBUTING.md - this document contains the steps anyone who wants to contribute need to take and the principles they need to understand.
    3. CODE_OF_CONDUCT.md - this document contains the pledge of everyone in the community, usually promising to be welcoming and nurturing, protecting everyone from harassment or abuse, and promoting constructive attitude.
    4. LICENSE - this document takes care of legal matters (I still need to read more regarding this)
  3. Essentially, anyone should be able to contribute. Opensource!
  4. But before you do get to contribute to the source code, usually, projects require the code you are merging in to the master branch to be reviewed by other contributors. This ensures that no one messes up the code without another contributor allowing it. :)
  5. If not contributing code, you may contribute by reporting an issue.
  6. The UNIX project pioneered the idea that opensource projects must stay flexible to developers that want to change it. This means that I can take a projects code, and then hack away as my heart desires. In this sense, anyone is free to change the original project’s code in anyway they want. However, any code that will be requested to merge to the original project’s master branch should conform to the project’s set standards such as Coding Style and Project Roadmap.
  7. Github Issues is the tracker for every task or discussions related to the project. Commits could directly reference an issue by having the issue number in the commit message. For example, the commit message “Fixes #1 - check for undefined parameters” will reference issue #1.
  8. A commit that refer to an issue with the word “Fixes”, “Fixed”, “Fix”, “Closes”, “Closed”, or “Close” will close the issue when merged to the master branch.