gnome-software mini hackfest

I am in London this week visiting Richard Hughes. We have been working out of his home office and giving some much needed love to GNOME Software.

Here is the main thing we’ve been working on:

Source selection drop down

GNOME Software now has a drop down list for choosing which source to use for installing an app. This is useful when someone has multiple repos enabled that all provide the same app, e.g. GIMP being available both as an RPM package from Fedora and a Flatpak from Flathub.

Previously, GNOME Software treated each version as a separate app and all the apps that were available from both Fedora and Flathub suddenly showed up twice: once for each source. This made browsing through featured apps and categories annoying as there was much repetition. Now instead GNOME Software consolidates them together into one entry and makes it possible to choose which one to install.

Richard worked mostly on the backend code and I did the user facing stuff. Allan Day helped us over the IRC with all the design (thanks Allan! you rock). It was so nice to be together in once office and be able to bounce ideas back and forth. We are hoping we can maybe start doing this more often.

This work is now on GNOME Software git master and will be in Fedora 30 as part of GNOME 3.32. If you are maintaining a Flathub app where it has its desktop file renamed, please check to make sure it has X-Flatpak-RenamedFrom correctly set in the .desktop file. This is needed for GNOME Software to correctly match renamed apps in Flathub to non-renamed ones available from distros. If the key is not there, it should be just the matter of rebuilding the app and it should automatically appear.

Some apps that have renamed desktop files in Flathub need to land for this to correctly work. Hopefully we can get this part sorted out next week.

It was a fun week and thanks to Richard for letting me stay at his place, and thanks to Red Hat for sponsoring my travels!

What’s new in GNOME Software 3.14

We have been working hard over the past 6 months to make GNOME Software even better compared to the previous 3.12 release. Here’s a quick status update what the new 3.14 release brings.

Refined front page

Thanks to the design help from Allan Day and Lapo Calamandrei, we’ve made a number of improvements to the front page:


Improved update experience

  • We’ve landed redesigns for reviewing previously installed updates, which are now shown in a separate dialog.
  • It turned out that a lot of people were unhappy by too frequent update notifications, and we’ve listened: the notifications are now much less frequent. Security updates are time critical, and to make sure those get installed, GNOME Software nags daily. Other updates are now offered once a week, or you can opt to install them earlier through the GNOME Shell shutdown dialog at a convenient time, if you are rebooting / shutting down anyway.
  • Update details now include the full package version when you click on an update. Again, a much requested feature by power users who want to know what they are installing.
  • The updates page now shows the time when updates were last checked.
  • It’s now possible to disable the background update checks altogether through a hidden setting: ‘gsettings set download-updates false’

Application add-ons

No need to go back to using command line tools to install plugin for popular apps. They are all now available through GNOME Software in the app details page:

 Usability testing

Jim Hall recently published the results for the usability tests he conducted as part of his Master’s program. One of the four apps tested was GNOME Software. We’ve looked through the issues pointed out and have already done a number of changes to take the usability research into account.

New first run dialog which explains what the app does:

Moved the Install / Remove buttons down from the headerbar to a more prominent position:


Support for Arch and Debian and openSUSE

It’s no longer just Fedora where GNOME Software is supported! Richard has done a lot of work this cycle to make it possible to run GNOME Software on other distros besides Fedora. Stay tuned; a number of distros are going to ship GNOME Software this fall / winter.

500 papercuts and countless bug fixes

I am exaggerating here a bit and it is actually not 500 papercuts fixed, but it is still a TON of small issues fixed, hopefully making the overall experience much nicer.

We’ve also had some very nice fixes (THANKS!!!) from people who don’t regularly work on gnome-software. To point out some:

  • Find-as-your-type search by Elad Alfassa
  • New icons for the high contrast accessibility theme by Andreas Nilsson
  • Dogtail UI tests by Martin Simon

Fedora Workstation

GNOME Software is set to be the software installer in the upcoming Fedora 21 Workstation release and Richard and I both have been focusing a lot on making it work really well on Fedora.

  • Fedora has nearly 45% of the apps now covered with appdata, thanks to the huge amount of work that Richard Hughes and Ryan Lerch and Máirín Duffy and all the rest of the Fedora contributors have put into this. But do not mistake this as a Fedora Workstation-only feature; it will also benefit Fedora’s KDE spin for having high quality app descriptions and screenshots. And it will also benefit all the rest of the distros since we’ve tried to get most of the appdata included upstream.
  • A lot of improvement have landed in the stack surrounding GNOME Software. PackageKit in Fedora 21 now uses the hif backend based on the libraries from the DNF project, making the GNOME Software experience much much smoother than with the previous PackageKit yum backend. This is a huge step forward compared to what we shipped in Fedora 20.
  • Once Richard’s work to include repository metadata on the Workstation install media lands, it should make the first launch experience much better by removing the need to wait while the metadata is downloaded.

If you have free time and want to help out GNOME Software, install Fedora 21 Alpha Workstation and give GNOME Software a try and report any bugs you can find. All feedback and bug reports are invaluable and highly appreciated.

Thanks everyone and hope you’ll enjoy GNOME Software 3.14!

Application addons in gnome-software 3.13.3

Thanks to Allan Day’s design and Richard Hughes’ backend work, I was able to implement application addon support in GNOME Software. This week, we have released GNOME Software 3.13.3 and the addon support is available in the release for everyone to try out.


The screenshot above is for Audacious that was the very first application in Fedora Rawhide to start shipping addon metadata. If you are an upstream author or a package maintainer and want your addon to show up in GNOME Software, it’s pretty easy to do. All that is needed is to drop a small file in /usr/share/appdata/ with the metadata and it shows up. Check out Richard’s blog post I have linked above to see how to do that. Or catch us on IRC, we’re always happy to help.

GNOME Software 3.14.x is going to be the software installer in Fedora Workstation 21, and we’ve already got 3.13.3 available as a sneak preview in Rawhide. Try it, break it, and report bugs!

GNOME 3.10 in Fedora

GNOME 3.10.0 is now available in Fedora 20!

As usual, Fedora tracks GNOME releases closely. Last week, Fedora 20 Alpha shipped with a GNOME 3.10 prerelease, and today have just landed the final 3.10.0 builds, one day after the official upstream release.

If you are already on Fedora 20, getting GNOME 3.10.0 is as easy as applying all available updates.

Otherwise, grab the F20 Alpha live image or upgrade from F19 with FedUp. Do not forget to apply available updates to get the latest 3.10.0 goodies.

And when done testing, leave feedback in the Bodhi updates system: GNOME 3.10.0 update.


Wrapping up Summer of Code

It’s hard to believe that it’s already the end of September. The summer is over, unfortunately, and school is in full swing.

Yesterday was the firm pencils down date which marks the end of this year’s Google Summer of Code program, and my internship with GNOME.

Yesterday was also the GNOME 3.10.0 tarballs due date, and I’m proud to have my work included in core modules.

The internship was roughly divided into two. The first half was from late June until GUADEC, and the second half ended just now. My work with the Date and Time settings was also naturally divided into two – one part was redoing the Date and Time panel in gnome-control-center, closely following Allan Day’s mockups, and the other part was implementing a new plugin for gnome-settings-daemon that handles geolocation.

This is all now completed. The new control centre panel landed in GNOME 3.9.90, and the settings daemon plugin in 3.9.91. If you are running Fedora 20, it’s already available there.

My work was not only limited to these two modules. As they say, “When something is broken, fix it” – and I tried to follow that principle as much as I could. This meant adding support for GtkListBox in Glade; adding new listbox API in GTK+ and fixing listbox accessibility issues there; adding new time format modifiers in glib; fixing crashers in geoclue and so on. Whenever things got in my way, I would fix them instead of adding workarounds in my own code.

One of the highlights of the internship was GUADEC. Since the GNOME team is all scattered around the globe (or at least I thought so, previously!), it was a rare opportunity to meet other gnomies face to face.

Truth be told, I’ve now discovered that I am not alone – Andreas Nilsson and Mattias Bengtsson are also from Gothenburg and we are now regularly getting together. If anyone else from that part of Sweden is reading this, please join us for the 3.10.0 beers:

Although the GSoC is over, I will still be around and are going to continue maintaining the gnome-settings-daemon datetime plugin and the gnome-control-center datetime panel. My plans for the 3.12 cycle include splitting out the control centre CcTimezoneMap widget and other related code into a separate library to be able to share code between control centre, settings daemon, gnome-initial-setup, and distro installers.

It has been a productive summer for me and I hope I’ve managed to make the corner of GNOME I worked on more pleasant to use. None of this would have been possibly without my excellent mentor Zeeshan Ali and his work on the geolocation libraries. I would also like to extend big thanks to Bastien Nocera, Rui Matos and Matthias Clasen – thank you, without your code reviews and help I would not have been able to land my work.

Hope to see everyone around, and I hope other GSoC interns are going to stick around as well. Thanks for having me, and happy hacking!

Back from GUADEC 2013

This year, the annual GNOME Users and Developers European Conference was held in Brno. It is a beautiful city and the second largest in Czech Republic, with a lot of history and plenty of activities going on.

The conference venue was provided by the Brno University of Technology and was at a campus that had been converted from a Cartesian monastery, dating back to the 14th century. Take a look at the beautiful courtyard:

Courtyard at the venue. Photo by Ana Rey, CC-BY-SA 2.0.

Courtyard at the venue. Photo by Ana Rey, CC-BY-SA 2.0.

There was a lot going on and not just talks; the hallway discussions that took place in between the talks and continued at pubs afterwards were perhaps even more important. And after the 4 core days of the conference were over, we had another 4 days of hackfests where we got plenty of stuff done.

My personal highlights included:

  • The System Settings hackfest where we discussed the upcoming gnome-control-center and gnome-system-settings changes. I presented my work on the Date & Time and received plenty of feedback and ideas how to further improve things.
  • Being able to meet face to face with System Settings developers and designers, and also with people I knew from the Fedora community.
  • Attending to Stef Walter’s ‘More secure with less “security”‘ talk. If you weren’t able to attend it, I would highly recommend watching the video recording at
  • Getting my GtkListBox patches merged in Glade git master and having a live hacking session together with Tristan.
  • Seeing the number of new contributors and how enthusiastic everybody was. Really hoping they all stick around!

Looking forward to Strasbourg 2014!

And last, but not least: thanks to the GNOME Foundation for sponsoring my travels!


At my first GUADEC

I have been around GNOME and Fedora for a while, but haven’t been to any of the conferences before. Up until now!

Arrived at Brno yesterday and met up with other friendly Gnomies. It’s really nice to be able to meet people I only know from IRC face to face. Anyone I haven’t met yet, come and say hi!

Today is the official first day of GUADEC 2013. At 9 am Ethan Lee gave a keynote from a game developer’s perspective and  now start the rest of the talks. Looking forward to the next 8 days. Big thanks to the local team for making things run  smoothly!

P.S. And anyone who reads this and is NOT at GUADEC, be sure to come next year. It really is a lot of fun!



Summer of Code: Progress with Date & Time panel

I have been hacking away on the gnome-control-center’s Date & Time panel, moulding it into the new design created by Allan Day. The new design includes a listview based main view, similar to many other gnome-control-center panels. With the new list based design, some rows have on/off buttons for enabling stuff; other rows act as buttons, opening new dialogs with more detailed settings.

See the design page for the mockups.

I have also tried to fix up issues in other modules whenever I run into them:

Thanks to Alex Larsson’s work, GTK+ recently got a new GtkListBox widget. Alex (he did most of the work) and I converted gnome-control-center to the new widget and all the patches have now been merged to git master. Thanks to Thomas Wood for the patch review and merging!

I converted the network connection editor so please let me know if there are any regressions.

These are my patches from the porting series:

I also helped with some some GtkListBox cleanup in GTK+ itself and added a new gtk_list_box_row_get_index function:

