Blog

The Road to 3.28: Calendar and To Do

New tasklist view in To Do 3.27

Greetings my GNOME friends!

It’s been a long time with no news. I guess work and masters are really getting in the way… good news is that I’ll finish masters in 2 months, and will have some free time to devote to this beloved project.

“Bad” news is that, after almost 6 years, I’ll finally take some time to have a real vacation. I’ll stay 3 weeks out of the loop in February, a time where I’ll be traveling to the other side of the world, watching the sunset at the beach with my wife. Without a computer. While it’s unfortunate to the community, I think this time is necessary for my mental health – I’ve gone way too many times through the almost-burned-out state recently.

But even with all of these thing in our way, thanks to the help of awsome old and new contributors, Calendar and To Do received a lot of new features!

Calendar

Lets begin with my beloved Calendar. My focus for the past weeks was rewriting the Month view. It was a hard, painful process, but I can say for sure now that, of the very few responsive widgets in GNOME, the Month view is the best one! 😛

The most substantial changes were:

  • The day numbers are at the top of each cell now. This is thanks to the hard design work of Allan Day, Jean-François and Lapo.
  • Each cell now only shows the overflow button when absolutely necessary. When implementing this new behavior, a few longstanding issues were fixed.
  • The Month view now finally has a fully working, sane code to deal with RTL languages.
  • When clicking the +N button, the cell “zooms in” and display the list of events. This is a big design improvement over the popovers that we were using.
  • Code-wise, the Month view code that position the events is an order of magnitude simpler and easier to read. It may sound like a purely technical matter, but it has user-visible effects too: easier, cleaner code means more features and less issues in the future.

Of course, no words can make people as excited as a sequence of pictures! Lets check this out:

 

The animations were implemented usuing the animation framework in libdazzle, all thanks to Christian Hergert’s work on GNOME Builder. Kudos!

For the next cycle, thanks to the hard work of a new and awsome contributor Florian Brosch, this is what’s coming next:

Weather indication in Week view
Weather indication

We’re on track to land the features that were proposed for this cycle. You can check out the plans at the Roadmap page of Calendar. You can also get help us with these tasks with design, code and testing!

To Do

GNOME To Do also received a lot of attention already. We’re going through a big redesign, thanks to the leading design work of Tobias Bernard, and the results are already gratifying.

The immeditaly noticeable change is the tasklist view:

New tasklist view in To Do 3.27
New tasklist view in To Do 3.27

 

The rows are entirely draggable now. I’ll continue working on these features, but more importantly, I want people to take some of this work over and contribute to the project!

Talking about managing tasks, GNOME To Do was moved to GitLab! I can’t state how much of an improvement it is over the previous Bugzilla approach. We now have an updated and organized Kanban Board:

 

GNOME To Do in GitLab: the Kanban Board
GNOME To Do in GitLab: the Kanban Board

The reason for that is to have a consolidated workflow:

  • A designer moves the task to “Design” column and works on it.
  • Once design is settled, a developer moves the task to the “Development” column and fixes/implements the task.
  • When the task if implemented, the developer moves the task to “Code Review” column, and a maintainer will review the code.
  • Once the code is reviewed and the code landed, the task is moved to the “QA” column, where a tester will pick up and test it.
  • When all the regressions and issues of that task are fixed, the task is closed

So far, the experience with this workflow has been outstanding. We were able to find out much more bugs due to QA being a first-class citizen in the process.  Filing bugs is now a breeze too! There are bug templates already available, and I took the burden and made a colossal cleanup and organization of the bug list:

GNOME To Do in GitLab: Issue Templates
GNOME To Do in GitLab: Issue Templates

I encourage everyone to not trust me and go check it out: https://gitlab.gnome.org/GNOME/gnome-todo. The downside is that I’m feeling incredibly demotivated to check Calendar bugs in Bugzilla now 😦

We’re Not Quite There Yet

While many of these changes are super exciting, this is just the first part of the cycle. There are much more to work on, and the more people get involved, the more we will accomplish. Things are moving in a fast pace, and I’m incredibly happy with the direction of these projects.

To help pushing community involvement, I went ahead and wrote a page describing how can you help testing. With Flatpak, this is ridiculously easy – and yet, absolutely necessary! So, don’t hesitate to get in touch and help us shaping the next GNOME version.

See you all around o/

Advertisements

