3.8… clocks, gedit, more…

gnome 3.8 is on track to be released on time as usual (the release candidate will be out later today): it’s a great incremental release with improvements all over the place, but I’ll let the release notes speak.

For my own part, I put my fingers here and there either making patches or trying to help (annoy?) people doing the real hard work with reviews and suggestions.

Clocks has matured from a prototype to a real app and in this cycle. It turns out that while from the code point of view a clocks app is really a small application (some even think trivial and a waste of resources better spent improving other aspect of gnome) it is actually quite challanging to design and decide how all the small details should work, since the user expectations for such a familiar object are very high. It has also been a good way to experiment with the new design patterns and the new widgets (like the ones in libgd). There are surely many things to improve in the next iteration, a particularly sore point that I am a bit ashamed to not have fixed yet it is the persistence of alarms when the app is not running (or even when the system is suspended), but today’s bug is tomorrows chance to get involved!

clocks-3-8

 The application went through a full rewrite to address many of the issues found in the first implementation. I opted for a rewrite in vala because it is probably the more mature technology if you want to write a GObject based app today and  you are a bit sick of writing C boilerplate, but at the same time you need to pull some tricks to call some C code and libraries without proper introspection support. However I think the choice of the language is a secondary aspect of the rewrite compared to the use of some good practices I tried to adopt in the new code (use of many of the new prototype widgets in libgd, use of .ui files, use of GLib resources, use of GLib based library calls for everything, etc). Clocks is small enough I do not exclude to try a JS rewrite even if just as an exercise to see how the platform is maturing. In this regard I am really excited to see Giovanni’s work on defining a good platform for JS apps… I have some opinions in that regard (also due to the fact that I am back doing quite a bit of JS at work), but that’s probably best saved for another post.

 Gedit has been ported to GtkApplication: from the user point of view this mostly means that when run within gnome-shell you will see an appmenu (while you will get the usual menu when running on a WM that does not support that). However under the hood this meant quite a lot of code to rework: gedit makes use of many exotic features of GtkApplication, like handling stdin (you have now to use cat file.txt | gedit – , note the dash at the end) and support for blocking the terminal in order to be able to use EDITOR=gedit for git commits etc).

We also ported gedit plugin system to use Python 3, in compliance to a gnome wide goal. This has the unfortunate side effect of breaking third party plugins once again, but I think it is a step worth taking in the long term and the sooner the better: if you have to port your plugin you just need to specify “loader=python3″ in the .plugin file and make sure the code is valid python 3, gedit’s API did not change.

gedit-3-8

GtkSourceView has seen lots of work on the completion framework thanks to the Sebastien Wilmet, his blog has all the interesting details.

Baobab saw a few of incremental improvements after the major rework of 3.6, including a classy animation from the summary to the results page thanks to the wonders of libgd. With regard to baobab, if you are looking for a challenging, but relatively small and fun project, it would be great to see someone step up and implement animated charts (Stefano had a prototype) and rework the treemap to use the squarified algorithm… It would probably make for a good GSOC project, though you would have to find a mentor since I do not think to have time to do that this year (unless a really strong and independent candidate shows up).

 

9 Responses to “3.8… clocks, gedit, more…”

  1. 3.8… clocks, gedit, more… | The Linux Site Says:

    […] via Club Silencio – by pbor […]

    [WORDPRESS HASHCASH] The comment’s server IP (72.233.96.171) doesn’t match the comment’s URL host IP (66.155.9.238) and so is spam.

  2. Jean Horten Says:

    So designing clocks is challenging? On which planet do yyou live????

  3. pbor Says:

    Did you read the article I linked? I didn’t say that Clocks is hard to implement or an impossibly hard application to design, but I said that’s harder to get right than it may look

  4. MN Says:

    Why all the whitespace in clocks?

    (why not use the space, a clock does not need to be square and fixed in size)

  5. pbor Says:

    The application follows some of the patterns we are exploring in gnome 3 and this includes an “overview” made of regular square tiles. Beside use of white space is an important part of ui design.

  6. Daniel Says:

    Do you really have to break all plugin compatibility again? Can’t you introduce at least a temporary backward compatibility where Python 2 and 3 can both be supported?

    Otherwise, not only will this present a major inconvenience for so many users and devs alike, it seems as if it hurts the reputation of gnome by once again confirming people’s opinions that Gnome will pull the rug out from under people for the smallest of reasons.

  7. Jakub Steiner Says:

    Actually I agree a simple grid might not be the most efficient way to present the world time. We should look into more complex grids and try to give the local time some more weight.

  8. pbor Says:

    Well, I really wished to do the py2 -> py3 switch at the time of gnome 3.0 and break things just once, but as you can see it took almost two extra years so it was not really possible at the time.

    I understand the frustration about this change, but having py2 and py3 at the same time it is not really possible and sticking to py2 indefinitely has its problems too (e.g. pygobject itself is now getting much more testing on py3 and we would probably run into bugs).

    Once again let me stress that there were no API change in gedit itself this time, so porting a plugin is just a matter of complying with py3 syntax and speicifying the new loader in the .plugin file

  9. Peter Says:

    The link to gnome.org is broken. it should be http://www.gnome.org not http://www,gnome.org. [dot not comma]. I know it’s typography though.