3.28 Release Party

Last Saturday we celebrated the release of GNOME 3.28. It was a bit late, but happened nonetheless!

release party - 2.18
There were even more people than the previous ones!

And even cooler than that: this was not the only Release Party around! Isaac Ferreira also organized a successful one in Recife, Pernambuco!

GNOME is getting some traction in Brazil again – stay tuned 😉


3.24 Release Party in São Paulo

(English version after the Portuguese one)

Fala galera!

Nesse sábado, dia 15 / abril, teremos uma festinha de lançamento do GNOME 3.24! Sei que está um pouco atrasado, mas é melhor ter uma festa do que nenhuma 🙂

O local: Taverna Medieval, na Vila Mariana. Além de ser um lugar muito divertido (poucos lugares tem hamburgeres chamados e.g. Elfo da Floresta, ou Skyrim) , lá tem opções vegetarianas e veganas – ninguém fica de fora da celebração!

Se você quiser participar: comente aqui e me mande um email (georges.stavracas at gmail.com) com seu nome, para que possamos reservar a mesa com antecedência. Teremos um limite de até 20 pessoas, dado que o lugar não é muito grande.

Se você não puder participar, mas conhecer alguém que possa se interessar, compartilhe a informação 🙂

Este evento também está marcado no Meetup: https://www.meetup.com/pt-BR/GNOME-Hacking-em-Sao-Paulo/

(English version)

Greetings, people!

This Saturday, April 15th, we’re having a GNOME 3.24 Release Party in São Paulo! I know, I know, we’re late, but better late then never 🙂

The place: Medieval Tavern, at Vila Mariana. Not only it’s very funny and cool (few places have burgers called e.g. Elf of the Woods, or Skyrim in Brazil) but it also has strict and ovolacto vegetarian options – nobody will miss the celebration!

If you’re attending: drop a comment here and send me an email (georges.stavracas at gmail.com) with your name, so we can book a table in advance. There is a 20-person limit, since the place isn’t that big.

If you can’t attend, but know someone who might be interested in, share the news 🙂

This event is also available in Meetup: https://www.meetup.com/pt-BR/GNOME-Hacking-em-Sao-Paulo/

About internet comments and agressive communication

These days, an online magazine I follow wrote about a topic I love researching. I saw some fallacious, poisonous comments and inadvertedly tried to reason with the individual that wrote those things.

Worst thing I could possibly have done.

Of course it didn’t work out. Of course the individual tried to use every single mean she or he had to make me feel bad, to make me think I’m worthless, my arguments are a piece of crap, I’m a stupid teenager trying to reason with a god-like creature that she or he is.

That made me think about how we usually run conversations through internet. Because I work with GNOME, a thick skin naturally grew. I eventually have people yelling me “y u keep breaking stuff?” or “stop making this piece of crap” or even “ur product is bad, u offend me by releasing it” (and yes, they’re all real comments). After some time, this kind of thing becomes just background noise which we have to work with every day. I can only think that other contributors faced the same kind of top-notch treatment.

It makes me wonder how did we get in this rotten state where people try to push you down for nothing but a few seconds of selfish, ego-driven pleasure.

Is there anything I can do, right here and right now, to improve this situation? How can I encourage people to have non-violent conversations? How can I create meaningful dialogs in this chaotic place where people exchange bad words as part of their routines?

Extending this to the GNOME community, what can I do individually to make our community an even warmer place where people can develop themselves and find use for their skills? What can I do to make our community the role model of how a tech community should be?

Bad news: I’m not attending GUADEC

… not this year.

A few minutes before finishing my sponsorship email, I received a very annoying and sad news: my University appearently decided – without even asking my schedule – that I’ll make a presentation between August 14-18, otherwise they’ll kick me out.

I was already looking for paçocas (if you’re not aware, they may be the best brazilian popular sweet ever made) and gathering some money to pay out my beer debts with all the great people out there.

But no.

Feaneron is sad this night 😦

GNOME Calendar and Drag n’ Drop

One of the most intuitive ways to interact with an application is reproducing what we do in real life. Applications try to shorten the learning curve by using metaphores of real world objects.

We all know what GNOME Calendar is: a virtual calendar application. As such, using real-life calendars as a reference for it’s UI is mostly a good thing, except that we’d probably have an annoying time moving events around. In this regard, technology can improve what we do.

And that’s why GNOME Calendar now supports dragging and dropping events around.
Aaand… our traditional video:

Oh, did you noticed? Year view is much improved thanks to the awsome work of Isaque, who proved himself an amazing contributor and a good friend. And don’t forget, this summer we have an intern, Vamsi, working on the long wanted Week View.Calendar, just like Nautilus, is in it’s best moment.

Writing a plugin for GNOME To Do – Introduction

I’m starting a small series of posts describing a general how-to on writing plugins for GNOME To Do. The good news: GNOME To Do has a very small API and it’s very easy to build plugins.

Note: I’ll show examples in Python 3, since this might lower the barrier for contributors and it’s a language that I know (and LibPeas supports). If you don’t know what LibPeas is, click here.

A Brief Explanation

Before jumping into code, let’s talk about the internals. GNOME To Do allows developers to extend it in 3 ways: adding UI elements, adding new panels and implementing new data sources.

A data source is pretty much anything that can feed GNOME To Do with data. For example, Evolution-Data-Server is a data source (the default and omnipresent one). A panel is a view displayed by the main window. See below:

The extensible elements of GNOME To Do

Every plugin has a single entry point: GtdActivatable. Plugins must provide an implementation of this interface. I’ll write more about this interface below.


As explained, the entry point of the plugin is GtdActivatable, which will provide the data sources and UI widgets. The definition of this interface can be found here. The following methods should be implemented:

void       activate              (GtdActivatable *activatable);

void       deactivate            (GtdActivatable *activatable);

GList*     get_header_widgets    (GtdActivatable *activatable);

GtkWidget* get_preferences_panel (GtdActivatable *activatable);

GList*     get_panels            (GtdActivatable *activatable);

GList*     get_providers         (GtdActivatable *activatable);

A quick explanation of each one of them:

  • activate: called after the plugin is loaded and everything is set up.
  • deactivate: called after the plugins is unloaded and all the registered data sources and UI elements are removed.
  • get_header_widgets: retrieves a list of widgets, usually buttons, to be added to the headerbar. This can be the hook point for your functionality, for example.
  • get_preferences_panel: if your plugin needs further configuration, you can pass the preferences panel through this method.
  • get_panels: retrieve the list of panels of the plugin. A dedicated blog post will be written about it in the near future.
  • get_providers: retrieves the list of data sources your plugin may provide. GtdProvider is the interface a data source should implement. A dedicated blog post will be written about it in the nearby future.

The next posts will be about the various ways to add functionalities to GNOME To Do. Also, the next posts will demonstrate plugins through examples of various kinds. Stay tuned!

News about GNOME News

Aye, folks! Some time ago, we had some movement regarding the News app. It was so. freaking. cool! Finally a good alternative of the now-dead Google Reader. Time has passed and, with my heart bleeding in sadness, we saw no further development of it.


Following my bad habit of necromancy, I managed to dedicate my whole weekend to work on it. All the work is pushed to a branch – since I’m not the maintainer, I obviously didn’t do it on master branch. The results are exciting.


GNOME News had an implementation of search in it’s engine, but exposed no UI to do that. Well, not anymore:

Captura de tela de 2016-03-07 17-55-36
The new search feature


Starred News

Following the mockups, GNOME News had a non-working implementation of Starred News. It works now:

Captura de tela de 2016-03-07 17-53-05
Star button in the headerbar
Captura de tela de 2016-03-07 17-52-54
Starred news in action

Empty States

Like all GNOME apps, News now has improved feedback when no feeds/starred news/search results are displayed. Check this out:

Captura de tela de 2016-03-07 17-53-37
No feeds added
Captura de tela de 2016-03-07 17-53-59
No search results
Captura de tela de 2016-03-07 17-53-25
No starred news


Now it’s at least in a usable state (well, usable for my needs). Tracker is the data backend for News, takes care of automagically update the feeds. I hope this work is good enought to be merged on master, so everyone can easily test 🙂

Do you have any ideas or suggestions? Don’t hesitate to comment!

GNOME Calendar 3.19.90 was released

Aye folks! This was a very productive cycle for GNOME Calendar, and this release is the result of a hardworked cycle. First of all, the bad news: no DnD support, no Week View, no, no, no!

But why, Mr. Feaneron?

The reason is simple. Sanity.

Behind the scenes

GNOME Calendar is build on top of Evolution-Data-Server, so we don’t need to write an entirely new backend and to guarantee system integration (GNOME Shell uses it to fetch events, for example).

The problem is that EDS is an “[…] unholy mess“, and it reflects on Calendar. No matter how skilled are the engineers behind it, Calendar was reaching a point of messy code. No one likes messy code – it makes newcomers run away, maintainers avoid improvements out of fear of breaking the app, the app dies, no one’s happy.

So I decided to not let it reach this point, and did a major rework and cleanup of Calendar internals. Believe me, it wasn’t easy.

The good thing is that we’ll be able to avoid commits like this and this, and after reworking the internals, fixing long-term, hard bugs was a piece of cake. From now on, Calendar is going the right way (IMHO) and we’ll avoid messy code and obscure paths.

Now, let’s go to the cool things.

An Improved Quick Add Popover

Following the recent trend of “Popovers Everywhere! TM”, the quick add popover just got better. Now, the user can select in which calendar the event will be added without having exit the popover. Long-term plans include adding natural language support, so we’ll be able to extract the location, start & end dates from the event summary.

Captura de tela de 2016-02-16 22-22-10
The new quick add popover


Implementing this popover was a delight after the new rework.

Year View, Restyled

Thanks to the new contributor Isaque Galdino, the year view receive some improvements that made it look so much better! And appearently, he won’t stop soon. Check this out:

Captura de tela de 2016-02-16 22-21-45
The improved year view (check the dots under the days)


Thanks, Isaque! I hope you keep up with your really good work.

Keyboard Shortcuts Window

Last but not least, the brand new shortcuts window:

Captura de tela de 2016-02-16 22-21-29
Most people didn’t know Calendar had so many shortcuts!

And, as the tradition dictates, a cool video of the new version:


A Public Request

Since Calendar received such a major overhaul in it’s gears, I need to make sure it is stable and good enought. So I hereby request that, whoever has the chance, please test Calendar. Thanks!

Any ideas, comments or suggestions? Leave a comment below!

I’m joining Endless

Some of you may have asked why I’m so silent for the last 3 weeks. Well, the titles pretty much explain things: between university duties, moving to a new house and conducting my research, I’m also joining Endless!

I’m ridiculously happy with this opportunity, and Endless folks were extremely respectful of my schedule – I’m working remotely, and only as a part-time intern. This is a great chance for me to work with FOSS on something that directly changes people’s lives!

So, wait for 2 more weeks so I can settle again, and I’ll start sending patches and crafting new features on rampage – like the good ol’ times.

GSoC: report #3

During the last couple of week, the following points were achieved:

  • The list of recently connected servers is now correctly saved.
  • Initial work on keyboard support.
  • Some real research on how Nautilus will handle the new mocups.

Fortunately, my graduation is now totally finished. I was also accepted in the Mastering Course in Information Systems here at University of São Paulo (yay!). From now on, I’ll be fully committed to the Summer of Code project, and you guys will see much more updates 🙂

This week, I’ll:

  • Submit GtkPlacesView widget for review
  • Start serious hacking on Nautilus