Fast Forward

Policy

1. Package Versions

1.1 Definition

Examples
  • 1.2.3: upstream version 1.2.3
  • 1.2.3-4: upstream version 1.2.3, debian revision 4
  • 1.2.3-4+deb13u1: upstream version 1.2.3, debian revision 4+deb13u1
  • 1.2.3-5~bpo13+1: upstream version 1.2.3, debian revision 4~bpo13+1
  • 1.2.3-4-5: upstream version 1.2.3-4, debian revision 5
  • 2025-06-01-1: upstream version 2025-06-01, debian revision 1

1.2 Version Suffix

Upload Format Debian Version Fast Forward Version
Distribution non-native 1.2.3-4 1.2.3-4ffwd13u1
Distribution native 1.2.3 1.2.3ffwd13u1
Security/SRM (patch) non-native 1.2.3-4+deb13u1 1.2.3-4+deb13u1ffwd13u1
Security/SRM (patch) native 1.2.3+deb13u1 1.2.3+deb13u1ffwd13u1
Security/SRM (backport) non-native 1.2.3-4~deb13u1 1.2.3-4~deb13u1ffwd13u1
Security/SRM (backport) native 1.2.3~deb13u1 1.2.3~deb13u1ffwd13u1
Backports non-native 1.2.3-4 1.2.3-4~ffwd13+u1
Backports native 1.2.3 1.2.3ffwd13+u1
Upload Format Debian Version Fast Forward Version
binNMU non-native 1.2.3-4+b1 1.2.3-4+b1ffwd13u1
binNMU native 1.2.3+b1 1.2.3+b1ffwd13u1
NMU non-native 1.2.3-4.1 1.2.3-4.1ffwd13u1
NMU native 1.2.3+nmu1 1.2.3+nmu1ffwd13u1

1.3 Upgrade Paths

1.3.1 Debian (without format change)

Path oldstable Security/SRM (patch) Security/SRM (backport) Backports stable
non-native
(new revision)
1.2.3-4 1.2.3-4+deb13u1 1.2.3-5~deb13u1 1.2.3-5~bpo13+1 1.2.3-5
non-native
(new upstream)
1.2.3-4 1.2.3-4+deb13u1 1.2.4-1~deb13u1 1.2.4-1~bpo13+1 1.2.4-1
native
(new upstream)
1.2.3 1.2.3+deb13u1 1.2.4~deb13u1 1.2.4~bpo13+1 1.2.4

1.3.2 Debian (with format change)

Path oldstable Security/SRM (patch) Security/SRM (backport) Backports stable
native → non-native
(new upstream)
1.2.3 1.2.3+deb13u1 1.2.4-1~deb13u1 1.2.4-1~bpo13+1 1.2.4-1
non-native → native
(new upstream)
1.2.3-4 1.2.3-4+deb13u1 1.2.4~deb13u1 1.2.4~bpo13+1 1.2.4

1.3.3 Fast Forward (without format change)

Path oldstable oldstable
+ffwd
Security/SRM
(patch)
Security/SRM
(patch)+ffwd
Security/SRM
(backport)
Security/SRM
(backport)+ffwd
Backports
ffwd
stable
non-native
→ non-native
(new revision)
1.2.3-4 1.2.3-4ffwd13u1 1.2.3-4+deb13u1 1.2.3-4+deb13u1ffwd13u1 1.2.3-5~deb13u1 1.2.3-5~deb13u1ffwd13u1 1.2.3-5~ffwd13+u1 1.2.3-5
non-native
→ non-native
(new upstream)
1.2.3-4 1.2.3-4ffwd13u1 1.2.3-4+deb13u1 1.2.3-4+deb13u1ffwd13u1 1.2.4-1~deb13u1 1.2.4-1~deb13u1ffwd13u1 1.2.4-1~ffwd13+u1 1.2.4-1
native → native
(new upstream)
1.2.3 1.2.3ffwd13u1 1.2.3+deb13u1 1.2.3+deb13u1ffwd13u1 1.2.4~deb13u1 1.2.4~deb13u1ffwd13u1 1.2.4~ffwd13+u1 1.2.4

