GNOME 3.14

Last week GNOME 3.14 was released. I’ve been using my jhbuild copy since last Wednesday, and have to say I’m most happy with the improvements this cycle brought. I wanted to talk a bit about it, and this is one of the reason of this post.

As you can see in the release notes this version includes improvements around the whole stack: the network and sharing settings; the input system, with support for gestures and improved touchscreen support; the shell and a bunch of updated applications.

I’m most happy with the updates on GNOME Shell, this time the developers bring some pretty nifty animations to the Activities overview and windows. There’s also a whole set of changes for the developers using and targeting GNOME as platform. I’ll be talking a bit more on this latter.

GNOME Shell

I thought at first on describing you the animations added to latest iteration of the shell, but since an image is worth a thousands words. I guess a video will be worth 30 times per second the same, so here it is this video showing you exactly that (Note: this is screencast was not made by me).

At first I thought I will be rapidly tired of those animations, usually, animations on the user interface looks good initially but over time just gets in the way of user daily activities. In this case it’s different, as in the case of those well thought features, I’ve been using the new shell for a over week a now, and I’m great surprised of how the animations don’t get in my way. Without being a magical thing, sometimes I realize of it when closing a window, or when opening one, but most of time I don’t even think of it. This speaks very highly on the craft of those designers and developers who accomplish so subtle change. Thanks.

Developers improvements

Now, this is the main reason of the post, even when I have left it to the end.

Life for the developers in GNOME has been improving steady over the last few cycles. GNOME hackers has come up with a DX hackfest, the interest in having a SDK for developing GNOME software has risen in the community, and projects like Christian’s gnome-builder are actively working towards this.

With GNOME 3.14, the awesome design team has come up with an updated version of GNOME Human Interface Guidelines. I can’t stress enough the importance of this. Having a published and updated HIG provides uniformity and organization through the whole set of GNOME applications. I have it for around 4 days, and I have found myself going over to review a pattern, recheck a convention, etc. From simple things like margin, alignment and visual layout to others more detailed like how best use specific widgets available in Gtk+ and the contents of menus are explained there. The work done in getting those HIG ready is really impressive and we should be grateful as a platform of having this guidance for developers, either old ones and newcomers. I think is in order to thank great Allan Day and all the others for their work on this.

Finally, I want to mention Gtk+ improvements as a toolkit. First, the rewrite of Adwaita theme and its inclusion in Gtk+ will provide better experience for the user across different platforms and better looking in general. Second, and most important, the inclusion in Gtk+ of a new Gtk+ Inspector thanks to the work of Matthias Clasen. I won’t be talking much about Gtk+ Inspector since there have been already some post on it. I just wanted to mention it here because with the release of stable versions of Gtk+ and GNOME this is accessible to much more people than the selected team working on GNOME.

As before, I hope you enjoy GNOME 3.14 and its perks. See you around.

Contacts 3.14

It’s been almost seven months since my last post and much have happened. Across the next posts I’ll be telling you some of what’s been and what will come. Yet, today’s post i about Contacts and the improvements we made on this cycle and you will see when GNOME 3.14 gets released.

The biggest greatest work on these past months was implementing inline contact creation. For a long time I had Allan’s mockups lying around, there were, also, some bugs concerning the “new contact dialog” and its behavior. So we set the goal to fix those and implement the feature this cycle. Doing this I realize the some internals cleaning in Contacts is in order, but, since feeling it is a big task I decided to delay it and hack our current ContactEditor widget to make it able to work on the new flow.

Down, at the end, are some screenshots.

We also worked a bit on others details. There’s a list here:

  • Updated all our dialogs to match latest Gtk+ design
  • Fixed the header-bar behavior and looks for selection and edit-mode
  • Fixed some bugs related to changing your default address bug. This included hacking into folks library, a work of which I am very proud.
  • Improved Adwaita dark variant support: Contacts maintained tweaked css code for colors definitions, we set out to use the defaults provided by the theme in order to work well with both variants.

I hope you can enjoy latest version on Contacts when it’s released. Go, find and bugs and improvements and let us know

A word on bugs

I’ve been trying to maintain Contacts’ bug list properly tagged and organized. In accomplishing that I’ve marked some as NEEDINFO, now, it’s been a while of this. I just wanted to let you know, I’ll be closing those bugs if they don’t get any updates before 3.14.1 is out on October 15.

