Fork first-party Redis clients? #19
Labels
No labels
bug
compatibility
contribution welcome
duplicate
enhancement
good first issue
help wanted
invalid
pre-dates redict
question
upstream
No milestone
No project
No assignees
8 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
redict/redict#19
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Should we fork any of the first-party (or notable generally) clients? I personally need Python and Go clients.
Bonus: good opportunity to get rid of their integrations with non-free modules, which has always bugged me to no end.
https://github.com/redis/redis-py is MIT, I don't think it makes sense, at least currently.
It's more of a cultural matter, in giving people a place to migrate not only the non-free implementation but the community which has grown around it. So you can
import redictinstead ofimport redis. It's a political move to make redis obsolete and cut Redis Ltd out of the supply chain.I agree with you on the cultural and political aspect, but forking can be confusing for users and might even prevent those who do not care too much about SSPL from switching to Redict (“wait, do I need to update all my dependencies too?”).
One argument I see in favour of forking is that at some point Redict and Redis will diverge and might even become incompatible. At that point the question will be whether Redis Ltd will accept patches to official clients to keep them compatible with both projects. I personally doubt that.
Well, it's not a priority. We'll get to it in the long tail.
Afaik, those are not affected by any license change nor governed by the Redis corp. I speculate that they exist in the
redisorg namespace for reach and/or sponsorships.Another approach might be endorsing vendor-neutral / RESP-only clients. Redigo comes to mind for Go (https://github.com/gomodule/redigo).
(Even though it unfortunately does use "redis" as a package name, but the maintainer is thinking about developing a v2, so maybe they can be convinced to change it to something vendor-neutral at that opportunity).
At work we now ran in to an issue where redis has implemented new commands (HEXPIRE, HEXPIREAT, HPERSIST, HSET, HDEL) https://redis.io/docs/latest/commands/hexpire/
and these are picked up by clients: https://pkg.go.dev/github.com/redis/go-redis/v9#Client.HExpire which caused an issue for the developers. So either forking clients or in some other way make clear what features are accessible is neccessary.
If we don't fork clients, I think that they may become more and more unusable with redict as time goes on.
Since you depend on go-redis, would you be open to sponsoring the fork within your org? I also depend on go-redis so I'm down to help out.
I roped in my colleague Magnus @masv3971 who is the go developer with the issue, and he is up for working on this and co-maintain a fork with you. I'll see if I can get him onto irc to discuss about about the way forward :)
hello everyone! Nice to be here, I would like to help out with the go-redis fork.
I've got this one, it is currently the only working client for redis-compatible db in the V language, and it is intended to be redict-first.