go-kit / go-kit/kit

Go kit: the road ahead

Open
#843 20 comments 107 reactions 1 assignee Claimed by @peterbourgon View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.