Flatpak Workshop at Latinoware

Last week I gave a Flatpak workshop at Latinoware, one of the biggest South American Free Software meetings.

IMG_0982

It was a triuph! The room was fully loaded, and everyone (almost 30 people!) managed to create their own Flatpak repository and their own Flatpak app.

You can find my slide deck here (in Brazilian Portuguese).

And of course, we went to the Iguaçu Falls with our new friends:

IMG_1001

 

This whole journey was sponsored by my employer Endless, thank you so much!

Improved half tiling available in Mutter 3.26.1

A late night announcement: the improved tiling patches (shown in a previous blog post) were merged in Mutter and and GTK+3, and will be available in GNOME 3.26.1 / GTK 3.22.23 (not yet released; should be available this week).

I’d like to thank Florian Muellner, Matthias Clasen, Jonas Adahl and AlexGS for all their support, time, code reviews and testing.

Have a wonderful night!

Visual revamp of GNOME To Do

Greetings, GNOME friends!

I’m a fan of productivity. It is not a coincidence that I’m the maintainer of Calendar and To Do. And even though I’m not a power user, I’m a heavy user of productivity applications.

For some time now, I’m finding the overall experience of GNOME To Do clumsy and far from ideal. Recently, I received a thank you email from a fellow user, and I asked they what they think that could be improved.

It was not a surprise when they said To Do’s interface is clumsy too.

That motivated me to experiment and bother our designers about ways to improve GNOME To Do. With the great help of Tobias Bernard, a super awsome contributor, we could figure out a way to improve the current situation.

Opaque Task Rows

One of the problems of GNOME To Do was the translucent task rows. Priorities would be semi-transparent colors applied on top of transparent rows.

Of course this mess could lead to things like this:

Mess
Can you tell which tasks are high, medium and low priority tasks?

After some investigation, a lot of experimentation and feedback from multiple design team members, we could come up with this:

New colors
All opaque rows with priorities at the borders.

I personally think this is a small, but huge improvement over the previous state. When you have to stare at tasklists for hours, the minor annoyances are what causes the biggest frustrations.

Inline Editing

Another big aspect of To Do that was the task editor panel. This was initially made based on some old mockups, but this proved to not be the ideal experience.

The biggest problem was that there were no connection between the editor and the task. Of course there is an arrow pointing to the task row, but consider that:

  • The task title is edited in the task row
  • All other fields are edited in the side panel
  • The arrow might now be obvious to spot
  • The real representation of the task was the row, not the panel

So Tobias suggested me inline editing of tasks. I went ahead and implemented it, and the result looked actually very good!

Inline editing
Editing the task where the task is represented.

The necessary width was reduced, and now the window can be shrinked to small sizes. And it works nicely on Dark Themes too:

Dark theme
New rows on Dark Theme variant

This work already landed on master, and will be part of GNOME To Do 3.28. And, of course, our traditional sequence of images:

 

Any comments? Thoughts? Please let me know in the comments! And don’t ever forget, you can always get involved – you just need to get in touch, and join us at #gnome-todo at irc.gnome.org.

Enjoy!

GNOME 3.26 is great

Greetings!

I am incredibly excited for GNOME 3.26, and it’s been hard to wait for it. I openly admit this fact. This release saw serious, important improvements all over the places, new features landed, some others didn’t, thousands of bugs were fixed all across the platform, and I’d like to share my personal highlights for this release.

Calendar

As the result of a successfull Google Summer of Code project from Yash Singh, Calendar now supports events with recurrences. So far he did an outstanding job! There ain’t no secret in using it, and in fact it should be as simple as one could expect. Here’s a small video showcasing this new feature:

 

To Do

Another successful Summer of Code project from Rohit Kaushik introduced Todoist integration. This was made in cooperation with a GNOME Recipes intern, and many improvements to the entire stack landed.

Todoist in GNOME To Do
Todoist in GNOME To Do.

Builder

What can we say about Christian Hergert’s work on GNOME Builder? It’s simple wonderful! This cycle, GNOME Builder received a redesign UI, code indexing, documentation cards, debugging capabilities and a great fullscreen mode. The code highlight is working like a charm too.

GNOME Builder 3.26
GNOME Builder 3.26 showing documentation card and displaying the functions with ‘gcal_manager’ prefix.

