Skip to content
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

Manifest versioning #965

Open
gmega opened this issue Oct 22, 2024 · 3 comments
Open

Manifest versioning #965

gmega opened this issue Oct 22, 2024 · 3 comments
Assignees
Labels
Client See https://miro.com/app/board/uXjVNZ03E-c=/ for details

Comments

@gmega
Copy link
Member

gmega commented Oct 22, 2024

Manifests need to be versioned so we can have smoother upgrade paths when rolling out breaking changes (e.g. #865). Ideally we'd have a constant within Manifest itself which gets initialized to whatever version we're currently using, but that's not possible with Nim so we need to understand the safest way to implement it.

@gmega gmega added the Client See https://miro.com/app/board/uXjVNZ03E-c=/ for details label Oct 22, 2024
@gmega gmega assigned gmega and benbierens and unassigned gmega Oct 23, 2024
@benbierens
Copy link
Contributor

I believe CIDs and the codex-manifest encoding come with some level of versioning.
Take a look here: https://github.com/vacp2p/nim-libp2p/blob/a3b8729cbe15682aaf6025405fbb812acbac5d2f/libp2p/cid.nim#L27
Now this is different from what I thought I remembered. But it does define 'our own' codex-manifest multiCodec.
I'm not sure how this solves the issue of versioning manifests, but I bet it's supposed to be a contribution factor.

@AuHau
Copy link
Member

AuHau commented Oct 25, 2024

CID versioning is related to CID's spec and it does not relate to our Manifest data structure at all. I am not sure if you can version codecs in CIDs, but I suspect that not, so I agree with @gmega that we should include versioning directly in the Manifest's themselves.

@dryajov
Copy link
Contributor

dryajov commented Dec 2, 2024

Ideally we'd have a constant within Manifest itself which gets initialized to whatever version we're currently using, but that's not possible with Nim so we need to understand the safest way to implement it.

I'm not sure what is meant by this? We can definitely initialize constants at compile time with defaults passed using the nim c -d: flag.

I agree however, that we do need a manifest version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Client See https://miro.com/app/board/uXjVNZ03E-c=/ for details
Projects
None yet
Development

No branches or pull requests

4 participants