Accéder au contenu principal


This year again I attended GUADEC, now for the sixth time in a row. It was a great GUADEC, as usual, thanks to the organizers and the attendees for making it as enjoyable as it was!

Friday 🎮

I attended Christian's talk about designing multi-process apps, it sparked the interest of Alexander Mikhaylenko who rapidly started playing with these concepts, as we plan since a long time to run Libretro cores in a subprocess in GNOME Games.

Lubosz presented his work on the VR Linux desktop. Even better, he demoed it, and the next day it was possible to test it in the corridor! So I did, and it was pretty amusing.

I had the pleasure to meet Andrei Lisita and watch his lightning talk about adding advanced savestates support to GNOME Games. It is the first time an intern working on Games attends GUADEC, but sadly this time it's his mentor (Alexander Mikhaylenko) who couldn't attend. One day maybe, an intern and a mentor for GNOME Games will meet. 😛

Games is a newcomer friendly and fun project, which accept interns since about four years now, so don't hesitate to submit your internship projects! Even though I don't maintain the project anymore, I am still really attached to it and it's a true pleasure to see it live without me. 🙂

Saturday 📦

The second day, I attended Patrick's talk about sandoxing WebKitGTK. Given that I'm interested in the development of GNOME Web, I'm very happy to learn that its 3.34 version will sandbox its web precesses.

After that, I attended Emmanuele's update on GTK 4. I am very interested by the development of GTK 4, and I plan to free some time to get more involved in its development. Unless I misunderstood, in GTK 4 containers will be replaced by layout managers, simplifying the widget hierarchy a great deal and dropping child properties in the process.

GTK 4 will introduce a constraint-based layout manager, allowing to implement complex UIs more easily. I'll have to play with all of these changes and learn how to use them properly! Constraints should be added to the layout manager, and they can be implemented either programatically, in a GtkBuilder XML file, or via the dedicated VFL language.

Emmanuele also mentionned gtk-builder-tool --3to4, which should automagically convert GTK 3 builder files to GTK 4.

After that, Jakub talked about designing icons. Drawing icons for GNOME was tedious and virtualy impossible for a developer without a background in art. Luckily I am a failed artist, which helped me designing some icons like the one GNOME Games used for many years, but it definitely was time consuming. Anyway, drawing a complex icon by hand several times didn't work out, so Jakub tried implementing icons with Blender, like the one for Builder. Granted, you didn't have to draw an icon several times, but the skills required to draw an icon where way too high!

So some GNOME designers and developers gathered, and implemented new icon guidelines for GNOME going the other way around: simple shapes, a flat design, and a single scalable icon. Now, you only needed a good idea and some basic knowledge of Inkscape to draw your application's icon! To help support this initiative, a new icon preview app was designed and implemented, allowing you to start a new icon project, draw it with Inkscape with the help of a template, and preview how it would look in GNOME in different circumstances, brilliant! To show how well it worked, he started designing and implementing a new icon with that tool, live, which went as well as all live demos.

As a sidenote, he mentionned that application icons are aligned on the baseline because typically the application's name is displayed below, so not doing so would would create a weird gap. I wonder how well following that logic would work for horizontal covers in media collections like GNOME Games.

Georges talked about maintainership, and how it can crush your soul. All he said was very sound and resonated with my past experiences, which led to abandonning the maintainership of GNOME Games.

Carlos and Sam talked about Tracker 3, which will be built from the ground up with sandboxing in mind, I'm happy to see that coming!

Sunday 🕶️

Cassidy talked about global dark modes and how they can be relevant. I initialy didn't understand the reason for a global dark mode, as I see the dark mode relevant only for applications which deal with graphical content (Videos, Photos, Games…) which is used only sporadically. But this is forgetting an important audience: those who create these contents in the first place. For the same reason graphical media consumption apps tend to use a dark mode, graphical media creation apps tend to do so too, so while graphical artists tend to spend most of their time with dark apps, the few times they switch to another application (a file manager, a web browser…) they can get their eyes burnt by the sudden brightness, causing a sufficient distraction to get out of the zone. A global dark mode would help them to avoid these light bursts. To make the reasoning complete, while a global dark mode is relevant, a global light mode isn't as it would just make the few apps using the dark mode less usable with no benefit.

I still see one downside to a global dark theme: working with a dark theme tends to make you turn you monitor's brightness up more than needed, burning your eyes more than needed without noticing as the screen seems dark, and leading to fatigue. While those working with graphics creation apps will overall benefit from it by avoiding bursts, those who don't need it may enable it simply because dark ⇒ edgy ⇒ cool, ultimately burning their eyes for no good reason.

Regardless of that downside, I agree it's worth implementing. macOS now supports a global dark mode, so does Windows, and, maybe more surprizingly, so does the web. In GNOME, we have the underlying technology to support it, all we need is a global setting to toggle it, and with his elementary hat on, Cassidy suggested making it a fd.o standard for it to work accross desktops. He also suggested toggling it could be scheduled, like for the night light mode.

While WebKit supports the dark mode, WebKitGTK doesn't because of the absence of that setting, to test if your browser supports it, just visit with a browser in dark mode (which should exist on our side yet).

