Deprecate: container registry support for storage Drivers OSS and Swift
Context
Storage Drivers allow the registry to work with various object storage platforms. While each driver's code is relatively self-contained, the maintenance burden of these drivers is relatively large:
- each driver implementation is unique
- most require importing large, complex libraries with many dependencies
- making changes to a driver requires a fairly high level of domain expertise with the storage backend enabled by that driver
- each developer needs access to each backend, most of which are not free
- changes to the storage driver interface need to be validated against all implementation to ensure they are feasible
- storage drivers are an essential component of many important registry operations, and implementation errors can bubble up and effect large portions of the code
Problem
Looking at object storage options for the GitLab application itself, it appears we could only potentially remove support for OSS and the native Swift driver and still be aligned with the broader product offering. Removing and deprecating these two drivers will reduce the maintenance burden of the container registry.
Proposal
OSS and Swift are now both removed from upstream. We will deprecate these in %16.6, and remove support in %17.0.
Both services of these drivers target have an S3 compat mode, so any affected users should be able to move to the S3 driver if they're not capable of migrating their data to a supported driver.