-
Notifications
You must be signed in to change notification settings - Fork 256
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Towards better versioning policy #290
Comments
Re: Let's not forget that whole debate about switching to cloudflares branch of |
Only if cloudflare can stop rebasing their commits 😅 Unlike us, cloudflare rebase their changes/commits on top of latest main branch of golang/go (ir)regularly, which is pretty tricky to maintain since we are also making changes based on theirs. |
Thanks for opening this issue, @gaukas! Regarding this:
I assume you mean that I don't know if it's helpful, but I have been recently using https://github.com/icholy/gomajor to check whether I need to upgrade to major versions of OONI dependencies. |
I've used both `gomajor` and `go get -u -v ./...` to update all the dependencies I could. It still feels impossible to upgrade snowflake because of the incompatible dependency with Psiphon (I previously described this issue at refraction-networking/utls#249 and there has been some very useful and much appreciated follow-up discussion at refraction-networking/utls#290, which possibly will lead to solving the whole issue, which is contingent to current uTLS versions used by Psiphon and Snowflake, in a systemic and more fundamental way). Part of ooni/probe#2722.
Hi @bassosimone, thanks for the reply. Yes, that's exactly what I meant. While third-party tools (such as the one you mentioned, For now I am leaning towards the last two options, with a strong preference in tagging a |
As discussed before, to reduce the extra workload and confusion in maintaining uTLS across multiple different Go versions, uTLS is set to support the top 2 MOST RECENT Go (minor) versions. e.g., for April 02, 2024, the latest Go version is Go 1.22.1 so we will support Go 1.21 and Go 1.22. That is to say, once uTLS bump up the minimum version required to
go 1.21
, Go 1.20 and older version of Go will no longer be able to build and run programs built with uTLS as a dependency.We also acknowledge and are deeply concerned about another issue mentioned in #249, that past updates to uTLS have broken backward compatibility for a few times for various reason, causing old code no longer compile with newer version of uTLS. While there are human errors in the maintainers of uTLS by mistakenly removing/renaming public interfaces, other uncontrollable factors such as
crypto/tls
making breaking changes to their function signature orcrypto/tls
exporting a type in a name existing in uTLS are more concerning.Onward, here's a few possible versioning policies we can adopt, with pros and cons for each:
go mod
's automated dependency update will not work at all.go mod
continue to work.go mod
and dependents of uTLS can be updated anytime.The text was updated successfully, but these errors were encountered: