Older blog entries for zeenix (starting at number 317)

New in Boxes 3.8

We just rolled out Boxes 3.7.92 and have now entered code freeze. This means that apart from translations and doc updates, Boxes is ready for the stable 3.8 release (due next Monday). So whats new you ask? Since Boxes 3.6, we have been hard at work, making Boxes an app that is so awesome that it makes you want to use virtual machines if you are not already. :) Boxes is now a lot more reliable, has improved and more impressive UI and has cool new features:

  • Add USB redirection support in new VMs and option to add it into existing VMs. i-e You can use your USB devices (camera, flash drive etc) plugged into host from the guest operating system.


  • Smartcard support. This means if you have an appropriate reader device, you can use that to read information from your smart cards (credit/bank cards etc) from your virtual machine boxes.
  • Automatically download and installation of all virtio and QXL drivers, and spice-vdagent as part of Windows XP and Windows 7 express installation. This means following working out of the box:
    • Copy&paste between host and VM.
    • Guest resolution automatically adjusted to fit the Boxes window.
    • Very efficient disk I/O (helps in reducing installation time e.g).
    Here is a screencast of Windows XP with QXL in action.
  • oVirt support. This means you can now access all your virtual machines running on a (most likely remote) oVirt broker from Boxes by simply providing it's URL. Christophe blogged about it last year.
  • Improved selection view:
    • Option to pause VMs.
    • Options to select all, none and running boxes.
    • Allow accessing properties for non-running VMs.
     
    Here is a screencast of new selection view in action.
  • Allow tweaking properties for remote machines in the wizard.
  • UI looks a lot more like UI mockups and more consistent with Documents.
  • Add initial experience greeting. As a consequence, we don't auto-launch wizard on first time usage anymore.

    Please ignore the notification about box deletion. You don't get that on first use, I promise!

  • Support for changing the CD-ROM device/ISO from properties. You can see this option in  the screenshot above along with USB redirection options.
  • Selecting item when maximized automatically enters fullscreen view. You see this in action in the QXL demo screencast I pointed to above.
  • Mark recommended RAM and storage of guest OS (when known) in properties.


  • Allow search with multiple terms. A search like "foo bar" now means name containing "foo" and "bar". This is nicer, and what you expect from e.g. gnome-shell search.
  • Allow drag to unfullscreen Boxes.
  • Troubleshooting log viewer to system properties.
  • For Developers:
    • We now make use of libosinfo for express/automated installations. Support for new OSes/distros can be added through libosinfo. No Vala or C hacking needed, only XSL/XML.
  • Loads of other fixes and minor improvements. For more details: http://git.gnome.org/browse/gnome-boxes/tree/NEWS 

Hope you like love Boxes 3.8!

Syndicated 2013-03-20 02:31:00 (Updated 2013-03-20 02:35:18) from zeenix

23 Nov 2012 (updated 26 Nov 2012 at 18:04 UTC) »

Boxes video tutorial

I have been meaning to do this for a while and now I finally managed to do it: Here you'll find tutorial on Boxes. I know the sound quality and volume isn't good and there is other mistakes/issues but I'm not too ashamed as this is the first time I've done this and tools that I needed/wanted were all breaking on my Fedora 18 laptop.

UPDATE: I uploaded an updated version of this tutorial with slightly improved audio. To improve it further, I'll have to re-record the audio or the whole video but right now I don't have time for that. Perhaps in a few weeks..

Syndicated 2012-11-23 16:44:00 (Updated 2012-11-26 17:20:30) from zeenix

GUADEC 2012

I was at GUADEC last week like many other cool gnomies. It was a lot of fun, just like very year but I believe this was one of the best, especially how it was organised. The feet marks on the floor were was just an awesome touch that kept on reminding us everyday that good conferences are a result of a lot of hard work.

Seems its slowly becoming a tradition of mine since last year for me to stay at one of the organiser's house. :) Last time, I stayed with Lennart for the noncore days and this time I stayed all the days with Xabier and Laura. While they were very busy with their organising duties at the conf, they at the same time did an awesome job as my hosts. Xabier made sure that I don't have any problems what so ever and that I get to eat the best food in town and have a lot of fun. On top of all that, he woke-up 5:15 AM to drive me to airport. TBH I feel pretty bad now, knowing that I can't possibly return the favor. :( Thanks so much Xabier and Laura. You guys are awesome!

A Coruña is a very nice little town: people, beaches, history, culture, food etc etc. When it was combined with a lot of fun people from all over the world, it was like being in heaven. That said, there was one thing that was a bit of an unpleasent surprise for me: it gets really chilly at nights. Since I wasn't prepared for that, I wore shorts even in the evening and ended-up catching a cold. Later it turned into a fever. Fortunately, Xabier was there to take very good care of me and even took me to a doctor. He actually had to insist on that as I'm usually too lazy for that. I got much better before flying back but I still haven't completely recovered. Coughing like crazy..

There were many great talks but my favorite one was "PiTiVi and the GES: state of the onion" from Jean-François (AKA Jeff) . I was actually on my way to another talk that was scheduled at the same time but I caught a glimpse of his "slides" from the door and couldn't resist checking it out first. Once I got into the room, it was hard to leave. Awesome job Jeff! Out of pure coincidence, I was having some problems with Pitivi while working on my slides so I was directed to Jeff by people who knew him. Turned out that Jeff was having trouble with Boxes not working for him so we both helped each other out. In the end, our problem was quite the same: We were both trying to do something that was posible with Pitivi/Boxes. :) My second favorite was "The History of GNOME" keynote from Federico, Jonathan and David. It was nice to hear the inside story of early days of GNOME development, how some of the core GNOME hackers used too look like back in the days and the screenshots shown brought back many good memories from my early use of GNOME (think several hours wasted on playing with hide/unhide buttons on the panel).

My Boxes talk went OK'ish. Everything else went fine (even the demos, something that hardly ever work for me) except for the videos. I never included videos in my talk before so I wasn't very prepared to prepare for it. Lame excuse, I know.

Talking of Boxes, Christophe arranged a meeting between all the Boxes and SPICE developers present at the conf with our designers, Jakub and Jon. We gathered very usel feedback from them and they noted down some action points for themsevles to come up with mockups for some usecases/issues not yet covered. Talking of Jakub, it was nice to meet him outside Battlefield arena for a change. :) Well, I've had the pleasure of meeting him in person before but we weren't really close friends until 6 months ago when I joined him and his Czech and Polish friends in their Battlefield addiction sessions.

Then there was the GNOME OS BoF. I think that also went very nicely. It took most of the day but we now have a much more concrete idea of what GNOME OS is all about or going to be. A lot of what, why, how and who was discussed thoroughly. The most important thing was that everyone agreed to go forward with the idea and its no longer just some vague thought up in the air. Hopefully there will soon be documentation and mailing-list about it too (we already got an IRC channel).

Last but not the least, it was a pleasure to meet many new contributors, mainly the GSoC and OPW students. Its great seeing our outreach program  working so succesfully. Kudos to everyone involved, especially Marina. AFAICT both students working on Boxes-related projects, Fabiano and Jovanka took full advantage of their presence at GUADEC and hopefully will be able to completele their projects in time.

Syndicated 2012-08-06 00:37:00 (Updated 2012-08-06 00:51:40) from zeenix

Adding information to libosinfo

Some weeks back, Marc-Andre told me that it will probably be helpful for potential contributors if I could write a blog post explaining how new information could be added to libosinfo (the library Boxes relies on for information on various operating systems and their installer medias) so here I'm doing just that. Currently there are two types of information you can add, devices and operating systems. Usually, it'll be the latter that you'd want to add (e.g your favorite OS just made a new awesome release and you want libosinfo to know about it) but for the sake of completion, I'll describe both.

Libosinfo keeps its information database in a bunch of XML files. Although theoretically there could be just one XML file but that would have to be really huge and therefore will be very hard to edit/maintain so we keep each OS distro and device class in its own XML file.

Libosinfo recursively traverses the following locations, assuming application let libosinfo load its own default DB (which at least Boxes does):
  • ${pkgdatadir}/libosinfo/db, where pkgdatadir typically is ${prefix}/share. This can be modified at runtime by setting OSINFO_DATA_DIR environment variable to whichever path you got the custom DB.
  • ${sysconfdir}/libosinfo/db, where sysconfdir typically is ${prefix}/etc or /etc.
  • ${HOME}/.config/libosinfo/db
So if you just want to quickly add some information to libosinfo, the easiest way is to put a file under ${HOME}/.config/libosinfo/db folder (you'll have to create it yourself) with any name but extension must be 'xml'.

The schema of these XML files is pretty straight-forward so just looking at the existing XML files under data/devices and data/oses in the libosinfo source tree will already tell you mostly everything you need to know about the schema.

    Adding a new device


    Before you do that, you'll need to gather following data about the device in question:
    • Type: Qemu or virtio. If its not the latter, its the former.
    • Bus type: usually USB or PCI.
    • class: video, audio, block, input, net, watchdog, filesystem and memory.balloon are currently recognised values.
    • vendor name and ID
    • device name and ID
    The last two you can find from http://www.linux-usb.org/usb.ids or http://pciids.sourceforge.net/v2.2/pci.ids, depending on which bus type device uses. Once you have all this information, you simply add an entry to either your custom XML file or the appropriate file under data/devices/ in libosinfo repository like this (I failed to find a way to embed raw XML here so I converted it into something XML should have looked like):

      (device id="http://pciids.sourceforge.net/v2.2/pci.ids/10ec/8029")
    (name)ne2k_pci(/name)
    (bus-type)pci(/bus-type)
    (class)net(/class)
    (vendor)Realtek Semiconductor Co., Ltd.(/vendor)
    (vendor-id)10ec(/vendor-id)
    (device)RTL-8029(AS)(/device)
    (device-id)8029(/device-id)
    (/device)

    the 'id' is created simply by combining the URL of the appropriate ID database (one of the URLs I mentioned above) with vendor and device IDs.

    Adding a new OS


    This one is better explained by showing you some real examples:

      (os id="http://fedoraproject.org/fedora/17")
    (short-id)fedora17(/short-id)
    (name)Fedora 17(/name)
    (version)17(/version)
    (vendor)Fedora Project(/vendor)
    (family)linux(/family)
    (distro)fedora(/distro)
    (codename)Beefy Miracle(/codename)
    (upgrades id="http://fedoraproject.org/fedora/16"/)
    (derives-from id="http://fedoraproject.org/fedora/16"/)
    (/os)

    The 'id' here could really be just anything you like but if you adding a new variant/version of an OS to an existing file of the appropriate family, its good to follow the conventions being followed in that file. Same goes for 'short-id'. The 'upgrades' and 'derives-from' are optional entries. While former is not really used much for anything useful yet, the latter is meant to avoid some duplication.

    The most common example of such duplication is list of devices supported out of the box by the OS in question. Notice that we didn't list any devices in the example above. The reason is not that Fedora 17 doesn't support any devices but rather that it inherits all device support from its parent and grand parents. To list devices supported by the OS, you add simple entries like this:

      (os id="http://fedoraproject.org/fedora/17")
    ..
    (devices)
    (device id="http://pciids.sourceforge.net/v2.2/pci.ids/1b36/0100"/) (!-- QXL --)
    (device id="http://pciids.sourceforge.net/v2.2/pci.ids/8086/2415"/) (!-- AC97 --)
    (/devices)
    (/os)

    Now in this case, 'id' elements must match an ID of either an existing device in libosinfo's default database or a device you have added in your custom database. If your OS supports the above list devices for example and you don't list them here (or under any parent OS), applications like Boxes might not add these devices to virtual machines they create and you'll end-up with very crappy graphics and no sound in your VMs created for the OS in question.

    Another important piece of information is resource requirements and recommendations. Its rather straight-forward as well:

      (os id="http://fedoraproject.org/fedora/17")
    ..
    (resources arch="all")
    (minimum)
    (n-cpus)1(/n-cpus)
    (ram)671088640(/ram)
    (storage)94371840(/storage)
    (/minimum)

    (recommended)
    (cpu)4000000000(/cpu)
    (ram)1207959552(/ram)
    (storage)9663676416(/storage)
    (/recommended)
    (/resources)
    (/os)

    'arch' attribute is usually just 'all', unless the OS in question has different requirements/recommendations for different architectures. The units for cpu, ram and storage are Hz and bytes respectively.

    One last piece of information you really would want to add is about the installation and live media. While in future we might use it even for things like presenting downloadable OSs in Boxes (and other apps), for now we use this information mainly to detect the OS (along with other properties) given a media (ISO, USB stick or CD-ROM). Here is how that looks like:

      (os id="http://fedoraproject.org/fedora/17")
    ..
    (media arch="x86_64")
    (url)http://download.fedoraproject.org/pub/fedora/linux/releases/16/Fedora/x86_64/iso/Fedora-16-x86_64-DVD.iso(/url)
    (iso)
    (volume-id)Fedora 16 x86_64 (DVD|Disc)(/volume-id)
    (system-id)LINUX(/system-id)
    (/iso)
    (kernel)isolinux/vmlinuz(/kernel)
    (initrd)isolinux/initrd.img(/initrd)
    (/media)

    (media arch="i686" live="true")
    (url)http://download.fedoraproject.org/pub/fedora/linux/releases/16/Live/i686/Fedora-16-i686-Live-Desktop.iso(/url)
    (iso)
    (volume-id)Fedora-16-i686-Live(-KDE)?(/volume-id)
    (system-id)LINUX(/system-id)
    (/iso)
    (kernel)isolinux/vmlinuz0(/kernel)
    (initrd)isolinux/initrd0.img(/initrd)
    (/media)
    (/os)

    The 'live' attribute means (as you guessed it) a media that can be simply booted for user to try the OS without having to install it first. If the media in question does not provide an installer at all, you want to explicitly specify 'installer' attribute with value 'false'.

    The data under 'iso' element is what enables us to detect the media. You can get this information from a media using `isoinfo -d -i /path/to/iso/or/devicenode` command. I should make it clear at this point that values of 'volume-id' and 'system-id' nodes are not exact copies of the actual volume and system IDs but rather a regular expression.

    If you are adding this information to libosinfo's default database and hope to contribute this upstream, we'd very much like you to add this information also to our tests (you don't want us to break support for your favourite OS at some point, do you?). Its very easy, you just put the output of the isoinfo command I mentioned to a file named $FILENAME_OF_YOUR_ISO.txt under test/isodata/$DISTRO/$SHORT_ID_OF_OS/ in the source directory.

    As you probably guessed it, the 'kernel' and 'initrd' are completely optional and you only need to specify it for Linux-based operating systems. If you are adding information about a proprietary OS, we probably also need to skip the 'url' element.

    Thats it! Happy hacking!

Syndicated 2012-06-14 22:43:00 (Updated 2012-06-14 22:47:06) from zeenix

30 May 2012 (updated 30 May 2012 at 01:05 UTC) »

Ostikka

If you are looking for something technical, this isn't the right entry. Today I wanted to write about one of my cats, Ostikka who left us some hours ago.



I wanted to share the story with whoever is interested to know:

About two years ago my wife (Ansku) and I thought that we should get ourselves cats as we both love cats. We decided that instead of getting kittens like most people, we try to get some grown-up cats looking for a home. I asked my friend , Riku Voipio (who has 2 cats himself) and he told me that one of his friends, Mikko Tuomela was looking for someone to take his cats as he had to leave to US for education and couldn't take them with him. Soon we were introduced to these two very nice cats, Ostikka and Pentu. Ostikka was 12 years old at that time and Pentu was 8. While both cats are very social, Ostikka just loves to meet new people and isn't the least bit shy. He came to our lap immediately and asked to be scratched on his belly and purred. Pentu kept on hiding during our first "meeting" with him because he got spooked of someone peeking through the window earlier.

I must admit, at that time I was a lot more interested in Pentu than Ostikka. Not to say that I didn't like him but I wasn't as fond of him as of Pentu. Anyways in the end, we were given the honor of being the owners servants of these awesome cats. It wasn't long before Ostikka charmed me with his personality and soon I had a deep bond with him without even realizing it. Also I realized that not only he has a facebook page but has lots and lots of fans in there as well. Even people who had never met him in real life couldn't escape his charm.

Ostikka had medical problems right from the time he got him but nothing fatal. He mostly was supposed to follow a particular diet to loose weight. Even though old, he was a very happy cat who had a very positive attitude towards life.  Then came the Christmas week and he stopped eating and kept himself hidden. We consulted many vets but ultimately it took the best cat specialist in town (Teija Viita-aho) to find out what was wrong with him. I don't exactly know what the disease really is but something to do with pancreas being out of balance. We had a few weeks from hell where he had a tube attached directly into his oesophagus and we had to feed him every 1 hour through that tube. At that time both me and my wife had a full-time job so it was very difficult and many people at that time thought it it might be time to let Ostikka go but we managed to pull through and Ostikka sprang back to life soon.

We still had to give him meds twice a day but that was a very small price to pay to see him in good health and enjoying his life. More than an year later, Ostikka was still doing very well and Ansku even started to take him out every day the weather permitted. That is something he really loved to do. Many times he would go to the door and keep meowing, asking to be taken out. We took Ostikka for a routine check and they said we have been doing a very good job with him and we should keep it up. They also told us to come back after a few months for his dental care.

So a few months later, this cat seem to be still doing well but one thing we noticed was that he wasn't able to eat wet food (that used to be his favorite) and could only eat dry food. We take him to the vet for the dental care and another checkup. We had to leave him there for about 3 hours and when we came back to pick him up, the vet has a very bad news to tell us: He's likely to have a tumor in his intestines and unfortunately its incurable.

We took him home and hoped that coming lab reports will tell us that theory is not correct. We kept trying to contact the vet after that but she was way too busy to call us back. The only time she called was when I was in a meeting and somehow my phone never registered that call. A few days passed and in the meanwhile Ostikka's condition got worse after returning from the vet: He would hide away and not eat at all. Finally after a few days on a Saturday, the vet called Ansku and told her the bad news that lab reports are very much consistent with her theory. Based on that and the symptoms he had been showing lately, she insisted that he be put to permanent sleep on the same day.

We of course didn't like that idea at all and decided that we get a second opinion. We asked another vet, who does house calls, to come over and provide a second opinion. While she didn't offer a very different opinion, directly observing Ostikka she said there is no hurry to put him to permanent sleep. She asked us to keep observing him and try to get him to eat. This was on last Saturday (26.05.2012).

While observing, we did everything we could to make him feel good. The pain killers he was getting did help him for a few hours and enabled him to have some fun or at least try his best but since he still couldn't eat much. He kept on getting even weaker and didn't have energy to do much. It was very obvious that he was in a lot of pain most of the time. So yesterday, we both came to the conclusion that its time to let him go and relieve him of his pain.

Neither me nor Ansku could get any sleep last night. While Ansku had to go to work, I took a day off and remained awake to get an appointment from the vet to perform the euthanasia this evening and keeping Ostikka as happy as I could until his time comes. I fried/warmed him chicken every now and then as that's what he likes the best in food, took him outside for a walk, let him on the Balcony whenever he showed interest to go there and scratched him as long as he liked it. I also wept a lot. Here are some videos I recorded of him on his last walk outside (These videos won't probably be visible so if you are reading this on planet GNOME so if you are interested, please click the blog entry link):



Around 18:00, Mikko came and brought with himself a fish that somehow got Ostikka so interested that he wanted to eat it while it was still in the plastic wrapper. That was Ostikka's last supper and I'm glad that he really enjoyed it. Here is the video of him munching on the fish:



Then Ansku came back from work to spend some time with him before the vet arrives. He got lots of scratching from everyone before the vet arrived and he was seemingly liking it.

Then the vet came and did what needed to be done. It was a weird coincidence that Ostikka's brother, Kisu had died a few days ago (from a very different disease) as well. Mikko's mother has a small land reserved for pet burials so we took Ostikka's body there and buried him next to his brother:




Since we wanted him wrapper around a clothe, my last gift to Ostikka was my GSoC t-shirt from last year.

It felt really really sad to come back to the house and only find one cat greeting us at the door. We go to the other room and keep expecting Ostikka to be there, starring back at us. It feels very very bad.. I really had no idea that I have fallen so much in love with this Feline.

P.S. I couldn't come-up with a good title for this post as Ostikka was so unique that nothing summarizes him better than his name. Unfortunately that is only understandable to people who knew him.


Syndicated 2012-05-30 00:02:00 (Updated 2012-05-30 00:44:45) from zeenix

Help needed for Debian and Ubuntu

If you read any of my previous blog entries, you must be now familiar with this 'express installation' concept we have in Boxes. Its pretty neat actually, you just set a few options at the beginning and then you can leave Boxes (or your machine) and when you are back, everything is setup for you automatically in a new box.

I have invested a lot of time/efforts on this already and will be spending a lot more time in future as well but I am just one man so can not possibly cover all operating systems out there. That is why I am asking for help from anyone who will be interested in adding express installation support for Ubuntu and Debian while I focus on Fedora and Windows variants. Oh and if you are interested in adding support for some other distribution/OS, that contribution will also be more than welcomed.

In any case, happy hacking!

Syndicated 2011-12-22 19:47:00 (Updated 2011-12-22 19:47:44) from zeenix

21 Dec 2011 (updated 21 Dec 2011 at 15:24 UTC) »

Another awesome release of Boxes

Yesterday we rolled out the second release of Boxes for upcoming GNOME 3.3.3. There are many fixes/improvements in this release to list them all here but the most significant ones in my opinion are:

  • A nicer UI for deletion of Boxes designed for protecting the user from accidental deletion of boxes. Here is a video demo of it in action.
  • Special handling of 'live' and unknown media: Quick launch of a temporary box for it, which is made permanent automatically (only) if anything is installed on the box by the media. Here is a video demo of this behaviour in action.
  • Express installation for Windows XP now works, thanks to important clues provided by Lucas Meneghel Rodrigues. Don't believe me? I have video footage that proves it.
  • UI for setting user and administrator password and in case of older Windows, ability to set product key as part preparation for express installation. Please check out the videos above for demo of this feature in action.
Apart from changes in Boxes itself, there were some note-worthy changes in our dependencies that helps us directly.
  • Christophe Fergeau added a big bunch of new APIs to libvirt-glib (libvirt-gconfig to be precise) for dealing with libvirt's configuration XML. Now Boxes uses that instead of manually writing/editing XML strings.
  • A Google Code-In participant, Mateusz Kaplon added a lot of data about various different operating systems to libosinfo. For Boxes that means more complete and reliable detection and default resource allocation for various operating systems.

For a detailed list of changes in Boxes 3.3.3, please refer to the release notes.

Syndicated 2011-12-21 00:17:00 (Updated 2011-12-21 14:48:39) from zeenix

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-23 04:00:00 (Updated 2011-11-22 20:43:17) from zeenix

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

ftp://libvirt.org/libvirt/glib/
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.
@redhat.com>

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

308 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!