Presenting GProxies

Lately, I’ve been working only from my laptop, and since I’m moving a lot usually I find myself in situations where I need to change networks details to properly connect to Internet. Now, GNOME and NetworkManager network configuration system does a decent job at remembering your network settings across different network.

The thing about this, it’s that a network profile as defined in System Settings does not keep your proxy configuration for that profile. So I took the task to wrote a small tool for keeping different proxy configurations and allowing easy switching between them.

The tool is called GProxies. It’s built using latest Gtk+, GLib and Vala. I tried to use the minimal amount of dependencies so it won’t have that much noise.

GProxies is designed with a very simple plugins system. Plugins are meant for updating other applications’ configuration whenever you select a different proxy setting from the interface. For instance: I made a plugin for updating my git’s http.proxy config automatically when selecting a different a proxy settings. There are two types of plugins: one main default plugin, for setting GNOME system settings’ proxy and the others living inside ${XDG_DATA_DIR}/gproxies designed to update other applications configuration.

A plugin is defined by a folder named after the plugin in ${XDG_DATA_DIR}/gproxies with two or more files in it:

  • a plugin.ini key-file. More details are explained here.
  • an executable script/application which receives proxy details as calling arguments

This way you can make plugins for changing the proxy in any applications you want. I’ve made another repository with the plugins I’ve write for myself.

Right now the tool is in a working state. I have some other improvements in mind, such as:

  • Add some interface to properly enable/disable plugins
  • Add the ability to install plugins from zipped files or remote sources
  • Add a direct-connection (no proxy enabled) state

Finally, I’d like to say how much I enjoyed coding a small application for the GNOME desktop. Gtk+ toolkit is perfect for this kind of task, with widgets which helps enforcing GNOME HIG making an application fits properly in the desktop environment. Also, Vala as a language it’s really powerful and composite widget templates from Gtk+ really speed up the development process. The code of GProxies is pretty simple, and I guess it would make a nice reading for GNOME developer beginners.

Below, I present some screenshots. I hope someone will find this useful.

Contacts 3.10

This is post was due for about two weeks ago. I’ve been very busy, so here it goes.

GNOME 3.10 was released almost three weeks ago. A huge number changes and improvements were made as you can see in the release notes. Those changes affected Contacts as well.

This cycle the platform gained client-side decoration support from Gtk+ toolkit. We, in Contacts, also incorporated a cool header bar, which in our case has the perk of being splitted between the contacts list and the main contact pane.

The change in Contacts I’m most proud of is the new Change AddressBook dialog. It’s an UI change that improved the experience a lot and clarified which is the active addressbook

Finally, under the hood, Contacts is starting to use most of the new widgets recently migrated into Gtk+ and the template support landed this cycle.

Edit: I owe you screenshots.

A Week for Releasing

I’ve set a deadline for doing a weekly post. Well, last week, I missed. It was a really busy week. I was building a web-page, and I haven’t done that in like 10 months or something so I had a lot to catch up. It was fun, though. I’m right now looking forward to start playing around with Rails 4

On the other side my Gnome duties caught up with me. I’ve been acting as Contacts maintainer with Alex for a while now. But so far, he was doing the releasing part. I, usually, implemented new stuff, reviewed patches, fixed bugs, but no more. This past week since Alex is on vacation I had to fill in doing the release.

I was prompted by Matthias Clasen for doing a release of gnome-contacts for the 3.9.4 development release of Gnome. In the process, I realized I can’t log into master.gnome.org for the purposes of uploading the packages. So, Mathias kindly offered himself to upload the package. Later I got my account authorized, and I was able to release gnome-contacts-3.8.3. This latter one, I was surprised to see it packaged this morning into Archlinux.

These two releases are only bug fixes, yet there nasty bugs fixed there. You can read the NEWS file, or the commit log to find about.

What’s next on Contacts ? I want to implement New Contact flow inline and get rid of dialog, and close a bunch of bugs around it. Also, yesterday I got a bug from Allan about updating a bit the selection pattern, and I would like to work on it.

Update: I have to thanks Jonh Wendell for his fix of the webcam bug.