Go kit: the road ahead
- Dominant language
- Go
- Stars
- 27.4k
- Forks
- 2.4k
- PR merge metrics
- No merged PRs in 30d
Description
# Go kit: the road ahead
- This is a tracking issue for broad changes to the Go kit project
- Expect edits and updates
- No ETA at this time
### Context
- The microservices ecosystem has matured since Go kit's introduction
- Many responsibilities have, sensibly, moved to the platform/infrastructure
- Go kit has, accordingly, reduced its scope of responsibilities in practice
- Go kit is less about specific components or integrations, more about good application architecture
- The next iteration of the project should reflect this reality
- Keep and refocus on the good and useful parts, deprecate the less-useful parts
### Keep
- package transport - necessary and valuable
- package endpoint - required for service/transport interop, pending generics
- package log - has clearly proved its value in the test of time
- package tracing - has also proved its value
- package examples - move to new or individual repos
### Undecided
- package metrics - pending broader re-think and refactor
- kitgen - ownership is unclear
- package auth - I can't easily judge usefulness; seeking comment
### Sunset
- package ratelimit - less useful in modern platforms, easy to bolt-on with generic middleware
- package circuitbreaker - less useful in modern platforms, easy to bolt-on with generic middleware
- package sd - less useful in modern platforms, many test flakes, a maintenance headache
### Additional changes
- Rewrite website with new focus on architectural design and best practice
- New, expanded tutorial(s) based on lessons learned in my consulting work
### Coda: repos
- One option is to break each package (or package-group) into its own repo under the go-kit org
- Another is to retain the existing kit repo, and use version tagging
- The latter is slightly more appealing to me, for continuity and visibility reasons
### Coda: generics
- Generics, if/when they come, will change relationship between transport and service
- I expect the endpoint layer will no longer be necessary
- It's too early to say more
### Errata
- Do transport- and service-level errors need to be kept so distinct? [#807](https://github.com/go-kit/kit/issues/807#issuecomment-471485577)
Contributor guide
Assessment
This issue has not been assessed yet.