Older blog entries for zeenix (starting at number 309)

22 Nov 2011 (updated 22 Nov 2011 at 20:05 UTC) »

Behold the Boxes!

Dear readers! If you recall, in a blog post not so long ago I introduced you to the wonderful virtual world I now live in.  Now around the same time I wrote that post, some of the GNOME designers and developers (myself included) felt the need for having a UI as an integral part of GNOME that lets users easily manage (create and destroy) virtual machines and at the same time lets them connect to remote machines.

Two of our awesome designers, Jon McCann and Jakub Steiner) started creating design for this UI. We (as in Jon McCann) named it 'Boxes' as its something that deals with..hm.. boxes. At the same time, we (me, Marc-Andre and Christophe) kept working on the foundations for Boxes, mainly in the form of lots of improvements to libvirt, libvirt-glib, libosinfo and spice-gtk.

About less than a month ago we started implementing the design when the design stabilized a bit. The implementation actually started as a "proof of concept" from Marc-Andre over a weekend. The result was already so good that we decided to move it to git.gnome as the bases for Boxes' implementation. While most of the credit for the UI goes to Marc-Andre, I think he will agree that it wouldn't have been so easy to get this started so quickly if we hadn't chosen to write this in Vala.

Since by now you have read a lot of blah blah already, I'll stop boring you more and show you some screenshots of what we have already:

And if that gets you excited, you'd want to see this screencast where I show Boxes in action.

After a few days of tiring work on fixing critical issues in Boxes and its dependencies we finally managed to roll-out our first release. You are more than welcome to try it out already and report any issues you find but please keep in mind that at the moment we require the latest (unstable in many cases) releases of our dependencies to be able to make use of their latest features. If you happen to be a jhbuild user, you are in luck as building boxes is as easy as typing `jhbuild build gnome-boxes`.

Why not virt-manager?


virt-manager is an awesome tool and I myself use it everyday. I am sure other Boxes hackers are using it on daily bases as well. However we must keep in mind that the UI we were looking for in GNOME is not meant for enterprise-level system-administrators who have hundreds of mission-critical virtual-machines on an array of super computers but rather a typical end-user who just wants to connect from his laptop to his work machine(s) and/or try different operating systems. While virt-manager is undoubtedly the best choice for the former, its not at all tailored for the latter.

It should be noted that while we decided not to use virt-manager for the UI, we still are trying our best to share as much code base/efforts with virt-manager as possible in terms of infrastructure, mainly in the form of libvirt, libosinfo, qemu and spice-gtk.

Known issues

Boxes is still in its infancy so you might find a lot of issues in Boxes and its dependencies but one issue that is a big show-stopper at the moment is the breakage of floppy support in recent Qemu. Boxes depends on floppy-support for making automated/express install possible for both Linux and Windows. Fortunately the issue is already fixed in git master of Qemu and its just a matter of releasing and packaging by distributions.

How to help?

Seems many people are already very excited about this little project of ours and I'm hoping this blog entry will attract more contributors so I wanted to point out some things we need help with. If you are interested in UI work, Marc-Andre has written down a TODO for Boxes that you can pick some tasks from. Other than that, we still need a lot of help with two of our main dependencies:

  • libosinfo: This library is our store for information on operating systems and means to detect operating systems from installation media.
  • libvirt-glib: libvirt-glib wraps libvirt to provide a high-level object-oriented API better suited for glib-based applications.
While Boxes is written in Vala, these libraries are completely written in C so if you are a C hacker and want to contribute, these would be good places to start with. While most of the work needed on libosinfo is that of populating its database with information on all kinds of operating systems out there, libvirt-glib still lacks a lot of needed API. One particular part of libvirt-glib that needs the most work and is of highest priority to us is its API to deal with libvirt's configuration XML.

We all love boxes, don't we?

Syndicated 2011-11-19 00:50:00 (Updated 2011-11-22 19:30:49) from zeenix

libvirt-glib 0.0.1 is out!

The first public release of libvirt-glib is out! libvirt-glib wraps libvirt to provide a high-level object-oriented API better suited for glib-based applications. Daniel wrote nice release notes so I'll save myself some time and quote it for more details:

I am pleased to announce the first release of the libvirt-glib package,
version 0.0.1 is now available from

The packages are GPG signed with

Key ID: 15104FDF Daniel P. Berrange
Key fingerprint: DAF3 A6FD B26B 6291 2D0E 8E3F BE86 EBB4 1510 4FDF

libvirt-glib comprises three distinct libraries:

- libvirt-glib - Integrate with the GLib event loop and error handling
- libvirt-gconfig - Representation of libvirt XML documents as GObjects
- libvirt-gobject - Mapping of libvirt APIs into the GObject type system

As of this release only the event loop integration and some basic APIs for
managing domains are provided. The representation of XML as GObjects is a
major work item that is just beginning.

The libvirt-gconfig library can be used without linking to the main libvirt.so
library, so it is suitable for consumption by applications which use libvirt
indirectly via AMQP, CIM or another API transport which accepts XML documents.

All the libraries support GObject introspection to enable immediate usage
from any language which can dynamically import objects via introspection.
There are also Vala bindings which are automatically generated from the
introspection data.

NB: While libvirt aims to be API/ABI stable, for the first few releases,
we are *NOT* guaranteeing that libvirt-glib libraries are API/ABI stable.
ABI stability will only be guaranteed once the bulk of the APIs have been
fleshed out and proved in non-trivial application usage. We anticipate
this will be within the next 6 months in order to line up with Fedora 17.

Follow up comments about libvirt-glib should be directed to the regular
libvir-list@redhat.com developmenht list.

Thanks to all the people involved in contributing to this release.

Syndicated 2011-11-16 14:22:00 (Updated 2011-11-16 14:37:25) from zeenix

26 Oct 2011 (updated 26 Oct 2011 at 17:03 UTC) »

Introducing libosinfo

The first release of libosinfo is out!

What is libosinfo?

libosinfo is a GObject based library API for managing information about
operating systems, hypervisors and the (virtual) hardware devices they can
support. It includes a database containing device metadata and provides APIs
to match/identify optimal devices for deploying an operating system on a
hypervisor. Via the magic of GObject Introspection, the API is available in all
common programming languages with demos for javascript (GJS/Seed) and python
(PyGObject). Also provided are Vala bindings.

libosinfo is Free Software and licenced under LGPLv2+.


  • Required:
    • gobject-2.0
    • gio-2.0
    • libxml-2.0
  • Optional:
    • gobject-introspection
    • Vala (build-time only)





Syndicated 2011-10-26 00:18:00 (Updated 2011-10-26 16:15:59) from zeenix

GNOME 3.2 party in Helsinki!

The party turned out to be a lot more successful than I thought. I thought only a few people will show-up since there aren't that many gnomies around that I know of. We had lots of nice discussions on various topics especially the future of GNOME and Free SW in general. One of the participants was very interested in having some way to write UIs that work for both big screens and tiny screen of his Openmoko mobile phone, which turned out to be quite an interesting discussion.

Taking the EXOPC running Fedora 16 with me was indeed a good idea since almost every participant wanted to see how it works. Although I had to keep telling/reminding everyone that on-screen-keyboard in gnome-shell is not exactly finished, I noticed that people were pretty much already able to use GNOME 3.2 with a touch-only interface. The biggest issue people encountered wasn't the OSK though but the bad touch-screen on the tablet.

Some pictures from the event:

Syndicated 2011-10-06 13:30:00 (Updated 2011-10-06 13:31:11) from zeenix

Helsinki GNOME 3.2 release party

If you happen to be in Helsinki tomorrow (Wednesday) evening, don't forget to drop-by at Kaisla to celebrate the awesome GNOME 3.2 release with us. Not only you will get to hang-out and have beers with other cool people in town but also get to try out GNOME 3.2 on a tablet. If you have never been to Kaisla before, this is one bar you must visit if you are interested in beers as they have a rather decent collection of beers from different countries.

See you tomorrow at 8pm there!

Syndicated 2011-10-04 02:08:00 (Updated 2011-10-04 02:09:21) from zeenix

Got a red hat? Check!

I finally got my (long awaited) hat!

Now back to work...

Syndicated 2011-09-10 01:35:00 (Updated 2011-09-10 01:35:28) from zeenix

See you in Berlin!

I have a talk where I'll attempt to brain-wash educate the masses about the awesomeness of Vala language. If you are even slightly interested, please do attend. I also have arranged a BoF together with KDE's Friedrich Kossebau to discuss about the possibility of SSDP (discovery protocol used by UPnP) as a system service.

See you in Berlin soon!

Syndicated 2011-08-02 20:25:00 (Updated 2011-08-02 20:25:07) from zeenix

Slightly more on virtual world..

Forgot to mention in my last blog post that SPICE is not just more efficient at network bandwidth utilization but is also much more faster/responsive. Also, Jon Nordby pointed out that the screenshots of virt-manager I copied from virt-manager website are several years outdated. Here is how the main UI looks like now a days.

P.S. I was going to inline this screenshot but blogger.com is not letting me do that. :(

Syndicated 2011-06-22 13:40:00 (Updated 2011-06-22 13:40:01) from zeenix

22 Jun 2011 (updated 22 Jun 2011 at 02:05 UTC) »

Welcome to the virtual world!

About two months ago I informed  the followers of this blog that I will now be working on SPICE project  for Red Hat . Judging from the questions I was asked after that, I realized that not many people know about SPICE so I thought I write at least one blog entry dedicated to explaining what SPICE is all about. Before I get to SPICE itself, let me first introduce you to the world SPICE lives in.

Virtualization and Virtual Machines (VMs)

For some reason, I feel that I should leave the definitions to
wikipedia  and only quote it so that is what I am going to do:
" Virtualization, in computing, is the creation of a virtual (rather than actual) version of something, such as a hardware platform, operating system, a storage device or network resources. "
" A virtual machine (VM) is a "completely isolated operating system installation within your normal operating system".Today, this is implemented by either software emulation or hardware virtualization ".

Virtualization (of software and hardware platforms) is really nothing new and has been around since..well the the real thing itself: computers. There has been several implementations of different kind ever since and I are two main reason they exist and grow:
  1. Developing/testing software for hardware that you do not have. This makes virtualization softwares were attractive for consumer product manufacturers to be able to start the development of software soon after the plans for a particular product are finalized since it takes some time before they can manufacture enough prototypes for every developer and tester involved.
  2. Portability: In a typically VM setup, installation is done on drive images (files) rather than actual drives/partitions, which means you can carry or send your (virtual) machine anywhere you like.
  3. Ability to use multiple operating systems at the same time: Many Linux and Mac OS X users often need to run applications that are only available for windows and vice versa. Dual-boot is one solution to this issue but that implies you will only be able to use one OS at a time.
  4. Partitioning of a single host to multiple servers: Consolidation of many servers to a single host is a popular use case these days, done internally in many companies and also by hosting services. aka “The Cloud”.
Despite its big drawback, traditionally dual-boot has remained to be the preferred solution for many for a long time. The reason for that has mainly been the limitations of virtualization solutions, especially in terms of performance. However due to significant improvements in both hardware (built-in virtualization support and multi-core) and software, virtualization solutions have been gaining a lot of popularity lately.


Qemu  + KVM

There are many such solutions out there, both Free and non-Free out there but the solution of our choice is Qemu. This awesome virtual-machine manager (a.k.a hypervisor) combined with Kernel-based Virtual Machine (KVM) and built-in virtualization   extensions  in modern CPUs is capable of providing such a virtual environment that puts the real thing to shame.

Qemu+kvm might be a very powerful tool, its still very much a power-user tool. For example you have to use long commandlines with different switches to use Qemu effectively . Worry not! There is another set of tools to help there:


While Qemu+KVM might be an awesome solution, its still one of the many hypervisors out there and with some many people pouring into the virtualization industry, you can be assured that there will be a better alternative available sooner or later. libvirt not only abstracts you from hypervisors but also adds some really nice features on top of that:
  1. Manipulation (creation, deletion and modification etc) and monitoring etc of virtual machines on remote  hosts, securely.
  2. Live  migration of virtual machine(s) from one host to another.
Apart from the libvirt library itself, the libvirt package also comes with a very nice commandline tool called virsh  that exposes libvirt API as convenient arguments. As you can probably guess from its name, virsh is a shell so if you can launch it without (command) arguments it will launch an interactive shell, awaiting your commands.


Neither libvirt, not virsh are tools that an end-user could be expected to use. Thats where virt-manager comes into picture. It basically provides the same functionality as virsh but unlike virsh, its designed for end-users and hence has a very user-friendly graphical user-interface. Here is some screenshots that should give you a good idea:

While virt-manager has nice UIs for everything related to VM management, it still leaves the remote access of virtualized (guest) OS/desktop to tools that are tailored for that, such as VNC and SPICE.


SPICE was originally developed by
Qumranet  as a proprietary solution. Red Hat  acquired Qumranet in 2008 and in December 2009 Red Hat open-sourced the protocol.

Now with definition and history lesson taken care of, lets talk about the real thing: tools. SPICE, the implementation is divided into 3 main parts:





Just to be very clear here, spice-gtk is nothing specific to vinagre so if you want to have SPICE integration in your UI(s), you can do it very easily using spice-gtk. Apart from the C API, it also provides gobject-introspection  and Vala  bindings.




Whats wrong with VNC?

VNC has been around for a while now and in modern unix world, its considered as the  remote desktop solution so its natural for people to ask: why create yet another solution for the same problem? The reason is that SPICE protocol has been designed to be very efficient on bandwidth usage and to satisfy the needs of a virtualized environment [1] . Recall QXL I mentioned above? QXL is handled/implemented as something called paravirtual devices in SPICE. Its probably appropriate to quote the related wikipedia definition here first:
In computing, paravirtualization is a virtualization technique that presents a software interface to virtual machines that is similar but not identical to that of the underlying hardware. 
So while a VNC server reads frames from video memory and sends (compressed though) the updated areas (if any) to the client, spice-server on the other hand presents the guest windowing system with an X driver that captures X protocol operations directly. That is what makes SPICE a lot more efficient at network usage compared to RFB  protocol that VNC uses.

The end

I am really not good at explaining things so I’m sure I must have left-out some necessary details but worry not! We have a team of awesome hackers who can always help you with any issues related to SPICE. You can reach us either through our
IRC channel or mailing-list . If you are attending the Desktop Summit 2011 in Berlin, you are in luck cause not only there is a talk  about ‘Integrating virtualization into the desktop’ but also some of us will be attending the full duration of the conference so you can come and discuss with us in person.
If you are interested in readily available products based on these awesome virtualization tools, I suggest you have a look here .

[1] Actually, currently SPICE can only be used to access virtualized desktops, though one of our team members is actively working to make it possible to connect to normal/real desktops.

Syndicated 2011-06-22 01:03:00 (Updated 2011-06-22 01:27:14) from zeenix

20 Jun 2011 (updated 20 Jun 2011 at 19:03 UTC) »

Release logs are important!

Turns out that not many Free Software maintainers follow the practice of writing proper release logs targetted for packagers/end-users. To justify their laziness, they come-up with lame excuses like "Oh, the user never sees the release log" etc and at the very most copy&paste the (developer oriented) VCS changelog since the last release. Here is how it actually affects a user:

Now if you click on the URL provided, you will be taken to a page where there is a lot of information but the one you are looking for: What exactly changed? In this particular case, its just an bugfix release but many times new features are added and users can't know that unless you put that nicely in your release log.

So please stop justifying your laziness and take the efforts to write the release log if you are a maintainer of a Free Software project. OTOH, if you are a downstream packager, please copy or link to the upstream release log in your package's changelog that upstream maintainer has put his/her time/efforts into. Thanks!

Syndicated 2011-06-20 16:00:00 (Updated 2011-06-20 18:18:28) from zeenix

300 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!