Cassidy also briefly talked about accessibility features as an introduction, and I think he brought something interesting: in elementaryOS, accessibility features are just presented as features. This has two interesting effects: it avoids austracizing those who use these features, and it prevents users who may temporarily benefit from these features from not using them because they would either not think they are for them, or simply not even search in the accessibility category in the first place.

At the end of the day, we had a nice team diner with the other Purism folks in a good vegan restaurant. Apparently, they had the same idea at Endless as they also had a team diner in the same small restaurant at the same time. 🙃

Monday 🛠️

On Monday I attended the GTK hackfest. It has been decided to release GTK 4 in a year (with GNOME 3.40?), and by that time I want to properly fix all the mobile-related issues for which we have a workaround in libhandy or in our downstream patched GTK for the Librem 5, particularly if they are expected to introduce an API or behavior break. I should also merge the adaptive widgets from Libhandy like HdyLeaflet or HdyPaginator, but this could wait if needed.

Christian suggested that a GTK 4 UI designer shouldn't load code, and should instead be stencil-based. That seems really interesting to me, but I wonder how that could work, particularly regarding layouts.

There is a consensus around the need for a GNOME-specific widget library, which would likely receive GtkShortcutsWindow, HdyViewSwitcher, HdyPreferencesWindow, and all the other widgets which are deemed too GNOME-specific to be in GTK itself. This could ultimately remove the need for libegg, libgd, libdazzle, libhandy, and other widget libraries.

Tuesday ✍️

I attended the vendor theme BoF, it wasn't exactly relevant to me but it was nonetheless interesting to follow the conversation.

I spent most of the day working on my talk submission for LAS, getting the idea for an, hopefully, interesting talk, writting the proposal, and submitting it.

Wednesday 🏖️

Beach BoF! We went to some nice beach less than an hour away from Thessaloniki. The trip there felt a bit surreal to me, the scenery was so… homy. It's basically home, except it's at the other side of the continent! I got fairly sun burnt but I'm doing good and I'm almost healed now. 🙂

Thursday 🍨

Leaving on Thursday was stupidly expensive for me, so I stayed an extra day in Thessaliniki to get a way cheaper flight on Friday. I spent the day hanging out with pals who were still around, relaxing, eating ice cream, and attending a festival in the evening.


Posts les plus consultés de ce blog

Librem 5 ❤️ GNOME 3.32

I am glad to announce that the tooling I am working on since the beginning of the year is ready to be used!Thanks to new features introduced into libhandy 0.0.3 and 0.0.4 and thanks to a few fixes to Adwaita in GTK+ 3.24.1, you can make GTK+ 3 apps adaptive to work both on the desktop and on the upcoming GNOME-based Librem 5 phone.We are early in the GNOME 3.32 release schedule and the Librem 5 will be released a bit after it, so if you want your apps to work on the Librem 5, now is the best time: use libhandy 0.0.4 and up, use GTK+ 3.24.1 and up and target GNOME 3.32! A few apps like Fractal, Podcasts, Calls and Chatty are already using libhandy's adaptive capabilities, and other apps are working on their adaptive transition like Contacts, Games, Geary and Settings (all are works in progress). libhandy is available in Debian Unstable and Arch's AUR repository, and I wish it would be in Fedora already to let GNOME Settings' CI pass.For the moment, libhandy is a GTK+ 3 widg…

My Name is Handy, Lib Handy

Libhandy 0.0.7 just got released! I didn't blog about this mobile and adaptive oriented GTK widget library since the release of its 0.0.4 version three months ago, so let's catch up on what has been added since.List RowsA common pattern in GNOME applications is lists, which are typically implemented via GtkListBox. More specific patterns arose, where rows have a title at the start, an optional subtitle below it, actions at the end and an icon or some other widget like a radio button as a prefix. These rows can also be expanded to reveal nested rows or anything else that fits the need.So far every application using these patterns implemented the rows by hand for each and every row. It made using these a bit cumbersome and it led to inconsistencies in sizing, even inside a single application. To make these patterns easier to use, we implemented HdyActionRow, HdyComboRow and HdyExpanderRow. HdyActionRowThe action row is a simple and flexible row, it lets you give it a title, a sub…

GNOME at Capitole du Libre 2018

Last Saturday and Sunday I went to the Capitole du Libre 2018 to animate the GNOME booth and help on the Purism one. It was my first time at the Capitole du Libre, and I really enjoyed the event even though I couldn't attend any talk but the closing keynote, which was really interesting as it was a round table with Tristan Nitot and Stéphane Bortzmeyer. The event is about free software and free culture in general, beside GNOME and Purism you could find associations as varied as Nos oignons, Framasoft, OSGeo, Dogmazic, Monnaie Libre Occitanie, Khaganat, ./, 0 A.D., various distros you already all know and more. I was happy to note that the attending crowed was extremely diverse, ranging from persons barely knowing what free software is to Arnaud Bonatti or persons in their early 10s and already more involved into free culture than I am. I was also happy to recognize persons I already met at the JDLL, either animating booths or visiting the GNOME booth.The event welcomed (IIRC…