After using Builder for a couple of years now, I can finally say that, as a user of the application, it now covers all of my big needs. I am really happy to see how Builder is coming along, and how my development workflow was improved by this tool. Really, it allows me to code much faster now!

Thanks Christian, you deserve all the best!

Games!

Games is an app that I have a love and hate relationship. I love how simple and straightforward and powerful it is – specially because I love retro games – but I hate how it tempts me to spend my time playing instead of working.

I think Games is the GNOME app that makes the best usage of Tracker currently. It literally just works. I can plug my joystick, select a game and play it. And, because it uses libretro, I can play the games I love the most: Playstation games. Even the ones with multiple disks!

GNOME Games
I’m terribly awful playing Megaman X6 😦 Still fun though

Thanks Adrien for creating this great app 🙂

Flatpak

I didn’t say this before, but nowadays I only use the unstable version of GNOME apps through Flatpak’s Nightly channel. Also, I run Steam and Spotify through Flathub.

It works like magic. Almost literally.

You should give it a try.

Stability. I love Stability.

When I wrote my impressions about the 3.24 release, I was really frustrated about the overall experience of 3.24. Having a session that crashes every 2 minutes when you already have your own tight deadlines didn’t help.

Things improved drastically during the cycle, of course – thanks to the tireless efforts of Philip Chimento. He was brave to make himself responsible for a very core component (GJS) and work on it. He fixed all the worst bugs already, and the JS platform is finally advancing again thanks to him. We should really get him a drink, don’t you agree? 🙂

And I now realize that I wrote about those issues in the worst possible way I could’ve. And, from the very bottom of my heart, I beg the pardon of the community about that.

Sorry, folks.

My Contributions

This cycle, I did a few things that I’m happy. Specially because I myself will benefit from them as well! 🙂

Settings

You’re probably aware of it already, but GNOME Control Center’s UI was revamped and rebranded as “Settings”. I think that this rebrand, together with GNOME Tweak Tools becoming “Tweaks”, make it clearer and more obvious the different purposes of those apps.

New Network panel
The new, single column Network panel

The panels are now much more consistent, and the overall experience should be more streamlined now. It’s looking simple and intuitive, and yet we present the same ammount of features! I wrote about it in this blog post. Even though this work was huge, and I am feeling mentally tired after this battle, I’m also very happy we managed to get this done for 3.26.

Thanks for everyone involved!

Fullscreen Mode in Builder

This was one tiny contribution from my side, and Christian was the one that actually made it great. But it makes Builder much more usable on a standard 1366×768 screen, where I can’t half-tile it. This is how it used to look like:

Yay!

Moar Music Performance

Another cycle, another round of performance improvements in GNOME Music. This time, an issue in the Album Art loading code was killed with fire. Check this out:

 

Quarter Tiling, where are you?

This is complicated. As you know, I’m not a window manager expert. And Mutter is huge, with dozens of edge cases that I didn’t know of. This led to me spending a stupidly long time testing a high number of different setups and configurations.

The good news: the patches are working.

The bad news: they couldn’t make it for 3.26.

Depending on the willingness of Florian, and the acceptance of the Release Team, I can try and request a feature freeze break for 3.26.1, but there of course is a chance that this is not going to be accepted. Which is totally reasonable, few people are willing to introduce potentially buggy new features in stable releases.

Even if it doesn’t make for 3.26, I’ll continue to work towards quarter tiling and we, at the very least, can expect it to be very well tested for 3.28.


I’d love to hear your comments and suggestions. What are your impressions about this GNOME release? Drop a comment below!

Release Party in São Paulo, Brazil

(English version after the Portuguese one)

Fala galera, tudo bem?

Teremos uma pequena festa de lançamento do GNOME 3.26 + 20 anos do GNOME em São Paulo. É uma celebração da comunidade para a comunidade, organizada pela comunidade. Graças ao nosso querido colega Derek Stavis, temos um excelente local para realizar a celebração – marquem aí em suas agendas:

  • Data: 13 de setembro (quarta-feira)
  • Horário: 18h30 ~ 21h
  • Local: Stone Pagamentos, Rua Fidêncio Ramos, 308, Vila Olímpia

Todxs serão muito bem vindxs. Basta me mandar o nome completo, e o número de um  documento de identidade (RG ou CPF).

Se puderem, levem salgados, sucos e/ou doces.

Abraços


(English version below)

