Replies: 3 comments 7 replies
-
I like this and it makes sense to me. Curious to see what other teams think. Since this differs slightly from normal semver, should we name it something else? Like "Network Semver" or something similar? |
Beta Was this translation helpful? Give feedback.
-
Since celestia-app can still be used as a Go dependency, the proposed network SemVer has the downside that consumers of the celestia-app Go dependency will get no guarantees about when a version is breaking. Therefore, I think celestia-app releases should strictly follow SemVer at least until celestia-app isn't a consumable Go dependency. After that, I think we can revisit the proposal to adopt network SemVer but I don't see a compelling reason to include the network version or app version in the release version. As far as I can tell, that's less flexible than having release versions based on breaking changes which may happen more frequently than network version or app version bumps. As an engineer, I am conditioned to treat X.Y.Z as a SemVer number. I think we should be extremely careful about repurposing that format for the proposed network SemVer because I expect consumers of celestia-app to make incorrect assumptions when they see a X.Y.Z release number. If maintainers feel strongly about adopting a network SemVer format for releases, I think we should deviate from the X.Y.Z format to distinguish it from the real SemVer. Out of curiosity, are there any other projects that have adopted something like the proposed network SemVer? |
Beta Was this translation helpful? Give feedback.
-
We agreed to use SemVer for celestia-app releases. |
Beta Was this translation helpful? Give feedback.
-
We need to set and follow a consistent version scheme that indicates to node operators the varying importance of upgrading. Noticeably there are two signals worth producing:
As a follow up discussion it may be worthwhile to further separate the versioning of Celestia's libraries and clients from Celestia's nodes (consensus and networking). We are already looking at creating separate go.mod's for popular packages that we believes others will use. This potentially runs orthogonal to the semantic versioning we apply to the binaries that are released.
This conversation should ideally involve
celestia-node
maintainers given the likelihood that the binary is eventually combined.We should also be mindful of the amount of versions we plan to currently maintain and make sure this is correctly communicated to the public.
As a proposal, I would suggest remaining with the three numbers X.Y.Z [Major.Minor.Patch]. Major signifying breaking network compatibility change. Patch indicating non-breaking fix that node operators should immediately upgrade to and lastly, Minor, indicating optional non-breaking features and improvements.
Ideally every minor release would each be supported and updated whenever there was a fix i.e. I can update from v1.0.0 to v1.0.1 instead of needing to jump to v1.2.1. However, this implies a lot of potential maintenance work for the engineering teams. If we are to only support the latest minor release, and require users to constantly update, it begs the question if three numbers are even necessary. Perhaps we make the Minor and Patch numbers increment independent of one another (i.e. if you see a patch update you should immediately update but if you see a minor update you don't necessarily need to).
This also brings in to question how regular we plan to upgrade the binary.
Beta Was this translation helpful? Give feedback.
All reactions