Skip to content

Provide interactive plans for peer review #147

@brynwhyman

Description

@brynwhyman

Problem

A key part of the release process is peer review of the release plan. This requires the peer reviewer to work through the plan module-by-module, confirming that the plan accurately reflects whether a new version is needed, and what type of release it should be (minor vs. patch).

The UI we have for visualising the plan is fairly readable for the purpose of creating the plan, but leaves a lot to be desired when reviewing it:

  • The easiest way to accurately get this visualisation into an external document/wiki is to screenshot it, which makes the plan completely non-interactive.
  • Even copy/pasting the text content, or spinning up a copy of the plan, doesn't provide any useful URLs for doubling checking the diffs, making this a manual operation. There are some external, hand-rolled scripts floating around to try and reduce this toil, but they're very adhoc / buggy and ideally this should be a core capability of Cow (or at least a robust, supported tool).
  • CWP releases are based on cwp-recipe-kitchen-sink, which results in giant plans that begin to exhaust the readability of the tree view. Ideally we would be able to collapse parts of the tree, or filter it.

Potential solutions

The functionality we want to expose to the reviewer is:

  • The same tree view that is rendered in the CLI, without spinning up a release in Cow
  • GitHub links to repos, version comparisons, releases, etc. for each dependency
  • (Stretch-goal) Checklist functionality so the reviewer can easily keep track of their progress
  • (Stretch-goal) Ability to collapse / filter the tree to isolate individual dependencies for review
  • (Stretch-goal) Make it easy to share the plan

A few different approaches have been put forward:

  • Option 1: Have Cow generate a static HTML / Markdown document alongside .cow.pat.json with a snapshot of the interactive tree
  • Option 2: Create a standalone web app that reads the contents of a .cow.pat.json file and outputs the interactive tree
    • This could either be a centrally hosted app that handles file uploads, or a local-first app that reads the file directly from disk and can be statically published when required
  • Option 3: A native app using a cross-platform framework like Qt

Actions

  • Decide which Option to pursue
  • Implement PoC to get feedback and trial in next release
  • Ship final product with documentation in Cow repository / Silverstripe release guides

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions