The Google Summer of Code has come to an end. It was an incredible time thanks to the many people with whom I worked and talked. This blog post is intended to give an overview over what was done during this project and how my involvement with GNOME may continue. If you already know what my project is about or only want to know what was done you might want to skip the “Goal” paragraphs.
The project consisted of three big parts:
- ISO Downloading
- Express Installation
All of these three parts where adressed to some point during this project. Everything described is already committed and will be released with GNOME 3.14 unless explicitly mentioned.
The goal of this part was to make Boxes able to download media directly. The “stretch goal” was to recognize ISOs while downloading or from the URI so the user can enter all needed information for the VM, click on “Create” and it would be automatically downloaded and installed without any need to wait.
The main goal was achieved. This is how it looks:
With this Boxes gets also a few improvements for the driver downloading process. (There were some memory issues and downloads couldnt be aborted internally.) Since I underestimated the work that needed to be done I was not able to implement the strech goal.
Express Installation Improvements
I intended to widen the support for express installation for Boxes in this part. Mainly the goal was support for Debian based distributions but we also had some explicit distributions on the list:
- Windows 8.1
- Windows Vista
- Linux MINT
- Damn Small Linux
During the first months I worked hard to make the initrd injection for express installation scripts possible. This is needed in order to express install some distributions; especially for Debian this is a common method. In order to make this possible I had to update the libarchive vapi file and write a vala wrapper for libarchive so we can handle archives with Boxes without more runtime dependencies. (In fact I was able to trow out one dependency due to the wrapper.) I spent very much time on this groundwork, much more than I initially estimated.
After the groundwork was covered I started working on the Debian express installation script. Due to a bug in the preseed installer this also took way longer than estimated.
On GUADEC I managed to get a draft of an openSUSE express installation script to work. Due to time limitations and the other goals I was not able to get these changes cleaned up and committed yet. Since libosinfo is not bound to the GNOME release schedule you probably get the openSUSE express installation soon anyway.
Due to the explained problems I did not manage to do more than some experiments with other distributions and Windows. However note that express installation with Ubuntu with the alternate ISO is possible with a slightly modified Debian installation script. Since we currently do not support express installation for live ISOs and Ubuntu does not seem to ship the alternate ISO anymore there seems no way right now to make express installation with Ubuntu work.
Long term fix would be adding support for live media in general, or provide means to distinguish non-express installable live media from express installable live media.
Express installation support for more distributions should not be that problematic anymore, we have the most important groundwork covered now.
During the project I did some effort to make Boxes better and more stable in general.
- I tested and reviewed patches other people contributed. I was especially involved in the review of the many code refactoring patches needed for multiple windows.
- I triaged some bugs and tried to feed the discussions to get them solved.
- I fixed some bugs myself. I mainly improved accessibility support with patches adressing the following issues:
- I added some common shortcuts here and there. We got consistent forward, back and cancel shortcuts through the application plus other missing shortcuts like F1 for help and similar.
- I worked on the stylesheet of Boxes to make it more independent from hardcoded colors. This results in less incompatibility problems with alien themes, especially themes that do not provide a dark variant, like the “High Contrast” accessibility theme.
- Miscellaneous things.
Summary of the following paragraph: thanks everyone for making this possible!
The Google Summer of Code was just as expected – plus GUADEC, which made it better. I want to thank Google for providing the resources and organizing the Google Summer of Code. I also want to thank the GNOME Foundation for providing financial aids to GSoC students where needed so they can attend GUADEC (which is great). Special thanks go to Zeeshan Ali Khattak (zeenix) who mentored me and reviewed with patience all my patches with worse commit messages. Last thank goes to the whole GNOME community for making GNOME what it is.
I hope I can make it to the next GUADEC and see all of you again!
I’ll say just this: 787852bc wont be my last patch although I wont be able to work full time on GNOME. Boxes will probably get some of the promised express installation scripts. (openSUSE will come, Linux MINT and ArchLinux are on my whishlist.) I also plan to take a further look at the HIG and some more general accessibility issues. For now I’m writing exams but I’ll be back soon!