-
Notifications
You must be signed in to change notification settings - Fork 28
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
New monorepo repository #180
Comments
(Disclaimer: wasn't part of the community call discussions about this, sorry for only voicing this now) I'm not strongly opposed to this, this is just my two cents: It seems like we're solving a problem with nail + hammer instead of something milder e.g. glue. A problem with updates in core crates is that if an interface changes, the PR would break everything that depends on it, potentially stalling merging until everything else is ported to the new update. This essentially makes a PR dependent on a contributor plus the affected crate maintainers, instead of breaking it down to two PRs, the initial update and the porting. I think we could also do something less drastic such as adding a github action to automatically create PRs and merge them if they don't have conflicts. It can be triggered by a web hook or run on a schedule. |
I see your point, this indeed brings more job for making a change. Say if we have a monorepo which incorporates all rust-vmm crates: If we stay on the approach of having separate crates, a breaking change merged in By having a monorepo, we can bring all maintainers and contributors in rust-vmm together, give every issue/pr more exposure to everyone, which might increase the possibility it gets solved and speed it up. There are many monorepos out there, like firecracker, cloud-hypervisor, kata-containers, nydus and etc., and I think we can also have one :) I appreciate @JonathanWoollett-Light 's effort of initiating this :) And I will help maintainers doing this, if rust-vmm community decides to have one. |
Devil's advocate: a monorepo doesn't mean you publish/update all crates at once necessarily. It would make it more difficult to add breaking updates if all crates must be "synced" before merging because every change must be either universal or not. We all work async from different timezones and frankly, there's no burning need to update for example a Users selecting incompatible versions in their dependencies is not an upstream problem, too. Also a downstream user mis-configuring their Cargo.toml does not seem a good enough reason for us to make changes. I'm not generally convinced this is needed, all in all (but I am not vetoing or anything; just writing down my thoughts!). |
I agree in part, in fact yesterday in the call we decided that for now maybe it only makes sense to group similar things together, like for example kvm-ioctls and kvm-bindings or vm-virtio and vhost. What we'd like to avoid is that for example we release a new version of a crate. Then we find that by updating some crate that uses it, the version introduces some regression or some wrong API, and so we need to redo a new release.
We already do that in part with |
Crate Name
monorepo
Short Description
A monorepo to contain most rust-vmm code.
Why is this crate relevant to the rust-vmm project?
A monorepo design was proposed to assist in resolving/mitigating current issues regarding updates across multiple crates and maintaining consistency across multiple repositories (e.g. #177), this has been discussed in the sync1 on multiple occasions and consensus has been reached from attendants this is a useful change.
Todo
vm-superio-ser
,vm-superio
andvmm-sys-util
vm-superio-ser
,vm-superio
andvmm-sys-util
giving link to new monorepo locationFootnotes
The rust-vmm sync meeting is 16:00 (London, UK) Monday every other week (the next is 2024/02/05). Meeting link: https://meetpad.opendev.org/rust-vmm-sync. Meeting notes: https://meetpad.opendev.org/etherpad/p/rust-vmm-sync. ↩
The text was updated successfully, but these errors were encountered: