Summary
We currently rely on argoproj/pkg for some relatively trivial utilities. I believe the original idea behind the package was to share common utilities among the argoproj suite. In practice, I think the uses of pkg by the 4 main Argo projects are fairly disjoint.
Motivation
- Bumping versions is a pain
- Maintaining a separate repo means separate issues/PRs/dependabot/etc.
- One has to avoid introducing breaking changes to functions that probably aren't even shared
Proposal
We should minimize Argo CD's use of pkg. For whatever utilities remain that are actually shared by all or most Argo projects should be extracted into their own purpose-specific modules with their own documentation and minimal dependencies. Ideally these modules would be treated as their own micro-projects (think similar to the logrus bridge), ideally useful to the broader ecosystem instead of just Argo.
Uses by the top 4 projects:
Command:
grep -r -h '"github.com/argoproj/pkg' **.go | sed 's/^[^"]*"//' | sed 's/"$//' | sort | uniq
Argo CD
github.com/argoproj/pkg/grpc/http
github.com/argoproj/pkg/kubeclientmetrics
github.com/argoproj/pkg/stats
github.com/argoproj/pkg/sync
github.com/argoproj/pkg/time
The exec module is apparently unique to Argo CD and should probably just be moved to the argo-cd repo.
Argo Events
No uses.
Argo Rollouts
github.com/argoproj/pkg/grpc/http
github.com/argoproj/pkg/kubeclientmetrics
Argo Workflows
github.com/argoproj/pkg/grpc/http
github.com/argoproj/pkg/stats
github.com/argoproj/pkg/sync
github.com/argoproj/pkg/time
Summary
We currently rely on argoproj/pkg for some relatively trivial utilities. I believe the original idea behind the package was to share common utilities among the argoproj suite. In practice, I think the uses of pkg by the 4 main Argo projects are fairly disjoint.
Motivation
Proposal
We should minimize Argo CD's use of pkg. For whatever utilities remain that are actually shared by all or most Argo projects should be extracted into their own purpose-specific modules with their own documentation and minimal dependencies. Ideally these modules would be treated as their own micro-projects (think similar to the logrus bridge), ideally useful to the broader ecosystem instead of just Argo.
Uses by the top 4 projects:
Command:
Argo CD
The exec module is apparently unique to Argo CD and should probably just be moved to the argo-cd repo.
Argo Events
No uses.
Argo Rollouts
Argo Workflows