This post is meant to be a final self-evaluation and self-analysis of my work for gnome-boxes during the summer. The initial project idea was about implementing/fixing a bunch of SPICE-based features/bugs to/in Boxes. The list of bugs of the SPICE component has since changed, as some new bugs have been discovered and some old ones have been closed, so I made a summary of my involvement:
Some of these. although have been completed from my point of view, still need my mentor’s final approval. I have published demo video screen captures of all the implemented features in my previous posts.
- I added a bunch of useful new help group options.
- I created a way for the user to be informed that a guest machine with SPICE display doesn’t have the SPICE agent installed. This was a problem before, because you had a hard time figuring if the SPICE agent is properly working in the guest or not.
- I made the USB redirection also available for inactive SPICE displays.
- I fixed a bug that was preventing GNOME-Boxes to close the windows of remote machines that were powered off from inside the guest. (initial bug was about SPICE, but it also happened to remote machines with VNC display ).
- I reported and fixed a major bug, that was causing GNOME-Boxes to close entirely when powering off/pausing a live libvirt machine that had its separate window. Although the patches haven’t been accepted yet because they need more testing, my mentor told that the fix looks really good.
- I implemented a better way of sending files to guests with SPICE display, alongside more visual feedback regarding the transfers. I have created loading bars which users will be able to see during one/multiple transfer and they will also have the ability to cancel transfers. In addition, an extra screen will also appear above the SPICE display which will inform the users that they are about to initiate a transfer.
- I made use of the already existent spice-gtk API and implemented folder sharing between the host and a guest with SPICE display. I also created patches for making it as much out-of-the-box as possible (the WebDAV channel is automatically added to local displays and spice-webdavd is automatically installed in windows/fedora). Stuff still needs to be done, which I will cover in the next section of this post.
- I managed to expose SPICE/VNC connections on the network. Through the help of some libvirt-gconfig API I added, the user will be able to expose connections of local displays on the network at choice.
- I made GNOME-Boxes able to create remote machines out of SPICE/VNC connections exposed on the network by other GNOME-Boxes clients.
- I added two new phases to the remote machines wizard, setup and preparation, which now test the connection and check that the user has the right credentials to access the remote machine.
- Multiple shared folders:
So far I have created the UI for multiple shared folders in Boxes and got to know a lot about how things work by implementing multiple shared folders in phodav. Marc-Andre Lureau suggested a better way of implementing multiple shared folders, by creating links to all the folders in a GNOME-Boxes private folder, which requires work only on the client part of SPICE layers. Considering that phodav will be reimplemented soon, this is definitely the best solution.
- Connect to remote libvirt machines using SSH
So far I have done some research and came up with a solution to the problem in libvirt, by creating a SSH tunnel and providing using a method call a fd through which the connection will be possible, although I didn’t found the time to actually implement it.
- spice-webdavd needs to be included and mantained in Debian/Ubuntu as a package, a task which I learned that is a lot more difficult than it appears to be . I will try to involve as much as possible to help this.
I have also made a spreadsheet with links to all the patches:
A shout out to my mentors: Zeeshan Ali, Victor Toso, Pavel Grunt and Fabiano Fidencio for the much needed help and advices 🙂