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

[Feature Request] Are there plans to publish the snapshot crate? #4162

Closed
bergwolf opened this issue Oct 10, 2023 · 3 comments
Closed

[Feature Request] Are there plans to publish the snapshot crate? #4162

bergwolf opened this issue Oct 10, 2023 · 3 comments

Comments

@bergwolf
Copy link
Contributor

Hello firecracker maintainers,

First of all, thank you for creating such a wonderful project and sharing it with the rest of the world with open source. There are a lot of rust projects benefiting from firecracker and we are one of them :)

I'm writing in the hat of maintainers of the fuse-backend-rs project. It is a library used by the Nydus image service to provide FUSE file system support on both Linux and MacOS. Recently we've been adding hot-upgrade ability to the library, which heavily depends on firecracker's snapshot crate.

Since we do publish fuse-backend-rs on crates.io (https://crates.io/crates/fuse-backend-rs), we cannot really have a dependency on unpublished crates. Therefore, we'd love to seek advice. Are there plans to publish the snapshot crate on crate.io at some point? Or do you think it is better for us to just fork that port of code as it is not supposed to be maintained as a public library at the moment? If you have any other suggestions/thoughts, please do share them. Thanks a lot!

Cheers,
Tao

@bchalios
Copy link
Contributor

Hi @bergwolf,

Thanks for getting in touch, it is always nice to see people using (parts of) Firecracker :)

We discussed this internally and we decided that we would not like to publish the snapshot crate in crates.io at the moment. Doing so, would mean that we need to take a commitment to maintain it in a way that's more complicated for us. We would need for example to be careful with changes in its public API so that we do not break downstream projects like yours. At the moment, this would slow us down considerably.

The snapshot feature is still in Developer preview and we are still trying to consolidate API and functionality in something that makes sense for the particular case of Firecracker. For example, we have announced changes in #4137 that are related with the versioning and parts of the functionality.
TLDR; the biggest changes are:

  1. We will decouple Firecracker versions from snapshot versions
  2. We will stop using the versionize crate for (de)serializing state
  3. We will not support creating snapshots for older versions of the snapshot format.

Given that, I believe that the best way forward for you is that you fork the crate and continue development in that fork.

I hope that makes sense for you.

@bergwolf
Copy link
Contributor Author

bergwolf commented Oct 17, 2023

Hi @bchalios,

Thanks for the prompt response. We surely understand your decision and will go ahead to fork the crate and maintain it separately. And your changes in #4137 make a lot of sense and we would benefit from it as well when designing the Nydus hot-upgrade strategy. Thanks!

Cheers,
Tao

@bchalios
Copy link
Contributor

Thanks Tao,

Then I will go ahead and resolve this. Please feel free to get in touch if you have more questions regarding the snapshotting story (or anything else).

Cheers,
Babis

bergwolf added a commit to kata-containers/dbs-snapshot that referenced this issue Oct 18, 2023
As discussed with the Firecracker maintainers[1], we are forking
the snapshot crate part of Firecracker and maintain it separately, so
that we can publish it on crates.io and let fuse-backend-rs[2] and
dragonball[3] depend on it.

This is done by first forking the firecracker[4] repository and then
refactor the code directory to drop all the unrelated bits. Just so that
we can preseve as much the original git history as possible.

The initial code base is Firecracker release v1.5.0.

Kudos to the Firecracker community!

[1]: firecracker-microvm#4162
[2]: https://github.com/cloud-hypervisor/fuse-backend-rs
[3]: https://github.com/kata-containers/kata-containers/tree/main/src/dragonball
[4]: https://github.com/firecracker-microvm/firecracker

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants