go-chi is retracting all major versions with go1.16 new retract directive.

Posted on

In defence of chi it’s very simple, if I had to guess it looks like the author never really understood that new major versions implied backwards incompatible changes and they’ve decided to retroactively move everything away from requiring “github.com/go-chi/chi/vN”. The code is only like 1.2k loc core and 2k loc middleware (excluding tests/examples), how many incompatible chances can there be?

The chi tag dates certainly are odd and support the idea of an initial misunderstanding of go modules (or rather, many of the tags were made prior to go modules even existing):

$ git log --tags --simplify-by-decoration --pretty="format:%ai %d"
2021-02-21 15:28:20 -0500  (HEAD -> master, tag: v1.5.3, origin/master, origin/HEAD)
2021-02-10 14:44:42 -0500  (tag: v1.5.2)
2020-12-06 13:50:37 -0500  (tag: v1.5.1)
2020-11-12 17:54:47 -0500  (tag: v1.5.0)
2020-06-02 15:02:25 -0400  (tag: v4.1.2)
2020-04-16 08:17:06 -0400  (tag: v4.1.1)
2020-04-01 15:42:39 -0400  (tag: v4.1.0)
2020-03-24 11:11:21 -0400  (tag: v4.0.4)
2020-01-09 17:01:35 -0500  (tag: v4.0.3)
2019-02-26 11:11:41 -0500  (tag: v4.0.2)
2019-01-17 17:35:40 -0500  (tag: v4.0.1)
2019-01-10 10:56:14 -0500  (tag: v4.0.0)
2019-01-07 20:17:51 -0500  (tag: v3.3.4)
2018-08-27 16:34:43 -0400  (tag: v3.3.3)
2017-12-22 11:11:33 -0500  (tag: v3.3.2)
2017-11-20 07:19:03 -0800  (tag: v3.3.1)
2017-10-10 18:11:38 -0400  (tag: v3.3.0)
2017-08-31 22:07:29 -0400  (tag: v3.2.1)
2017-08-22 13:54:11 -0400  (tag: v3.2.0)
2017-08-02 17:27:05 -0400  (tag: v3.1.5)
2017-07-27 11:16:01 -0400  (tag: v3.1.4)
2017-07-25 13:24:32 -0400  (tag: v3.1.3)
2017-07-24 16:38:22 -0400  (tag: v3.1.2)
2017-07-21 10:22:28 -0400  (tag: v3.1.1)
2017-07-10 15:19:16 -0400  (tag: v3.1.0)
2017-06-21 15:28:24 -0400  (tag: v3.0.0)
2017-03-30 14:40:54 -0400  (tag: v2.1.0)
2017-01-06 15:47:52 -0500  (tag: v2.0.0)
2016-06-22 17:59:16 -0400  (tag: v1.0.0)
2016-03-31 09:51:57 -0400  (tag: v0.9.0)
2015-10-15 16:50:30 -0400 

Maybe it’s for the best, every time I blink there’s a new github.com/go-redis/redis major version