Glade and new widgets
Glade is the visual editor the should work for GtkBuilder .ui file editing, but unfortunately it’s most of the time lagging behind when new widgets get added to GTK+. Most regular widgets are easy to add, but containers require custom code to make them properly work.

Since I needed GtkListBox for my control-center work, I went ahead and added the support to Glade. The result looks like this:


The patch can be found at bug 702296.

Compared to other GTK+ containers, the new GtkListBox is a bit special, because it can’t directly include child widgets. Instead, when inserting new children with gtk_container_add(), it inserts intermediate GtkListBoxRow widgets, which will in turn contain the real children.

This complicates the Glade integration a bit, making it harder to implement listbox resizing.

As seen on the screenshot, I have implemented ‘Insert Before’ and ‘Insert After’ to insert new rows in the listbox. However, there’s some further work needed to be able to add new rows to empty listboxes.

(If anyone who’s good with icons is reading this, could you please help with doing a new GtkListBox icon for Glade? See the screenshot above.)

The new panel
This is how the main view of the new Date & Time panel redesign currently looks:


Clicking on “Time Zone” and “Date & Time” opens up further dialogs for actually settings the time zone and the time.

One missing feature in the above implementation is the Automatic Time Zone. My current plan is to scrap the time zone row for now, and land the rest of the redesign. And once that is done, implement the geolocation based automatic time zone and land it with a separate patch. The geolocation support requires a bit more work, both on gnome-control-center and gnome-settings-daemon side, and the rest of the current redesign doesn’t really depend on it.

Time Zone dialog

This is a straightforward implementation based on the redesign page. In the mean time, Allan Day however has been experimenting with some more changes to how to the timezone selection should look. The experiments are available on the design whiteboard. The whiteboard experiments are also going to be something I want to work on a bit later, after having landed the initial redesign.

Separate timezonemap library
There’s work underway to merge together gnome-control-center’s timezonemap library and the fork used in the Ubiquity installer. There are some differences to be resolved, but I hope we can end up with a shared timezone widget that multiple modules can use. Right now we have gnome-control-center, gnome-initial-setup, gnome-weather, Ubiquity and Anaconda as possible clients. See bug 702194 for the current state of things.

Date & Time dialog


From the screenshot above, the question with “Update time to 7:45 PM?” is not implemented. I am currently not sure how to best do that: should we run a one-off NTP query (ntpdate?) behind the scenes when the dialog is launched, and show the question if the the time differs too much?

Future work
Next up I would like to get the current patches merged to gnome-control-center’s master and then move on to implementing the geolocation support.

  1. Merge current work
  2. Implement geolocation support
  3. Work on Allan’s time zone widget redesign
  4. See if it’s possible to merge together libtimezone map library forks

Offline and vacation
P.S. Sorry if I have missed any IRC messages, I have been travelling for most of the past week and am still catching up with email / IRC backlog.

Hello Planet GNOME!

Woohoo, now starts Google Summer of Code! Or rather, it officially started on Monday, but we only now got added to the planet. Thanks to Alberto Ruiz for pulling an all-nighter and getting all the new interns syndicated to Planet GNOME.

My name is Kalev Lember and I am a GNOME System Settings GSoC intern this year. Many of you might know me from my Fedora related work where I help with GNOME packaging.

During the summer I will be working on improving the Date & Time panel. This includes implementing the new gnome-control-center designs from and adding geolocation support to gnome-settings-daemon. My mentor is Zeeshan Ali.

Maps Hackfest

This week I had a unique opportunity of meeting my mentor in person. I am sure most GSoC interns only know theirs from IRC!

Besides me, Zeeshan has another intern who’s also from Gothenburg — Mattias Bengtsson. Mattias is working on the new Maps application and Zeeshan flew here for the GNOME Maps hackfest: We spent most of the week hacking on Maps and socializing.

Even though it wasn’t directly related to my GSoC project, it was still very fun and I feel like I managed to help out as well. I implemented printing and helped with bug squashing in other modules that affected Maps.

Best luck to all new interns and I hope to meet all of you at GUADEC. And thanks for having me, GNOME!