Tag Archives: gsoc2013

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: https://wiki.gnome.org/BeerInGothenburg/Version3.10

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 http://www.superlectures.com/guadec2013/more-secure-with-less-security
  • 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!

sponsored-badge-simple

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!

 

badgebanner-125

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:

GtkListBox
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:
https://git.gnome.org/browse/gnome-control-center/commit/?id=62f18a2e32fab1b2129ae5f8cb58be840a63fcb6
https://git.gnome.org/browse/gnome-control-center/commit/?id=a14e52b9eddb1060fdb1f3f7a8d8508fb22e6374
https://git.gnome.org/browse/gnome-control-center/commit/?id=620bc4bb1f9092448abf3570ecc498f41dec2a77

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

https://git.gnome.org/browse/gtk+/commit/?id=b46d583f87835c303ecc86f29bd601eb0b678863
https://git.gnome.org/browse/gtk+/commit/?id=1f9fd5a95269740ce60984dd80c6c939f890cac3

https://git.gnome.org/browse/gtk+/commit/?id=5d121a8aaaa062711a4b46ca5579c80162c5ded8

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:

glade-gtklistbox

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:

date-and-time-mainview

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
date-and-time-timezone-selector

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

date-and-time-timeedit

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 https://live.gnome.org/Design/SystemSettings/DateAndTime 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: https://live.gnome.org/Hackfests/Maps2013. 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!