Project Objectives

This project is trying to do the following (from Gherkin Features described in the project’s features/ folder).

Note this page is not exhaustive, it’s just trying to showcase some of the capabilities we wished existed.

Creating patches

Feature: Bulk PR creation
  As an organisation maintainer
  I need to create a PR on many repos at once
  So that I update-fix log4shell quickly

Scenario: Dependabot-like dependency updates
  Given a list of repos to maintain
  When bumping "libxml" from "1.2.0" to "1.3.0"
  Then each repo using "1.2.0" has a PR updating "libxml" to "1.3.0"
  But no PR exist on repos already at "1.3.0"

Scenario: Downstream adoption of template update
  Given a project template
  And a list of old-template-using repos
  When the template gets updated
  And a template update migration is created
  Then repos using old template get a PR updating usage

In practice, we can assume a Source that can discover repos using libxml, and a PatchDriver for bumping packages, triggering a PR via Forge.

Migration Lifecycle

Feature: Lifecycle management of a migration
  As an organisation maintainer
  I need to monitor the adoption of a planned migration from start to finish
  So that I can chase the last few non-compliance events

Scenario: Migration progress dashboard
  Given a patchnote to apply, updating "log4j" to new version
  And the PRs were already sent out
  When I open the migration's view
  Then all the organisation's repos using old "log4j" are listed
  And all the repos which adopted new version are crossed out

Repo discovery

Feature: Discovery of repositories within Organisation
  As an organisation maintainer
  I need to discover all repos for which a patch may apply
  So that I migrate all users of an obsoleted pattern

Scenario: Log4shell discovery
  Given a patchnote to apply, updating "log4j" to new version
  When I request discovery of packages
  Then all the organisation's repos using old "log4j" are listed
  But no repo list was written ahead of time

This is the dream of Source plugins, as described in Sources