Ubuntu Kernel Next workflowΒΆ

UKN is a periodical read-only snapshot of Ubuntu linux-unstable, thus no patches will ever be directly merged in - they will reach linux-unstable first, and then percolate down to UKN in the subsequent sync phase.

digraph {
  "linux-unstable vX" [group="c1"]
  "linux-unstable vX+1" [group="c1"]
  "linux-unstable vX+2" [group="c1"]

  "UKN vX fork + patchset A" [group="c3"]
  "UKN vX+1 fork + patchset B" [group="c3"]

  "UKN vX" [group="c4"]
  "UKN vX+1" [group="c4"]

  "linux-unstable vX" -> "linux-unstable vX+1"
  "linux-unstable vX+1" -> "linux-unstable vX+2"

  "linux-unstable vX" -> "UKN vX" [label="Sync"]
  "linux-unstable vX+1" -> "UKN vX+1" [label="Sync"]

  "UKN vX" ->  "UKN vX fork + patchset A" [label="Fork + devel"]
  "UKN vX+1" -> "UKN vX+1 fork + patchset B" [label="Fork + devel"]

  "UKN vX fork + patchset A" -> "UKN vX" [label="Pull req. A"]
  "UKN vX+1 fork + patchset B" -> "UKN vX+1" [label="Pull req. B"]
 
  "UKN vX" -> "linux-unstable vX+1" [label="Merge pull req. A"]
  "UKN vX+1" -> "linux-unstable vX+2" [label="Merge pull req. B"]

  {rank=same; "linux-unstable vX"; "UKN vX"; "UKN vX fork + patchset A";}
  {rank=same; "linux-unstable vX+1"; "UKN vX+1"; "UKN vX+1 fork + patchset B";}
  {rank=same; "linux-unstable vX+2";}
}
  • Sync: periodically, after linux-unstable has been rebased on a new major release and it reached a level of maturity, UKN will take a snapshot of it.

  • Fork + devel: consumer of UKN vX forks the tree on Gitea, and start working on it (e.g. patchset A).

  • Pull req. A: once patchset A is ready, a pull request will be sent against UKN vX.

  • Merge pull req. A: assuming patchset A is sound, follows Ubuntu patches guideline and acceptance criteria, the Ubuntu kernel team will step in, take patchset A and apply it to linux-unstable vX+1.

  • Sync: at the susequent sync step between linux-unstable and UKN, patchset A will finally show up in UKN vX+1.

Wash, rinse and repeat.