Investigation: Solve longterm Devfile Gem Technical Debt
Overview
The devfile gem, currently being used to support the Remote Development feature in GitLab, includes a 51 MB binary containing Docker, containerd, and registry components. This binary, built using go 1.18, raises concerns about its purpose, compatibility with ARM architecture, and the fact that it is bundled as part of a Ruby gem. The gem's lack of "require: false" also poses potential problems for ARM64 GitLab 16. While the gem's functionality is minimal, it is not just a Ruby library as claimed. There is a need to separate the Go binary from the Ruby gem and improve the process for introducing non-Ruby components in gems.
Problem Statement
The devfile gem's current state includes a large binary with additional components, causing compatibility and packaging concerns. The gem needs to be improved to ensure proper separation of the Go binary and adhere to Ruby gem conventions.
Exit Criteria
- The devfile gem no longer includes the large Go binary and is focused on providing Ruby functionality. The gem's packaging process is revised to align with Ruby gem best practices, ensuring compatibility with ARM architecture and avoiding bundling unnecessary components.
- The gem's metadata properly indicates that the binary is not required for installation or usage ("require: false"). ARM64 GitLab 16 boots successfully without issues related to the devfile gem.
- The gem's open issues in the repository (https://gitlab.com/gitlab-org/remote-development/devfile-gem/-/issues) are addressed or tracked for future improvement.
Possible Solutions
- TBA