microsoft / microsoft/hcsshim

Confine containerd dependency to specific binaries

Open
#2,163 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
694
Forks
304
Avg merge
1d 19h
Merged PRs (30d)
28

Description

hcsshim currently depends on github.com/containerd/containerd. This dependency is only required for the containerd-shim binary, not for the library itself.

For library users, this means inheriting an unused, substantial dependency. Stripping down the dependency graph is good for download and compilation speed, as well as auditability. Additionally, as containerd prepares for its 2.x release and introduces the new containerd 1.8 API package, trying to use hcsshim along with the containerd 1.8 API in the same downstream project introduces some nasty package ambiguities.

How about moving the commands into their own Go submodules? That way, their specific dependencies won't affect the core library, reducing the dependency tree and making it easier for downstream consumers of hcsshim.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by inspecting the hcsshim module layout and the dependencies used by the library and containerd-shim binary. Evaluate how separate Go submodules would isolate containerd from library users while preserving the command dependencies. Done means the library no longer inherits containerd, while the containerd-shim binary remains buildable with its required APIs.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
operating-systems
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.