Greetings community!

We’ll have a small 3.26 release + 20 years party in São Paulo. It’s a celebration of the community to the community by the community. Thanks to the almighty Derek Stavis, we’ve got an excellent venue – write it down on your calendars:

  • Date: September 13th (Wednesday)
  • Time: 6:30pm ~ 9pm
  • Venue: Stone Pagamentos, Rua Fidêncio Ramos, 308, Vila Olímpia

Everyone is more than welcomed. Make sure to send me your full name, and an identity number (RG or CPF).

You’re encouraged to bring snacks and juices.

Introducing Settings (or, the new Control Center)

Greetings my friends,

if you’re following the GNOME development closely, you’re now more than aware of this movement of reworking GNOME Control Center. It was a remarkably colossal work, specially because we used a bottom-up approach: fix the panels, then switch to the new shell.

With the release of GNOME 3.25.91, I’m proud to say: the new Settings layout is the official one now.

This is how it looks like:

Captura de tela de 2017-08-23 21-00-21
The new Settings app

A Long Road

… It all began one year and a half ago. I wrote about it at the time, remember? 🙂

When Jon McCann and Allan Day expressed their vision of how a Settings application should work in the form of mockups, I was particularly excited with them. Specially because, with these mockups, we could easily make Settings work on low resolution displays, which is a very important feature for Endless. Since I adapted GNOME Control Center downstream for them, and we all agree that upstream would be better, it made sense for them to support me working on the new Settings layout.

Chronologically speaking, this is how the work unrolled:

Overall, it took 18 months of work from 15 different people (some more involved than others) and more than 30.000 lines of code changed. This work was massive. Thanks to all the contributors who gave their time and energy for free in order to make it happen.

The new Network panel

You read that right. The last big panel that required an update was Networks. This because it used the old 2-column layout, as you can see here:

Old Network panel
The old, 2-column Network panel

While this layout worked well enough with the previous Control Center layout, it would be inconsistent with the new Control Center layout, since both the panel and the shell would have a sidebar. Thus, we could not set the new Control Center shell until we fixed these panels with 2 columns.

But fortunately, using my remaining energy and abusing the super awsome Rui Tiago Matos’ review capabilities, we managed to review this old mammoth panel and the result is actually nice! This is how it looks now:

New Network panel
The new, single column Network panel

This panel, however, is not final; we’ll do another UI review for the next cycle, and split the cellphone Bluetooth connections into a new panel called Mobile Broadband. The advanced connection editor dialog also received a very needed UI review as well:

Improved connection editor dialog
The improved advanced connection editor dialog

This, as you can imagine, is also not final. The idea for the next cycle is to continue improving this dialog so that we can present the same (or even more) ammount of options in a much saner and simpler way, avoiding confusion and misconfigurations.

Introducing Settings, the new Control Center

Settings is the rebranded name of Control Center. I won’t be mouthful here when I can show you that, right? There you go:

 

Thanks to Jakub Steiner, the Details and Devices rows have dedicated icons that looks super great! Check this out:

New Icons
The new symbolic icons in Devices and Details rows

Allan, Rui and I spent the past couple of weeks fine tuning tons of minor details and the overall behavior of the new Settings layout. More than 40 minor improvements landed in the mean time, and we can expect even more during the next week.

Next Steps

Improve the Sound panel, do another UI iteration over the Network and Wi-Fi panel, introduce the Mobile Broadband panel and fix all the countless bugs that appeared because of this work.

All in all, I’m personally loving how this work went; how many contributors appeared and gave their personal touch to this work; and also, how supportive and positive the community reception was.

(Pshh, only between us; the GNOME community – both users and contributors – is just awsome!)

Of course, as one can imagine, this work was not without flaws. Lots of them were caught early in the cycle, but some issues will only be found by users testing this new work. So, if you’re not sure about how to start contributing, let me reassure that testing the new Settings and filing bugs would be a tremendous contribution. Bonus points if you provide a patch fixing that issue!

Acknowledgements

Many contributors were involved in this colossal work, but I’d like to personally thank Felipe Borges, Bastien Nocera, Allan Day, Mohammed Sadiq and Rui Tiago (in no particular order) for their role on this work, ranging from UI review, panel porting and code review.

I’d also like to thank my employer, Endless, to support me work on this since the very beggining. While this was not my main focus of work, without the support, it wouldn’t be possible at all.

