[Rust-VMM] Proposal for contribution and crate approval process

Peng, Chao P chao.p.peng at intel.com
Thu Feb 28 01:41:38 UTC 2019

> rust-vmm is a single project and we should be consistent in the way we build and design crates that are part of the project.
> But I think we should be careful about making sure those crates can be used independently, as much as possible. We don't want to
> produce one single VMM out of the rust-vmm crates, we want rust-vmm users to be able to build custom and configurable VMMs out
> of them.
> We may provide a generic VMM as an example on how to use those crates, but for now I don't see us providing a canonical/reference,
> production ready VMM directly from rust-vmm. And even if we do, this should not be the drive for the crates, but only a good and
> performant example for the rust-vmm crates usage.

Understand.  Then clearly define the creates boundary and interaction among creates is even more important. This is a sign that a project-level design is urgent.

> > But even before those, we need understand and write down our requirement clearly so everybody involved will be on the same
> page.
> >
> There are some common requirements, but there won't be a one size fits all set of requirements for a single rust-vmm based VMM.

That's fine. The project as a whole should try to solve the supersets which cover almost all these requirements. My point is we need to understand these requirements first, either they are common or specific to certain usage. This is good for:
- everybody to have a same language and reduce implicit assumptions as much as possible
- correctly designing

As an example, let's say, we will have all the device emulation in one crate, one may argue this can't satisfy their requirement since they want to configure their own device combination.  Then let's say, on the other hand, we have a design that each device being a standalone crate. Oh, this is crazy, I guess we will have crate pollution and crate dependency issue. So the right design will be likely a balance between the two. Then in which granularity can we build our device crates? I have no answer,  may PCI-related device in one crate or something else for example. At this point the clear requirement should help us on getting the answer.


More information about the Rust-vmm mailing list