Branch/Merge Strategy

Modern software development keeps a stable master branch. Releases are tagged directly off of the master branch. This requires a solid automated test suite and enables quick release cycles. If your project matches these characteristics use Github Flow.


Legacy software development typically uses release branches, which take time to stabilize, typically due to significant manual test bottlenecks. If your project matches these characteristics use GitFlow.

Pull Requests

There are simple things you can do to get your PRs through the process quickly.

  • Don’t make GIANT PRs.
  • Address one feature at a time.
    • Any single blocker can hold up the entire PR.
  • Make your PR address only related items.
  • Address PR comments quickly
  • Acknowledge every single comment in the PR.
  • Fix your merge conflicts quickly
  • Review other people’s PRs.
    • The more people reviewing, the sooner you can get a “+1- yourself.

Code Reviews

At minimum:

  • Be civil
  • Prefix your code comments with: MUST, SHOULD, MAY, or NIT
    • This informs the committer what needs to get fixed, and what is optional.


If you modify an open-source project, make the effort to submit an upsteam PR and get your code merged.

This eliminates the long term burden of maintaining forked code, thus reducing costs for your business. It also is important to contribute to the open-source community.


Please version all software using Semantic Versioning


We are part of an architecture team at Cisco. This site is a brain-dump of open-source learnings, particularly around Docker and Kubernetes.