Because, if you still didn’t know…

banner down

GUADEC + Unconferences | 2017

This year’s GUADEC was amazing. I’m really happy I could attent it this year (even though my tasks are accumulating and I’m really afraid to look at my emails again…). I’m still in Manchester so, if anyone wants to meet me and buy me a tea, do get in touch!

There were quite a few talks that I enjoyed. I can’t really name one that I liked the most, but on the top of my list are:

I had a special interest in Richard’s talk. He raised many relevant questions and exposed how complicated it can potentially be the problem of donations and payments. More about that in the future.

Calendar & To Do

I had the chance to sit down and see a power user interacting with GNOME Calendar. It was an unique and enlightening experience. I was able to see a few areas where Calendar can do better in terms of UI/UX.

Unfortunately, GNOME To Do didn’t have the same luck. I’m still somewhat unhappy with the current UI of To Do, but I’m running out of ideas on how to improve it without a complete rewrite (which I simply don’t have time to do now). If you’re a GNOME user with any kind of background on design, ~please~ get in touch: I’d love to gather some feedback on To Do!

GTK4

I had the chance (and honor) to be present at the discussions for GTK4. In these discussions, we did a big list of topics and discussed each one of them in details.

This slideshow requires JavaScript.

I admit that, during these discussions, I felt like a kid at times – the GTK hackers are incredibly smart and skilled people. The other side of the coin is that, while I was feeling like lagging behind them, I also felt honored and happy to be surrounded by such amazing people.

The biggest problem to solve now is the accessibility stack. After digging into the topic and clarifying how it works, we concluded that this topic was too big and complex for that moment, and deserved a hackfest of its own. We’ll organize one during the next months.

Wrapping up, I can’t state how productive these discussions were. Thanks to Matthias Clasen, Benjamin Otte, Christian Hergert, Cosimo Cecchi and everyone else that drove the discussions. We now have a solid GTK4 roadmap that I’ll move to the GNOME Wiki in no time.

GNOME Shell

An unexpected thing happen during the Unconference days. When talking to my good friend Mario we asked ourselves: how can we improve our own Endless tasks by upstreaming our features?

Endless OS shell has many features that GNOME Shell doesn’t, and maintaining downstream patches is expensive and simply not cool. One of these features was specially important, as it is difficult to maintain and lots of GNOME users frequently ask for.

This specific feature was considered in the past, but had many design constraints and we end up never solving it design-wise, nor implementing it.

This is about to change.

After a rather spontaneous group discussion, we found solid solutions for all the relevant edge cases of this feature 🙂  I’m sure Mario will write about it in the future, and probably will implement it as well, so stay tuned!

Because, in case you forgot:

banner down

(And yes, I purposely didn’t say which feature I’m talking about – but I’m sure many of you can guess that :P)

Mutter

After a long explanation and discussion with Florian Müllner (and of course, getting him a well deserved beer for being the GNOME Shell and Mutter maintainer!) the path for quarter-tiling is much clearer now.

The original idea is to implement tiling support using constrained edges, rather than tiling states. But this is hard, and now I believe it’s effectively impossible to do that.

Olivier Fourdan tried to propose a Wayland protocol for that, but discussion ended up freezing and no progress was made for a long time. I admit I’m kinda scared to try to send  these changes upstream… see the bug’s feedback (sometimes I forget that the GNOME community is much more welcoming than many other FOSS communities).

I now have a real problem to solve, and the time is not enough. Perhaps it’s time to declare bankruptcy?

Acknowledgements

I’d like to thank the GNOME Foundation for sponsoring me. I sincerely hope that my engagement and contributions pay off this investment!

I also thank my employer Endless to let me join. The upstream contributions we’re doing are valuable for the community, and in turn it helps us lowering the number of downstream changes to maintain.

sponsored-badge-shadow

Ready, set…

GRU Airport

As I’m writing, this is what I see:

GRU airport
Lights, flying metals…

That’s right: I’m going to GUADEC.

And you should go too. Registration is still open.

And all of this is only possible due to the GNOME Foundation’s sponsorship, and my employer Endless, who is a strong partner of the GNOME community!

I’ll work hard to use my time there the best as I can.

If you see a long-haired white man smelling like a GNOME hacker, don’t hesitate to come and talk!

sponsored-badge-shadow