Initially I started this project shortly after I moved from virtualbox to qemu. The move was really a long term task. Even if I wasn't satisfied with virtualbox anymore - as long as it was running somehow there was no urgent necessity. However, one day was the day I started to move. It was triggered as I got a new powerful computer and I wanted to use PCI passthru - thus there was no alternative to qemu.
Like with every new software the first steps with qemu were really hard. I checked out some tools like aqemu and libvirt. But at the end I decided to using a shell script to run a virtual machine. It was the most optimal method to me. Shortly after there came up the wish to be able to work more comfortable with the virtual machines. Additional there was the question how to automatically start/stop virtual machines if the host does shutdown or start. Now, libvirt can do this but was out already. Even I prefer simple solutions. So I started with a simple script called qemu-init to handle all virtual machines the same way. And keeping the usage of multiple virtual machines in mind a small wrapper qemud was followed quickly.
Through the time I increased the functionality by adding more (small) tools. Unfortunately the complexity of code increases too. And like every growing project things changed. The code was made more flexible and efficient, some functionality was redesigned. At some point I decided to put all control function into one tool: qemu-adm. All the others will be handled as libraries, except qemud which acts like a stop/start daemon. Thus to the user side there is one tool (qemu-adm) left only. With multiple tools one have to know which tool will do the a specific task. One single tool is a step to simplicity, isn't it? Another goal is to make the start with qemu for newcomers not only easy but easiest and as far as possible intuitive. A (default) virtual machine can be created very quickly and easily. Have a look at the Quickstart page. Afterwards there is a good starting point to go more familiar with qemu.
However, with the increasing functionality the maintenance effort increases too. Having the tools written as scripts was no longer efficient maintainable. In 2020 it was decided to make a rewrite to make the tools more serious programs. Some significant changes in the design and concept were necessary, thus older releases (qemu-init-20200128 and earlier) are no longer compatible. The benefit to keep backwards compatibility was to small in comparison with the required effort.
Overall I think it is not so bad .
On April 14th 2021 the qemu developer Peter Maydell wrotes to the mailing list:
QEMU itself is not a "virtual machine manager". (By that term I mean something that will let you name VMs, that can optionally start them when you boot your host machine, that lets you monitor their status, start them and stop them with a GUI or command line program, allows their configuration to be saved and edited and so on.)
This is a quite good summary which describes what qemu-init does - even if it was not mentioned. However … should the project get a better name?