"value":"\n <p>\"Ship \/ Show \/ Ask\" describes itself as a self-described modern branching strategy that combines the features of pull or merge requests with the ability to keep shipping changes.<\/p>\n\n<p>Each change is either a \"Ship\", \"Show\", or \"Ask\".<\/p>\n\n<h2 id=\"ship\">Ship<\/h2>\n\n<p>\"Ship\" changes are what I most commonly do with continuous integration and trunk-based development projects. Changes are committed directly to the main branch and shipped - assuming that the CI pipeline and any other automated checks pass. There is no blocking code review or pull request for \"Ship\" changes.<\/p>\n\n<h2 id=\"show\">Show<\/h2>\n\n<p>\"Show\" changes are made on a temporary branch instead of the mainline. This branch is then used to create a pull request which is closed once the CI checks pass without any code review.<\/p>\n\n<p>Once the pull request is merged, the change is deployed, but the pull request is still available as somewhere to have feedback and conversation about the change.<\/p>\n\n<p>This is something that I did today after starting to write a new feature by implementing the Decorator design pattern, and wanted others to be aware of this approach and ask any questions.<\/p>\n\n<p>Another reason for this approach is if someone wants to ensure that the CI checks will pass before merging to mainline. Some Developers worry about breaking the CI pipeline with a trunk-based approach and blocking others, so want to know that the pipeline will continue to work and they aren't disrupting other team members.<\/p>\n\n<h2 id=\"ask\">Ask<\/h2>\n\n<p>This is how I've worked on most projects before, and still with some clients where they want to review changes before merging, or maybe I want to have a discussion and review a change beforehand.<\/p>\n\n<p>This is also common when new Developers join a project or need to change some code they haven't worked on before.<\/p>\n\n<h2 id=\"conclusion\">Conclusion<\/h2>\n\n<p>I like the flexibility and balance of this approach. I prefer to work on \"mostly ship\" projects, and most of the show and ask conversations happen during pair or mob programming sessions.<\/p>\n\n<p>Some of my clients where I work with teams are \"mostly ask\" and work in a more Git Flow-type way and want to review any changes before they're merged and deployed.<\/p>\n\n<p>But if you're working on a \"mostly ask\" project and want to move to \"mostly ship\", then aiming to move to \"mostly show\" is a good intermediate step and a way to reduce shipping time or develop and build confidence in the CI pipeline before moving to trunk-based development and removing the manual review step.<\/p>\n\n<p>The full article with more information is at https:\/\/martinfowler.com\/articles\/ship-show-ask.html.<\/p>\n\n ",
"format":"full_html",
"processed":"\n <p>\"Ship \/ Show \/ Ask\" describes itself as a self-described modern branching strategy that combines the features of pull or merge requests with the ability to keep shipping changes.<\/p>\n\n<p>Each change is either a \"Ship\", \"Show\", or \"Ask\".<\/p>\n\n<h2 id=\"ship\">Ship<\/h2>\n\n<p>\"Ship\" changes are what I most commonly do with continuous integration and trunk-based development projects. Changes are committed directly to the main branch and shipped - assuming that the CI pipeline and any other automated checks pass. There is no blocking code review or pull request for \"Ship\" changes.<\/p>\n\n<h2 id=\"show\">Show<\/h2>\n\n<p>\"Show\" changes are made on a temporary branch instead of the mainline. This branch is then used to create a pull request which is closed once the CI checks pass without any code review.<\/p>\n\n<p>Once the pull request is merged, the change is deployed, but the pull request is still available as somewhere to have feedback and conversation about the change.<\/p>\n\n<p>This is something that I did today after starting to write a new feature by implementing the Decorator design pattern, and wanted others to be aware of this approach and ask any questions.<\/p>\n\n<p>Another reason for this approach is if someone wants to ensure that the CI checks will pass before merging to mainline. Some Developers worry about breaking the CI pipeline with a trunk-based approach and blocking others, so want to know that the pipeline will continue to work and they aren't disrupting other team members.<\/p>\n\n<h2 id=\"ask\">Ask<\/h2>\n\n<p>This is how I've worked on most projects before, and still with some clients where they want to review changes before merging, or maybe I want to have a discussion and review a change beforehand.<\/p>\n\n<p>This is also common when new Developers join a project or need to change some code they haven't worked on before.<\/p>\n\n<h2 id=\"conclusion\">Conclusion<\/h2>\n\n<p>I like the flexibility and balance of this approach. I prefer to work on \"mostly ship\" projects, and most of the show and ask conversations happen during pair or mob programming sessions.<\/p>\n\n<p>Some of my clients where I work with teams are \"mostly ask\" and work in a more Git Flow-type way and want to review any changes before they're merged and deployed.<\/p>\n\n<p>But if you're working on a \"mostly ask\" project and want to move to \"mostly ship\", then aiming to move to \"mostly show\" is a good intermediate step and a way to reduce shipping time or develop and build confidence in the CI pipeline before moving to trunk-based development and removing the manual review step.<\/p>\n\n<p>The full article with more information is at https:\/\/martinfowler.com\/articles\/ship-show-ask.html.<\/p>\n\n ",