What is the common good practice on Github Software Development in reality?

37 views Asked by At

Being a software development student, I've recently studied some concepts and tools like GitHub and Docker. And I'm interested in the industry or community “Good Practice” for using GitHub in software collaboration. As I understand, these practices are rules followed by experts in general to enhance the development process.

So far, my coursework has introduced me to several practices, such as creating branches for changes instead of directly altering the main branch; submitting changes via pull requests for peer approval, forcing reviews by one or more team members; clearly labeled and titled issues for easy identification; committing small changes (but not making large change in one commit); writing meaningful commit messages; using Docker for managing dependencies; specifying exact versions of dependencies; implementing GitHub Actions for CI/CD; maintaining a detailed README.

[Question] Considering these rules might be fit or not based on project scale and nature, so let say now you are in a team with small to medium-sized projects, specifically a web application with data analysis features, in a team of 4-10, what practice other than above would you appreciate if your teammate do it? (I am not sure the practice I listed above is suitable for real world, but I guess in certain degree it is good for software development)

Additionally, I'm open to exploring alternative methods and tools beyond GitHub for software development collaboration.

1

There are 1 answers

1
Hujaakbar On

Firstly You should ask this kind of questions on Discussions section of StackOverflow.


You pretty much outline and know the basic good practices.

As for general workflow there is no one fits all golden rule. You should research it yourself and try out different tools in your team. Often times it is just matter of preference. For example I hate MS Projects but there are plenty of people who like it.

Some Suggestions:

For small team project management you can use GitHub Projects, or Trello.

For communication: slack

GitHub Discussions is also a good tool to be used during development.

Alternative to GitHub is Gitlab and many people praise Gitlab for its CI/CD implementation.

Using Docker alone is good enough for smaller or simpler projects but once your project gets more complicated, you may inevitably need to start using Kubernetes.


Git

In the case of using git, it is called workflow

There are many workflow

  1. Feature branching/GitHub Flow
  2. Trunk Based Flow
  3. Git Feature Flow
  4. Git Flow
  5. Enhanced Git Flow
  6. One Flow
  7. GitLab Flow
  8. Forking Workflow

Check them out yourself and choose the one you seem the most appropriate for your use case.

Links:

Centralized Workflow

  1. https://www.atlassian.com/ja/git/tutorials/comparing-workflows
  2. https://www.atlassian.com/git/tutorials/comparing-workflows#centralized-workflow

Trunk Based Flow

  1. https://www.optimizely.com/optimization-glossary/trunk-based-development/
  2. https://www.optimizely.com/optimization-glossary/feature-flags/
  3. https://www.optimizely.com/optimization-glossary/feature-toggle/
  4. https://martinfowler.com/articles/feature-toggles.html
  5. https://trunkbaseddevelopment.com/
  6. https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development

Feature branching/GitHub Flow

  1. https://docs.github.com/en/get-started/quickstart/github-flow
  2. https://www.atlassian.com/ja/git/tutorials/comparing-workflows/feature-branch-workflow
  3. https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow
  4. https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
  5. https://scottchacon.com/2011/08/31/github-flow.html

Git Flow

  1. https://www.atlassian.com/ja/git/tutorials/comparing-workflows/gitflow-workflow
  2. https://nvie.com/posts/a-successful-git-branching-model/
  3. https://www.gitkraken.com/learn/git/git-flow

Enhanced Git Flow

  1. https://www.toptal.com/gitflow/enhanced-git-flow-explained

Git Feature Flow

  1. https://medium.com/dev-managers-handbook/git-feature-flow-125d28dfef1e

GitLab Flow

  1. https://github.com/jadsonjs/gitlab-flow
  2. https://microfluidics.utoronto.ca/gitlab/help/topics/gitlab_flow.md
  3. https://about.gitlab.com/topics/version-control/what-is-gitlab-flow/
  4. https://about.gitlab.com/topics/version-control/what-are-gitlab-flow-best-practices/

One Flow

  1. https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow

Forking Workflow

  1. https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow

General

  1. https://nira.com/git-flow-vs-github-flow/
  2. https://www.gitkraken.com/learn/git/best-practices/git-branch-strategy
  3. https://medium.com/@patrickporto/4-branching-workflows-for-git-30d0aaee7bf