-
Notifications
You must be signed in to change notification settings - Fork 136
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
Align Filecoin-FFI Versioning with Builtin-Actors Versioning #468
Comments
@rjan90 : thanks for creating the issue. I'm capturing some notes based on my understanding from conversations last week.
I have wondered though if this change in network versioning is actually a good time to maybe break up the filecoin-ffi module into multiple? (I heard a couple of asks for it recently, but I can't remember the details - will capture it in an issue recently). I think it boiled down to the fact that some consumers only care about proofs while others only care about ref-fvm. We could allow them to update independently . (I don't know how much of a benefit that is vs. the cost of mainitaining more repos handling C and CGO bindings.) |
Relevant #fil-curio-dev thread: https://filecoinproject.slack.com/archives/C06GD1SS56Y/p1719449072359519 |
For context, we have 4 versions:
We update the FFI when we cut a new network upgrade because each FVM release checks if it supports the requested network version. If we changed anything here, we'd version by network version, not actor version, IMO.
The FFI was built to be a part of lotus, that's why it aligns with the lotus version. The go-state-types track the actors version because they provide actor-version-specific types.
Can you expand on this?
I'm not sure how tracking lotus releases versus tracking actor releases makes a difference here.
I think all this boils down to the fact that the FVM refuses to run if the network version is beyond the supported range. How about we just remove that check? |
I'm finalizing circling back here @Stebalien as part of nv23 cleanup before nv24. Apologies for the delay. Your comments make sense and I understand more than I did a couple of months ago. I'll quote respond below.
Good reminder, thanks.
I'm not up on this. Can you point me to where I can learn more?
That makes sense to me for clarity. Writing things out from a network version perspective, for each network version:
I don't know how to explain ref-fvm versions. I know there are multiple major versions at play per https://github.com/filecoin-project/filecoin-ffi/blob/master/rust/Cargo.toml . For each network upgrade, I don't know how these are impacted. I don't know how to explain rust-fil-proofs. I assume there are zero or one rust-fil-proofs major versions per network version. I assume there can be minor or patch releases that don't require a network upgrade (e.g., fixing a security issue quickly).
Understood that was the original intent. The "issue" we're facing is that there are other consumers besides Lotus (e.g., Curio). I think ideally non-Lotus consumers don't want to care about Lotus version. Curio raised this. I'm not sure if Venus cares. So what do we do? Based on my still-not-fully-complete understand, I'm good to align on network version. This would look like: 0.NETWORK_VERSION.x Dump of dependencies of filecoin-ffil based on starsI was curious... pip install github-dependents-inf
github-dependents-info --repo filecoin-project/filecoin-ffi --markdownfile ~/Downloads/filecoin-ffi-usage.md --sort stars --verbose
cat ~/Downloads/filecoin-ffi-usage.md | grep -v "| 0 |" | grep -v "| 1 |" Dependents stats for filecoin-project/filecoin-ffiPackage filecoin-project/filecoin-ffiGenerated by github-dependents-info |
We explicitly specify which versions the FVM supports just in case we introduce a feature in a network upgrade that requires a newer FVM version.
Yes.
Yes.
Not quite. We can have multiple network versions per lotus version. E.g., when we have two-stage upgrades where one network version enables some new feature and the next version disables the deprecated feature.
In the ref-fvm, we:
We'd like to switch the FVM to strict semver.
Yes. rust-fil-proofs follows rust semver so major versions indicate API-breaking changes, minor versions indicate new features, and patch versions indicate bug fixes.
Their proposed solution doesn't address their problem because patch releases and bug fixes are a thing. The only solution is to coordinate. |
I would like to see curio actually argue for why this matters to them instead of us trying to guess why they might want it. The fact that there's nobody from curio in this thread makes me think we should just close this issue and move on.
If we did anything, I'd bump to v2 and use I wouldn't use |
Thanks for the info @Stebalien. I am good to close this and maintain the status quo given Curio hasn't engaged and made a stronger case. Before doing so, I'd like to:
@rjan90 : I feel like I had seen some of the above in docs before but I can't find it now. Let me know if it exists. If not, I'lll draft. |
This is a result of discussion in filecoin-project/filecoin-ffi#468
I'm closing this now since have open the ref-fvm and Lotus docs PRs: |
* docs: document versioning scheme This is a result of discussion in filecoin-project/filecoin-ffi#468 * Update README.md Co-authored-by: Rod Vagg <[email protected]> --------- Co-authored-by: Rod Vagg <[email protected]>
Done Criteria:
The versioning of Filecoin-FFI should be updated to align with the versioning scheme used by the builtin-actors, and the Development Guideline gets cleaned up and adjusted accordingly.
Why Important:
The current tag/versioning of Filecoin-FFI is inconsistent with other repositories (Go-State-Types/Builtin-Actors) and currently maps to the Lotus version. Aligning the versioning will help maintain consistency across the project, reduce confusion, and improve the overall release process. This alignment will also help in tracking dependencies and ensuring compatibility between different components of the Filecoin project, especially around network upgrades.
User/Customer:
Maintainers and developers who depend on Filecoin-FFI.
Notes:
The text was updated successfully, but these errors were encountered: