Friday, October 4, 2013

Moving to London, UK

For those who haven't heard the news yet, I'll be joining Red Hat UK and terminating my Red Hat Ltd, Finland branch contract starting Nov 1 2013. Naturally, I'll be myself moving to London soon along with my wife and cat.

I'm about to embark on a trip to Canada and US to attend Boston Montreal  and Google Summer of Code mentor summits and I'll return on Oct 22. Two days after that I fly to London to start the hunt for a decent apartment. Once I have an apartment, my wife and cat will come over as well.

That's all folks.

GNOME 3.10, 3.12 and me

Wow! Its been months since I last blogged. I have a good excuse and a bad one. The good one is that I've been extremely busy with trying to get some of things ready for GNOME 3.10. The bad one is that w/ me sharing all important events on all 3 major social networks, I don't feel too motivated to put all those into blog posts (yes, I'm very lazy).

As you probably already know, I've been working on Maps, geolocation and geocoding apart from Boxes in 3.9 development cycle. Although there is still a lot of work to do in all these, I'm really happy with what we achieved in a short amount of time:
  • Maps: There was  desire and design page for a map application for GNOME but I didn't see any implementation. I looked around and found out that Mattias Bengtsson had already a repository so I helped him start the project. Currently it only allows you to some basic things you expect from a map application, like searching for places and finding your location but for a preview application that was developed in a few months by a few people, its a big achievement that everyone involved should be proud of. We still have plenty to do for 3.12, where its supposed to be a useful and stable application and not just a preview. Unfortunately, I myself won't have a lot of time for Maps in this cycle, so if you are interested in maps (lots of fun guaranteed!) and are looking for a way to contribute to GNOME (or Free Software in general), here is your chance to change the world for better.



    Since Maps use the awesome OpenStreetMap project (through libchamplain), another way to contribute is to edit maps directly in OpenStreetMap itself. This is ideal for technology enthusiasts who lack programming skills or interest in it. That is not to say that almost everyone would enjoy this kind of contribution. My good friend, Federico tells me that it could easily become an addiction. OpenStreetMap has several editor clients for different platforms so you can choose the one that suits your needs.

  • Geoclue2: So we basically started a re-write of Geoclue some months back. Rationale could be found here. Currently we only have IP-based geolocation and that unfortunately is limited to city-level accuracy at best. While this is not enough for some applications (e.g Maps) its already serves well for some important applications like Clocks and gnome-settings-daemon. So in GNOME 3.10, your local clock is automatically added to Clocks and your system timezone automatically updated (if you choose so) as you travel around with your laptop.

    In 3.12, I would like to first address the privacy concerns: Users should be given control over which applications should be allowed to access their location. This will be done through per-user agents running in desktop sessions. I already have implemented the geoclue side of this and have implemented a demo agent but I gotta implement an agent in at least GNOME Shell before Geoclue by default requires all apps to be authorized. KDE (every linux-based OS) folks will also have to implement an agent if they intend to use Geoclue2.

    Once privacy in place, I would really want to add more geolocation sources: GPS, 3G and WiFi-based geolocation. The first two, I'm told should be easy to add w/ latest ModemManager.

    WiFi-based geolocation will most likely be based on Open WLAN Map project. I have not yet looked at the API their library provides but I'm hoping its not too hard. Implementation difficulty aside, one big issue is that their database is hardly comparable to that of Google, Nokia, Microsoft etc so in most cases (unless you are in Germany) we'll not be able to rely on this source to locate you. That is a pity since this is the only option we have for wifi-geolocation, being open database of this type. On the bright side, they provide easy ways to improve their database using your smartphone. I'm hoping that by making use of this service, we'll further encourage contributions to this database and in a few years, this database will have enough data from many different areas around the globe.

  • Geocode-glib:  As I said, Maps already allow you to search for different places on the planet. This is done through a process called geocoding. This process translates a string, which could be the place name or part of it, and gives you details about all places that match such a string. The most important part of these details are coordinates. Another small feature you might notice in Maps is the "What's here" item of the context menu, which shows you details about the place where you cursor currently is on the map. This is done through a process called reverse-geocoding. Simply put, given the coordinates of a place, you get details (especially name) about it.

    Bastien had been working already on a library for geocoding and reverse-geocoding called geocode-glib. Since I needed this for Maps, I helped clean it up. While doing so I realized that it used Yahoo Places service, which not only is a closed/proprietary service, it doesn't have enough data and most importantly is not designed to be used for geocoding. Turned out that OpenStreetMap folks provide an open service for geocoding, Nominatim I ported geocode-glib to use Nominatim instead of Yahoo Places. Since Nominatim shares the same database with OpenStreetMap, contributing to Nominatim is the same as contributing to OpenStreetMap and vice versa and you use the same clients/tools to do that.

All this would not have been possible without help from our awesome community. Special thanks goes to my Google Summer of Code students, Kalev Lember and Mattias Bengtsson, and my colleague and friend Bastien Nocera. For Maps, I was also very lucky to get help from an awesome new contributor, Jonas Danielsson. Maps wouldn't look any good without his work.

Monday, June 24, 2013

Last week in Gothenburg


Just like every year, I'm a mentor in Google Summer of Code 2013. This year I'm mentoring two students:


  • Mattias Bengtsson, who will be working on implmenting route search in Maps. Since the Maps project was actually started by Mattias himself before he even thought of SoC and he has been working on maps (in general) as his fulltime job for 2 years now, I feel very confident about him being able to deliver.
  • Kalev Lember, who will be working on implementing the new date&time panel in GNOME control center. Kalev has been contributing to different GNOME projects and has been very active in Fedora packaging business. Having had the pleasure of pair programming with him last week, I feel very confident about him delivering his project as well.

So I got two awesome students, what could be better? There is the coincidence that both of them are located in ̶G̶o̶t̶h̶a̶m̶ ̶C̶i̶t̶y̶ Gothenburg, the very same city where one of our designers, Andreas Nilsson lives in. Since Fabiana Simões (another designer) was visiting Gothenburg, Andreas saw an good opportunity for a hackfest and thats where I was at last week along with the rest of the Maps team. I'm glad to report that we got some stuff done:





  • We all discussed the design and investigated which online services we can use for various features. Topics included:
    • Single vs. multiple instance app
    • Map view animations
    • Specialized printing of routes
    • Rendering our own tiles in the future
  • Andreas drew us icons and mockups for zoom-in/out control and routing UI.
  • Mattias worked on moving most of the Maps UI code into .ui files, implementing zoom in/out controls and made sure that he has everything he needs from designers for his GSoC project and beyond.
  • I ported Maps to geoclue2, made progress on porting geocode-glib  from Yahoo Places API to Nominatim and to directly use libsoup, and reviewed patches from Mattias and Kalev.
  • Kalev helped me out with porting Maps to geoclue2, figured out the cause of annoying bug in Maps that made it impossible to do anything in Maps once you click on any markers, and added basic printing support.


It was really nice to meet Mattias and Kalev in person and I finally had the pleasure of meeting Andreas Henriksson outside the Internets. There was also the GNOME Beers event and in general we did quite some team bonding. My only regret about last week is that that I didn't get around to do any sight seeing.

Special thanks to


  • Andreas for arragning the event and helping me navigate the city.
  • Chalmers University of Technology and Henrik Sandklef for the venue.
  • GNOME foundation for sponsoring my flight tickets.
  • Hanne Sundin and Martin Zackrisson for providing me a place to stay.


Tuesday, March 19, 2013

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!