GUADEC 2020 and Flatseal 1.6.1

GUADEC 2020

Two weeks ago, I had the chance to share my experiences Flooding the desktop with learning tools, with the wider GNOME community at GUADEC Even though the event went online for the first time, due to COVID-19, it went pretty smooth!

The event was full of great talks, including many from former colleagues, Archaeology of Accessibility by @ebassi, Parental controls in GNOME by @pwithnall, What’s new with JavaScript in GNOME by @ptomato, Communication Hacks by @1nuritzi and many, many others.

The social hours were hilarious and was great to see so many familiar faces. I am really hoping that, whenever we go back to physical events, we can still keep this online experience for those unable to assist.

Flatseal 1.6.1

Since the previous release, I have been slowly making improvements and have finally collected enough of these for a new release.

What’s new?

I started with a second pass on the big refactor I made for 1.6.0. I finally got rid of some “evolutionary” leftovers, and made all the individual permissions models even more self-contained. Again, this makes things much easier to extend and maintain.

Before I move on to the user-visible work, a few words about this project. Flatseal uses overrides as its backend to modify permissions, but it’s really more than just a graphical version of flatpak-override command-line tool. What I am (at least) trying to do with this project is to provide an improved experience for how Flatpak users interact with their applications permissions.

The most noticeable change in this release happens to be a good example of that.

This release adds support for session-bus and system-bus overrides. Users can remove, add or modify existing bus names. Thanks to @digitalethics for requesting this feature.

Being able to modify an existing bus name without having to explicitly think in terms of removing an existing name and adding a new one, seems trivial, but it’s quite an improved experienced already. The model is “smart” enough to detect these changes and translate these properly to one or more overrides. Like this, every switch and text entry in Flatseal went through these kind of considerations.

This release also adds other minor changes, including a fix for cases where applications icons were missing (e.g. for LibreOffice), a small change in the permissions groups labels to match even closer the terms used in flatpak-run and flatpak-override (e.g. “allow” instead of “features“), a fix that prevents Flatseal from crashing when multiple versions of libhandy are available (e.g. when running non-flatpak versions of Flatseal) by @fushinari , among other even minor fixes.

What’s next?

As I mentioned in my previous blog post, my short term goal was to keep adding support for more overrides. Now that Flatseal has almost reached feature-parity with flatpak-override, and that the model representation is way more readable, I will start to reach out to some people from the community to see if they would be interested in seeing Flatseal model moved into a separate library. Help will be welcome!

Last but never least, special thanks to @eson57, @AsciiWolf, @ovari@cho2 , @Vistaus and others for keeping Flatseal translations up to date.

Recipes Hackfest 2018

GNOME and Endless have two similar apps, GNOME Recipes and Endless Cooking. Recipes specializes in sharing recipes between its users, by allowing them to add new recipes from the app, but the way it distributes the content is rudimentary. On the other hand, Cooking, specializes in distributing existing recipes. The distribution of this content is done with the Endless Knowledge framework and is used successfully in dozens of other Endless apps but, it is not possible to contribute new recipes from the app.

GNOME Recipes
Endless Cooking

Based on that, it was clear that both teams had a lot to share and learn from each other so, we held a hackfest at the University of AMIKOM in Yogyakarta, which kindly provided everything we needed.

From the GNOME Recipes team we had Matthias, Emel and Ekta, from the Endless team we had Philip, Emmanuele, Cosimo, Jonathan and me, and from the community we had  Umang, Ahmad, Kukuh and Siska. We also had students attendants from the university.

GNOME and Endless teams

On the first day of the hackfest both teams showed their apps. These presentations helped everyone in the room to understand the strengths and weaknesses of each app and, more importantly, to present the topics that we wanted to cover during the hackfest. The main conclusion of this session was that Recipes should use the Endless content library, and that we would aim to have this for GUADEC. Additionally, Philip did a demo about the Endless content libraries, taking an existing online content source and having it running in a native app. We also discussed ways of introducing more recipes from the local community into Recipes.

Philip writing goals

On the second day, we moved to the details of the front-end. Emmanuele talked about Emeus which triggered the discussions about the Layouts and Cards from the Endless Knowlegde framework. The conclusion was that it would beneficial to separate the Card implementation from the framework so it could be reused in other places like the Recipes app, GNOME Software and even other components of the Endless desktop. After that, we moved on hacking things. Philip started to reproduce the Recipes UI using the Endless framework, while I started converting the Recipes database into an Endless framework content.

On the last day, we showed what we hacked the previous day. I started by showing the converted Recipes database running in different Endless apps, Cosimo showed a Karaoke app that he bundled using flatpak, and Philip showed his recreation of the Recipes UI running with the converted database that I made, which looked incredibly similar and amazing.

Home page of the Recipes UI recreation using Endless framework
Real Recipes content

This exercise of recreating the Recipes app using the Endless framework was extremely helpful, because it revealed the places where we should improve our libraries to make these more flexible for new types of contents. On a personal level, this was the most productive hackfest I have attended. It gave me new directions on how to improve the tools that I am working on. Plus, it helped me to connect and to meet with a lot of new people from the community.

I really want to thank the GNOME Foundation for sponsoring my travel to Indonesia, from Paraguay, and to my employer Endless for giving me the time to attend to the hackfest.