I'm working on Mizu, a small Go web framework built around a simple idea: net/http is already good, frameworks should not fight it.
I've kept running into the same problems in popular Go frameworks: hidden context mutation, magic middleware ordering, reflection-heavy binding, and APIs that slowly drift away from the standard library. The Gin ecosystem in particular has accumulated a lot of technical debt and footguns, which this post summarizes well: https://eblog.fly.dev/ginbad.html
Mizu is deliberately boring by design:
- Built directly on Go 1.22 http.ServeMux
- Explicit middleware chains with clear scoping
- No reflection, no codegen, no global state
- A real request context type that still interoperates with net/http
- First class graceful shutdown and error handling
If you're happy with net/http but want slightly better ergonomics and structure without losing control, that's the gap Mizu tries to fill.