The instinct is to compare hypervisors, but the hypervisor is the easy part; KVM and Xen have run production workloads for years. What VMware really sold was the management layer above them: centralized inventory, host clustering, live migration, high availability, and role-based access from one console. That is where these platforms differ most from each other, so weigh the control plane before you judge any single feature. Proxmox VE and XCP-ng ship as a complete bare-metal appliance with their own web console, while oVirt and OpenNebula provide a separate manager over pools of KVM hosts.
Match the platform to how your team wants to operate. If you want an install-and-run appliance that clusters hosts, live-migrates VMs, and handles backups from one interface, Proxmox VE folds full KVM VMs and LXC containers into a single clustered console with built-in Ceph and ZFS. If your infrastructure is already Kubernetes, KubeVirt runs VMs as native cluster objects managed with the same kubectl and RBAC, and Harvester packages that idea as a bare-metal hyperconverged appliance. XCP-ng suits teams who want the XenServer model with every feature open and free of license tiers.
Plan the move as cold migration, not live. Cross-platform live migration between VMware and a different hypervisor family generally is not available, so the reliable path is to shut a VM down, export or copy its disk as OVF, OVA, or VMDK, convert it to the target's preferred format, then recreate CPU, firmware mode, NIC model, and network settings on the new side. The guest operating system usually boots; what needs cleanup is the VMware guest agent, snapshot trees, and any automation keyed to old inventory IDs.