1.3.4 Fast Forward (with format change)

Path oldstable oldstable
+ffwd
Security/SRM
(patch)
Security/SRM
(patch)+ffwd
Security/SRM
(backport)
Security/SRM
(backport)+ffwd
Backports
ffwd
stable
native → non-native
(new upstream)
1.2.3 1.2.3ffwd13u1 1.2.3+deb13u1 1.2.3+deb13u1ffwd13u1 1.2.4-1~deb13u1 1.2.4-1~deb13u1ffwd13u1 1.2.4-1~ffwd13+u1 1.2.4-1
non-native
native
(new upstream)
1.2.3-4 1.2.3-4ffwd13u1 1.2.3-4+deb13u1 1.2.3-4+deb13u1ffwd13u1 1.2.4~deb13u1 1.2.4~deb13u1ffwd13u1 1.2.4~ffwd13+u1 1.2.4

1.3.5 Fast Forward (with format conversion)

Path oldstable oldstable
+ffwd
Security/SRM
(patch)
Security/SRM
(patch)+ffwd
Security/SRM
(backport)
Security/SRM
(backport)+ffwd
Backports
ffwd
stable
native
→ non-native
(new upstream)
1.2.3 1.2.3-0ffwd13u1 1.2.3+deb13u1 1.2.3+deb13u1-0ffwd13u1 1.2.4~deb13u1 1.2.4~deb13u1-0ffwd13u1 1.2.4-0.0~ffwd13+u1 1.2.4
native
→ non-native
(no new version)
1.2.3 1.2.3-0ffwd13u1 1.2.3-0.0~ffwd13+u1 1.2.3+b1

1.4 Version Tracking

1.4.1 Tracking Colors

Version tracking by comparing source and all their binary packages on all architectures, after removing vendor suffix:
  • all upstream versions are equal and all debian revisions are equal → green
  • all upstream versions are equal and one or more debian revision is lower → orange
  • one or more upstream version is lower → red
  • all upstream versions are equal and one or more debian revision is higher → purple
  • one or more upstream version is higher → purple
  • source package is in derivative, but not in debian → blue

1.4.2 Version Comparison

architectures:
  all
  amd64
  arm64

suffixes:
  ffwd[0-9]u[0-9]
  ~ffwd[0-9]+u[0-9]
  0ffwd[0-9]u[0-9]
  0~ffwd[0-9]u+[0-9]
  0.0~ffwd[0-9]u+[0-9]
  0ffwd[0-9]+u[0-9]

for derivative_distribution in derivative_distributions:
  for each derivative_source_package in derivate_distribution:
    if derivative_source_package not in parent_source_packages:
       blue .

    if derivative_source_package_upstream_version > parent_source_package_upstream_version:
       purple .

    if derivative_source_package_upstream_version < parent_source_package_upstream_version:
       red .

    if derivative_source_package_upstream_version = parent_source_package_upstream_version:
      if derivative_source_package_debian_revision_without_suffix > parent_source_package_debian_revision:
         purple .

      if derivative_source_package_debian_revision_without_suffix < parent_source_package_debian_revision:
         orange .

      if derivative_source_package_debian_revision_without_suffix = parent_source_package_debian_revision:
        for each derivative_binary_package in derivative_source_package:
          if derivative_binary_package in parent_binary_packages:
            for each architecture in architectures:
              get highest_version

            if highest_version is empty:
               green .

        for each derivative_binary_package in derivative_binary_packages:
          for each architecture in architectures:
            if derivative_binary_package_debian_revision_without_suffix > highest_version:
               purple on this architecture for this derivative_binary_package

            if derivative_binary_package_debian_revision_without_suffix < highest_version:
               red on this architecture for this derivative_binary_package

         green .