Skip to content

Problematic dependencies for downstream projects #758

@klihub

Description

@klihub

During the review process of the recently merged Kubernetes Dynamic Resource Allocation feature it was pointed out that runtime-tools has a few problems to vendor for otherwise potential downstream projects.

The first problem is the lack of actively tagged releases, which I guess should be relatively easy to solve. The primary concern with the lack of recent tags is that "it's not clear if HEAD of the repo is always expected to be production-worthy".

The remaining problems are related to dependencies which are problematic to inherit downstream, either because of licensing choices (not a CNCF-approved license), or lack of proper maintenance. Those dependencies are considered problematic even if they are isolated within runtime-tools well enough that vendoring runtime-tools typically does not pull any of the actual code from the dependencies downstream. The list of these packages is the following, together with a brief description of the main issues and some potential remedies:

  • github.com/hashicorp/go-multierror:
    • MPL license not in the CNCF license allowlist
    • if not part of the publicly visible API, could be probably dropped/replaced with some work (we've done something similar recently)
  • github.com/hashicorp/errwrap:
    • MPL license, not in the CNCF license allowlist
    • if not part of the publicly visible API, could be probably dropped/replaced with some work
  • github.com/mndrix/tap-go:
    • no releases/tags
    • no changes since 2017
    • repo marked as archived / read-only
    • maintenance status is unclear
    • this is so little code, and in the PD, that it could be probably simply copied over as an internal package
  • github.com/xeipuuv/gojsonschema:
    • no updates since 2020
    • many open issues, some of which indicate lack of maintenance and correctness (fails tests on current go versions) issues
  • github.com/xeipuuv/gojsonpointer:
    • same as for gojsonschema
  • github.com/xeipuuv/gojsonreference:
    • same as for gojsonschema

Folks who contribute to DRA and CDI would be willing to do all the heavy lifting if we can agree what lifting with be acceptable. The hashicorp and tap-go bits look fairly straightforward.

The xeipuuv bits are less so, mostly because there does not seem to be an easy replacement/alternative implementation for JSON-Schema based verification. One possible solution would be to simply split out the JSON Schema validation function from validate into a new repo, say opencontainers/[runtime]-spec-validation. This would be a backward-incompatible change as anyone using schema-based validation would need then to start importing that repo.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions