March 14, 2022

GStreamerGStreamer 1.20.1 stable bug fix release

(GStreamer)

The GStreamer team is pleased to announce the first bug fix release in the stable 1.20 release series of your favourite cross-platform multimedia framework!

This release only contains bugfixes and it should be safe to update from 1.20.0.

Highlighted bugfixes:

  • deinterlace: various bug fixes for yadif, greedy and scalerbob methods
  • gtk video sink: Fix rotation not being applied when paused
  • gst-play-1.0: Fix trick-mode handling in keyboard shortcut
  • jpegdec: fix RGB conversion handling
  • matroskademux: improved ProRes video handling
  • matroskamux: Handle multiview-mode/flags/pixel-aspect-ratio caps fields correctly when checking caps equality on input caps changes
  • videoaggregator fixes (negative rate handling, current position rounding)
  • soup http plugin: Lookup libsoup dylib files on Apple platforms; fix Cerbero static build on Android and iOS
  • Support build against libfreeaptx in openaptx plugin
  • Fix linking issues on Illumos distros
  • GstPlay: Fix new error + warning parsing API (was unusuable before)
  • mpegtsmux: VBR muxing fixes
  • nvdecoder: Various fixes for 4:4:4 and high-bitdepth decoding
  • Support build against libfreeaptx in openaptx plugin
  • webrtc: Various fixes to the webrtc-sendrecv python example
  • macOS: support a relocatable `GStreamer.framework` on macOS
  • macOS: fix applemedia plugin failing to load on ARM64 macOS
  • windows: ship wavpack library
  • gst-python: Fix build with Python 3.11
  • various bug fixes, memory leak fixes, and other stability and reliability improvements

See the GStreamer 1.20.1 release notes for more details.

Binaries for Android, iOS, Mac OS X and Windows will be available shortly.

Release tarballs can be downloaded directly here:

March 14, 2022 12:00 PM

March 09, 2022

Jean-François Fortin TamPlease adapt Mozilla’s code so that PDF readers on Linux can handle XFA forms!

Y’know, all those horrible government forms?

No, I mean the digital ones, meant to be opened specifically with Adobe Reader?

Well, in Q4 2021, Mozilla’s PDF.js landed support for XFA PDF forms, so Firefox is now able to deal with them, which is huge deal, as we have been increasingly encountering such documents over the years, and still will be for a long time, especially given how slow-moving governments can be when it comes to their digital practices.

It would be fantastic to see these code insights put to use in Poppler, the library that Evince, Okular and other applications use… so if someone feels like fixing one of the few biggest issues with reading/filling PDFs under Linux, please use this code (see also: all the XFA-related pull requests) as inspiration to contribute a fix to this and that issue in Poppler!

Of course, there are remaining issues related to forms in PDF.js, but it’s still better than nothing; and perhaps your efforts in replicating this functionality into Poppler can lead to interesting cross-project findings that can also benefit the PDF.js project?

by Jeff at March 09, 2022 10:55 AM

March 03, 2022

Jean-François Fortin TamGetting Things GNOME 0.6 released

Yes, ladies, gentlemen, and seemingly-dead plants, it’s happening: after over 10 months of incremental work from the community, we are now releasing version 0.6 of our favorite personal productivity app, Getting Things GNOME. This release comes with some new features, lots of code improvements, many bugfixes and UX refinements (I am told that the “Better procrastination button”, presented below, deserves a place in the Museum of Modern Art).

Save the children, and the parents… tasks.

GTG 0.6 includes fixes for a long-standing higgs-bugson crasher, that would happen under some unpredictable conditions (such as issue 595 and issue 724) and was therefore hard to reproduce for a long time… until I hit the point, in my chaotic 2021 year, where I had accumulated over 2500 tasks as I forgot to clean my closed tasks for a few months… when your data file is that big, the bug becomes much easier to trigger.

We also fixed this mandelbug that would make GTG show inconsistent results in the list of tasks, under some circumstances. Neui was able to deduce the cause for the problem by looking at the tracebacks, and provided a fix in liblarch. GTG 0.6 will therefore require an updated version of liblarch.

Those two deeply nested bugs are the reason why I’m officially codenaming this release… “Shin Kidō Senki GTG Wing: Endless Recursion”.

(Insert a Zimmer-style “bwaaah” brass sound effect here. An Auralnaut is fine too.)

“Where’s my cal, Dave?”

Hey, we have a new synchronization backend now! If you have a CalDAV server (for example, something with OwnCloud or YUNOHOST), you can use this to synchronize GTG across your multiple computers.

It’s been a long time in the works. I would like to thank Mildred for doing the initial research and coding, then François Schmidts for doing another attempt at coding this feature, and for being very patient with us until we could finally merge this, after a lot of other architectural work landed. I know it can sometimes be tough for new contributors to wait for their code to land in an established open-source project, and for that project to also release the code in a stable release.

(With apologies to Mildred, François, and Padmé.)

Check out the built-in user manual pages to learn how you can use the CalDAV sync feature. There’s an online copy of the user manual, too. So far nobody reported catastrophic failures, so this sync backend seems to be Enterprise Ready™, but if you do encounter issues related to the CalDAV backend, kindly report them (even better if you can help with fixes and refinements!)

Gamification plugin

Sometimes, a little extra playful motivation can help you go through your day. Part of the brainstorming for gamification and virtual assistant features, Mohieddine Drissi created an initial plugin to add some game-like elements to GTG:

Here too, apologies to Mohieddine and Padmé!

Please try out this new feature, and look at the ticket linked above. Do you see additional features that would be good to add? Should they be part of this plugin, or a separate plugin? Let us know.

Modernized tag editor

This is what it used to look like:

This is what it looks like now:

Better procrastination button

One of the most important buttons in my GTG workflow is the “Do it tomorrow” button, and its associated menubutton that lets you reschedule a task’s start date a couple of days into the future. I call that feature the “procrastination” button and this might sound a bit silly, but it really is just an essential way to manage a frequently-changing set of priorities, schedule and obligations, and a way to manage your energy levels.

This release improves this feature with some additional attention to detail:

  • Inspired by some initial work by Laurent Combe, First, “Neui” made some pretty impressive hackery to make this an adaptive button that would automatically change its label depending on the available window/screen width, which now makes GTG capable of fitting within a split-screen on smaller screen resolutions. He did this only with Python code within GTG, so in case you’re wondering, GTG is not dependent on libadwaita for this to function.
  • In issue #550, I detailed the various inconsistencies between this menubutton and the contextual (right-click) menus for deferring tasks. As we were nearing the 0.6 release, I had a “How Hard Can It Be, Really?™” moment and went through a late night coding session to scratch at least part of my design itch, as it had been annoying me for a year by now and I didn’t want to stare at it for another release cycle. So this pull request of mine solves at least one half of the problem, which is probably better than nothing. Anyone is welcome to finish the 2nd half; you might have to harmonize that code with dates.py. Until then, here’s how it looks like now:

Errors will be noticed easily again

GTG used to have a fantastically avant-garde technological feature where it would automatically catch and display Python errors (tracebacks) in the graphical user interface. This feature got lost in what led up to the 0.4 release, but it is now making a comeback in GTG 0.6, thanks to Neui’s fine engineering work. It not only catches tracebacks, but also determines whether they are critical or if the application can possibly continue running. I did some UI & UX refinements on top of Neui’s version, and we now have this honest but still reasonably reassuring dialog:

If you click the expander, you get the traceback, along with some additional information, all neatly MarkDown-formatted so that it can be readily pasted alongside your bug report on modern bug trackers:

Of course, our software is perfect and you should never actually encounter such errors/uncaught exceptions, but… you never know. In the rare cases where this might happen, as a user, it’s better to be made aware if such a problem occurs—and the possibility of the application’s internal state being inconsistent—right when you trigger the issue, so that you can know what sequence of events led to a problem in the code, and report it in our issue tracker.

If you need to test this dialog (ex.: to test translations) but can’t find bugs in our flawless code, you can use GTG’s built-in “Developer Console” to trigger a traceback that will make that dialog appear (see this tip in our documentation).

Tough times, strong community

It’s been a hell of a year, but it’s still been less than a year since 0.5. Ideally we would be on a faster cycle, but we kept merging new and interesting things, and 2021 was pretty intense for many of us, so we slipped a bit.

Diego had to take time off to take care of his family and personal health, and I, certainly like many readers here, had a pretty busy year in my day-to-day work and beyond.

I deeply appreciate the GTG community’s patience in contributing, getting involved and sticking together to improve this project. Personally, I was not able to keep up very closely with all the activity going on; I received somewhere around 1900 emails related to GTG tickets and merge requests during the 0.6 cycle (from April 6th 2021 to this day), so it is clear that the community’s involvement is really strong here, and that’s awesome. If you’re not already part of this, consider joining the fun!

Let me take a minute to dish out some praise here for the fabulous and tireless work of our most frequent contributors. Thank you,

  • “Neui” for contributing a ton of patches, code reviews, advice, that helped the project’s technical architecture progress steadily throughout the year (also, thank you for investigating some of my craziest bugs and providing solutions for them!) ;
  • Diego, for plowing through architectural code refactoring, bugfixing, code reviews, during what I know was a difficult time;
  • Mildred and François, for making the CalDAV sync backend possible.
  • Mohieddine Drissi for creating the gamification plugin
  • Danielle Vansia, who not only updated and expanded the user manual so that you could know how the hell to use that CalDAV feature, but also kindly took Diego’s “changes since 0.5” braindump, expanded and polished it into the release notes you can find further below.
  • …and many other contributors who have made this release possible by providing bug fixes, code quality improvements, etc. They are listed in the about dialog’s credit section for this release, too 😉

Releasing because I can’t stand 0.5 anymore

You know, my gtg_data.xml file is pretty heavy:

No, I mean really heavy:

(Insert Hans Zimmer brass sounds)

As I write this, my data file contains over 2700 tasks (~1800 open, ~700 done, ~ 200 dismissed). The problem is, when you reach that kind of heaviness in your data file, in 0.5 you will encounter not only occasional crashes “when adding a parent/child task or when marking a recurrent task as done” (as mentioned at the beginning of this blog post), but also when trying to delete a bunch of tasks at once… which meant my “purge tasks” feature was not working anymore, which meant I kept piling on hundreds of “closed” tasks every month that I couldn’t easily remove from my tasks data file, which meant performance kept getting worse and crashes were getting more likely…

These are the total number of tasks in my XML file over time (including open, done and dismissed tasks). Each dip is when I tell GTG to purge closed tasks from the file. I know, those numbers keep going back up, higher and higher; I really need to find people to take care of some of my home and infrastructure bullshit, but that’s besides the point 😉

With those issues exacerbated by my “abnormally heavy” data file growing heavier every day, you can imagine that version 0.5 had become unbearable for me in my day-to-day use…

…therefore we have a perfect excuse to release version 0.6, which solves those issues! 😇
“Release when you can’t stand the previous release anymore!”

So here we are, GTG 0.6 comes right on time for income tax season! (and if it does help you make it through that period alive, maybe you can deduct some massive donations to Diego via LiberaPay or via GumRoad 😉 especially considering the metric crapton of refactoring work that will need to be accomplished for 0.7


Release notes

Thanks to Danielle, Diego and Neui for taking the time to research & detail the noteworthy changes to create the NEWS file, which you can read below.


New Features:

  • A new CalDAV backend is available, and the backends dialog is available again. CalDAV is a calendaring protocol that allows a client to access items from a server. GTG now provides support for this standard, and with this new sync service, you can manage all your tasks in one place.
  • The new “Gamify” plugin adds a game aspect to your GTG workflow, such as the ability to set task targets and task completion streaks.
  • The Tag Editor was completely redesigned.
  • Added support for undo/redo actions in the Task Editor.
  • Added the ability to collapse and expand all tasks in the main menu.
  • Added the F10 shortcut to open the main menu.
  • ESC now closes the calendar picker window.
  • Added the CTRL+B shortcut to set focus on the sidebar.
  • Added an option to set the due date to “today” in the context menu.
  • The “Mark as not done” and “Undismiss” actions were replaced by a unified “Reopen” action for closed tasks in the right-click context menu.
  • The “Start Tomorrow” button is now adaptive, so that the main window can be resized to smaller widths.
  • The task deferral menubutton (next to “Start Tomorrow”) now shows both weekday names and the offset number of days from today. It also allows easily deferring to 7 days instead of only 6 days, and the ordering of this menubutton matches better with other menus.

Backend, Code Quality, and Performance Improvements:

  • Reintroduced the global exception/traceback catcher, with a dialog showing up when an error occurs.
  • Made an improvement to avoid infinite loops when entering invalid dates in the Quick Add entry.
  • Made an update to prevent errors when no task is selected.
  • Removed some deprecation warnings.
  • Added StartupWMClass to make pinning on KDE work.
  • Used application ID as the window icon (so KDE shows the correct icon).
  • Made several changes in preparation for Gtk 4.0, as well as updated a number of deprecated GTK-related items.
  • Made a ton of PEP8 and style fixes.
  • Refactored the date class.
  • Updated the ability to render tag icons better on HiDPI.
  • Updated the anonymize script.
  • Added gtg://TASK-ID to the command-line help.
  • Added the -p parameter for profiling in debug.sh.
  • We migrated from “Nose” to “PyTest” for the test suite, as Nose is unmaintained.

Bug Fixes:

  • Fixed possible crash when trying to create parent task, and similar operations, when the “Open” tab has not been opened yet (maximum recursion depth error).
  • Made a change to save a task before creating a parent. This prevents an error that appeared when a task title would be reset after adding a parent.
  • Fixed an issue where tags were being duplicated.
  • Fixed an issue where tags and saved searches with the same name were being considered duplicates.
  • Fixed a bug where every editor window would come back if GTG wasn’t closed cleanly (i.e., shut down).
  • Made several fixes for scripts.
  • Fixed certain main menu entries not being selectable via the keyboard.
  • Fixed the cut-off when you expand the columns too much.
  • Fixed a regression where symbols in tags (e.g., dashes and dots) were not recognized by the Task Editor. Also, added support for a few more.
  • Fixed a bug where tags’ icon, parent, and color were not being removed in the XML file.
  • Fixed a bug that occured when GTG just starts up with no tasks selected, and the user tried to use the “Add Parent” hotkey.
  • Avoid blurry tag color rounded rectangles on non-HiDPI screens.

Documentation Updates:

  • Added documentation to the Contributor Docs for contributing to the User Manual (i.e., for writing help files).
  • Added information about using flamegraph for profiling GTG for performance documentation (in the Contributor Docs).
  • Updated the user manual for this release.

For more details on all of these new features, improvements, and fixes, see the 0.6 release’s milestone.


Time to "flatpak update", folks:

by Jeff at March 03, 2022 05:00 PM

March 01, 2022

Jean-François Fortin TamYear MMXXI in 8 minutes

Near the end of 2020, I put a lot of thought into reevaluating my business’ value proposition, strategy, and processes. It’s a good thing I did that back then, because 2021 was quite different from 2020; I had much less time to “deepthink”, and I spent a majority of 2021 on an intense work treadmill, which led to me micro-burning out three times in the process. Also, guilt about feeling like I’m not contributing to open-source enough.

In that year, I also noticed a lot of “shortened fuses” around me—a pervasive edginess throughout society—along with bully-type abuse in various places. It’s an interesting story to analyze from an experiential and psychological standpoint, but I’ll cover that in a separate blog post sometime, to keep this one simple (so it takes roughly 8 minutes to read).

For now, I’ll focus on the usual short summary of my work + personal + open-source discoveries and activities from 2021, without too much emphasis on the deeper chaos going on in that year.


Professional life year overview

  • My then accountants suddenly told me, in January of that year, that they would no longer be serving small businesses for income tax reports, and thus “We’re dropping you, good luck!” 🤯 I then spent weeks exhaustively searching and evaluating accounting firms to find a new partner, and eventually found a top-notch accounting duo to help me with income tax reports in the long term. I asked them hardball questions on their career objectives and whether/when they would drop me like a hot potato, and I told them I couldn’t go through another taxheartbreak. Now that I’ve found you, you better stay with me, nya?
  • Worked for a surprising number of clients throughout the year (including a couple NGOs, as you can see in this case study about an in-depth technical & financial feasibility study and that case study about a naming/branding consulting project). I’ll keep it at that for now, again to keep this blog post simple.
  • Throughout the year, I (re)built a lot of websites for myself, and realized again just how much time & effort this requires. Since I timed myself, I now have some quantitative insights to share with all of you wondering, “How Hard Can It Be?™”; see my “How long does it take to create a website? (and why your FLOSS project doesn’t need one)” article.
    • Publicly unveiled Regento, after having finally created its website, at the same time as I was doing some pretty intensive consulting work in April (y’know, when things happen “all at the same time”…), hence the 2nd micro-burnout of the year.
    • Reworked the idéemarque branding agency website contents entirely during the summer. Did not blog about it until now. The design isn’t especially fancy/flashy, but it’ll do, I guess.
    • Quietly created Atypica’s photo portfolio in the fall season. Did not blog about it until 2022.

Personal life year overview

  • Summer 2021, with the arrival of vaccines and nice outdoors weather in the North, felt exactly like this Tokyo-III scene:
Yes, I know, this is the scene where everything feels “normal” before shit hits the fan again. The parallels are uncanny.
  • You might remember that I tried a kratky hydroponic indoors garden in 2020, and had no luck with tomatoes. In the winter/spring of 2021 I thought, “Perhaps I need to try my luck again with a regular self-watering soil planter, and lots of artificial light”. Well, I did: since September 2021, I can confirm that even with that kind of setup and a 4′ vertical fluorescent light to supplement the winter’s natural light, the tomato plant does not flower (and thus does not fruit), and barely survives better than the previous kratky hydroponic experiment; possibly its slightly better mildew resistance this time around is due to the artificial light, but I am not sure.
  • Made my Brother multifunction printer’s scanner work again with Linux, by setting up a dedicated machine with lots of ugly hackery to make it work. Now it works, let’s not ever touch it again for the next five years.
  • German cockroaches got in (via a package I brought inside) during the summer. It creeped me the hell out. I went through some very extensive research on how to get rid of them effectively and without unintended side-effects. Long story short, I killed them all without using chemicals, but that messed up my quality of life for some months, as it definitely didn’t help my sleep quality. Spraying pesticides or using tape is harmful and pointless; the real trick is to use a very thinly sprayed fine layer of diatomaceous earth (so that it is invisible), lay a couple of boron-infused gel baits (Advion™ is impossible to find up here) in every corner of every baseboard near the nest, all while starving them from any food or water, then… waiting and having a lot of patience and trust in that method. Also, always having a vacuum cleaner on hand (I can confirm that they do not survive a cyclonic canister) and manoeuvering quickly to catch them late at night to reduce their numbers. It took two months (or 4 months if you take into account the last two months of “zero encounters”), and it was nerve-racking. I learned a lot in the process, and they are certainly never going to be an issue again.
  • I probably spent 30-60% of the year away from home because of the constant hammering most days. Did you know that a set of one 8-stories-high building and one 20-stories-high building spanning a whole street requires about 2000 piles for their foundations? It took them roughly 12 months to drive all those piles into the ground (it didn’t help that the GC was using only one or two pile drivers at a time).
Pro Tip™: this song really helps to cover it all up.

A most welcome visitor

My longtime friend Étienne suddenly came back to visit Canada again for the first time in two years. He was originally too shy to ask for my hospitality, so I insisted to have him as my honored guest and to host him for the whole 3 weeks of his stay in Montréal. Being able to spend so much time with him is a privilege I have not had since, I think, fifteen years (the previous time was probably 2006). The timing was perfect; after a whole year of stress and work that had left me eager to have some sort of change of pace in December, this was my mood in anticipation of spending time with him again:

We had fun fixing lots of stuff, and simply being care-free geeks on a vacation:

  • I helped him livestream a wedding, with some of my studio equipment and the wonder of OBS Studio. I also took a couple hundred photos of the event.
  • He brought me a bunch of VoIP deskphones for my office, originally taken from an office in Tokyo. I’m now ready to open up a call center or something.
  • He brought me a replacement Nintendo Gamecube controller, again from Japan. Now we can honestly play Super Smash Brothers Melee again!.. if only having multiple guests was still a thing nowadays.
  • He completely tore down, cleaned and reassembled my projector (that I had föked up a year prior by accidentally blowing some dust onto the projector’s DMD chip, and that I did not have the time nor courage to fix by myself until that point). I’d like to think I helped with this deep-cleaning process as an assistant, but frankly he did all the difficult work, as you can see:
Étienne starting disassembly Optical block (sensor and lens assembly) taken out Lens taken out Separating the DMD chip from its PCB
  • He contaminated me with the wonder that is the “future funk” music genre, particularly Moe Shop‘s music.
  • He helped me make my other Brother printer work over the network.
  • I had never had the time and energy to mess with my router in the past year after its initial setup, so he flashed a new version of OpenWRT and finally figured out how to make multi-frequencies multi-SSD networks work seamlessly.
  • More importantly, it gave me the opportunity to have lengthy discussions with him and see what projects he’s been working on, and see how he’s been doing mentally, physically, and in terms of life trajectory. Being oceans apart for years meant that it was more difficult to check on friends’ well-being, so I welcomed the opportunity to catch up.

Open-source findings

  • Did you know that the “Gnome” icon theme still exists, and is not the same as the “Adwaita” icon theme?
  • I proposed an epic wallpaper concept for Fedora, but it went nowhere, much to my surprise.
  • I found the sudden disappearance of the GNOME Swedish Conspiracy to be an unacceptable loss to our shared cultural heritage; therefore I filed this formal inquiry into the matter, issue number 1.
  • Successfully lobbied for Planet GNOME to properly support Unicode blog posts, including emojis. You’re welcome 😇
  • Filed a couple of Jitsi UX issues from my observations, during the pandemic, of computer-illiterate users’ difficulties with this open-source WebRTC videoconferencing app. I’m happy to see now that many of them have been fixed.
  • Was pleased to see XFA PDF forms now being supported in Firefox. Look forward to my blog post on March 9th to learn about the possible implications.
  • Discovered that you can actually export addressbooks to .CSV in Evolution, but that capability is not presented in the GUI and you really need to know it exists at all.
  • Want to contribute an easy UX refinement to Evolution’s mail composer GUI? How about modernizing the hyperlinking dialog using GtkPopover? Check out the other newcomers-friendly tasks too.
  • Heads up all Evolution die-hards who would like to escape Google Calendar but still can’t because of visual info density: I’ve now re-filed my old bug report on the matter: “Upcoming weeks” / “Next 3 weeks” future events view mode. Give it a 👍 or consider contributing a patch if you’re more competent than me (as you most certainly are).
  • Suggested my amazing, revolutionary™ timeout-based search architecture for GTG. The results, as seen in GTG 0.5 and newer (such as 0.6, planned for release in the coming days) is a dramatic improvement in performance; search takes 1-3 seconds instead of 17+ seconds in heavy data sets.
    • I made the same recommendation in Simple Tab Groups for Firefox and the results were dramatic, as enthusiastically tweeted. You’re welcome.
    • As tweeted: I made the same live search method recommendation for Nautilus, the GNOME files manager. See this ticket (and please contribute a patch to the project, if you can).
    • As tweeted: I also filed a ticket to make the same suggestion—use a timeout-based search-as-you-type approach—for GTK’s FileChooser widget. I’m just wildly guessing, but this might be a reasonably easy-enough bug for a newcomer to contribute a patch for, but at the same time, this is GtkFileChooser we’re talking about, you’re certainly bound for technical surprises (but a great learning opportunity).

Miscellaneous findings

  • Realized part of why I’ve accumulated such a huge backlog of subjects to blog about here over the years, with so few actually getting published: this heat matrix of mine shows that the technical but low-impact topics are endless! High technicality = high accuracy and documentation requirements, a tremendous investment of time (each of my blog posts typically takes multiple days of work); if there is no clear impact/reward, then there is little incentive when there are so many other imperatives in life.
  • Realized that 78% of the USA’s cash (of all time) appeared out of thin air within the month of May 2021, and I still don’t understand how this stock market bubble that has been going on since 2011 keeps going without popping, with all that’s been going on in 2020-2021. Markets sure can stay irrational longer than we can stay solvent or sane.
  • Invented a method to reinforce cheap leatherette keychains with zipties.
  • Found some rusted, abandoned cast iron cookware in my building’s recycling room, and embarked on an adventure to learn all about cast iron and how to properly season and maintain it. With my eight back-to-back grapeseed oil seasoning passes in the oven, I think I did a pretty good job at seasoning them. So I guess I’m part of the Cast Iron Cult now. Considering that properly seasoned cast iron is naturally non-stick, who needs Teflon?! Besides, you can never have too many mêlée weapons. Even the Government of Canada basically says that cast iron and stainless steel are probably the only things that you can really trust (from a health/safety perspective)…
  • Discovered that you can sanitize (and endlessly reuse) N95 and surgical face masks, by using an electric pressure cooker (such as an Instant Pot) as a dry heat autoclave.
  • For all you nerds whose glasses keep slipping off your nose: binder clips! (no, not really… turns out there are silicone ear retainers out there)

by Jeff at March 01, 2022 09:45 PM

February 27, 2022

Thomas Vander SticheleTime in Meetings

(Thomas Vander Stichele)

article #productivity

Meetings are both necessary and useful, but they fragment your week, your opportunity for flow, and you need non-meeting time for your output as a knowledge worker.

"Those of us on the maker's schedule are willing to compromise. We know we have to have some number of meetings. All we ask from those on the manager's schedule is that they understand the cost." - Paul Graham, Maker's Schedule, Manager's Schedule

flattr this!

by Thomas at February 27, 2022 10:25 AM

February 25, 2022

Thomas Vander Sticheleapenwarr@ – The Gift of It’s Your Problem Now

(Thomas Vander Stichele)

#article #log4j

"Sometimes the gift interprets JNDI strings in my log messages and executes random code from my LDAP server. This is the nature of gifts."

An interesting musing on the nature of gifts, big companies and startups, and free software, from apenwarr@

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

by Thomas at February 25, 2022 06:25 PM

February 23, 2022

Jean-François Fortin TamHow long does it take to create a website? (and why your FLOSS project doesn’t need one)

The 20192020 period was a long R&D cycle for me, with a whole herd of yaks to shave, however it did give me new tools and abilities, such as the capacity to rapidly develop modern-looking websites without hand-coding them nor spending hours fruitlessly searching for—and being disappointed by—”suitable” themes.

One might wonder why then, with those upgraded skills, I didn’t seize the opportunity to make a new website for GTG or other open-source projects that could benefit from fancier marketing.

The short answer is, even if my tooling and technique have improved, it’s still a metric crapton of work. It might seem easy (“Use Hugo!”, “Just slap a couple of pages together!”, etc.) but there’s much more to building a website than just the technical design and coding (or integration) aspects. This article provides you with an idea of the amount of time it takes to plan, write, design and build a “reasonably simple” website with a dozen pages or so.

As a case in point, the website of my Montreal branding agency has been out there for many years, but right up until 2021, it was all hand-coded—and therefore, not really maintainable nor scalable to a team. One of the things I did in 2021 was to completely revamp it, by:

  • Switching it to WordPress instead of my own static HTML + CSS + PHP glue system I had perfected since the mid-2000’s (if you find that blasphemous, have a look at why I chose WordPress over other solutions for my business websites).
  • Rethinking all the contents.
  • Designing a basic layout to hold it all together, because frankly (and somewhat ironically) we didn’t have time to be obsessing about the visuals here.

Overhauling (or creating) a website is never a simple affair when you want to do things right for your project or business. Planning, writing & designing two of my new websites in 2021 required an investment of well over 230 hours of work. Among those were roughly 112 hours of work (at least, those I remembered to track) spent on the idéemarque website specifically, broken down roughly as follows:

  • 22 hours preparing a strategic positioning & structure document
  • 20 hours writing the new website’s “core pages” text, in two languages
  • 20 hours integrating the text into the website and laying out the pages’ overall design
  • 40 hours writing and laying out the 4 initial case studies, in two languages
  • ?? hours setting up and integrating an email notifications (newsletter) system, for those who want to know when a new article comes out
  • 9 hours (so far) sketching and drawing team members, and researching possibilities (a story for another day)

112+ hours, for a 18-pages website, is actually pretty damned fast: business websites typically tend to take much more time than that. This was made possible by circumstances rarely found with client work: I knew exactly what I was doing (from a technical standpoint), where I was going (from a marketing standpoint), and what I wanted to put in there (from a copywriting standpoint). Your mileage will almost certainly vary, especially if working with a large corporate team or committee where you can’t just directly pour all the content straight from your mind.

Those numbers do not include the R&D (and infrastructure maintenance) I did in previous years to actually get to the point where I could efficiently build such websites.

And, y’know, once you have a website out there, you need to feed it with new content, and to announce it. I spent an unknown amount of hours (probably well over 20-40; forgot to track them) planning and working on draft email announcements that kept getting outdated as the months went by—because I kept having to deal with emergencies, and because I kept moving the goalposts of what constituted a “good enough” website to write home about (nothing is more dangerous than “oh, one more thing…”). Me, a perfectionist? Nooooo.

So yeah… this is why I’m no longer spending that kind of time and energy building websites for my open-source projects, especially as FLOSS projects have contents that need to change much more frequently than most small-to-medium business websites. In the case of GTG, while I hate GNOME’s MoinMoin wiki, it Does the Job™ and it’s Good Enough to stay as it is; it’s still easier to maintain than a website. So y’know what? Your open-source project doesn’t need a website, unless it’s also a business or charitable organisation.

by Jeff at February 23, 2022 03:56 PM

February 22, 2022

Thomas Vander SticheleIsabel Wilkerson – Caste: The Origins of Our Discontents

(Thomas Vander Stichele)

Isabel Wilkerson - Caste: The Origins of Our Discontents

#book #dei

"Like other old houses, [...] has an unseen skeleton, a caste system that is as central to its operation as are the studs and joists that we cannot see in the physical buildings we call home. Caste is the infrastructure of our divisions. It is the architecture of human hierarchy, the subconscious code of instructions for maintaining [...] a [...] social order."

Caste has taken the lead in my library as the most highlighted book, and is a deep exploration of Caste as the lens through which to see discrimination, drawing parallels between Europe, the United States, and India, providing a universal framing.

“Young people,” he said, “I would like to present to you a fellow untouchable from the United States of America.” King was floored. He had not expected that term to be applied to him. He was, in fact, put off by it at first.

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

by Thomas at February 22, 2022 05:35 PM

February 21, 2022

Thomas Vander Stichele9 Ways We Self Sabotage

(Thomas Vander Stichele)

9 Ways We Self Sabotage

#survey #productivity

"Saboteurs are the voices in your head that generate negative emotions in the way you handle life’s everyday challenges. They represent automated patterns in your mind for how to think, feel, and respond. They cause all of your stress, anxiety, self-doubt, frustration, restlessness, and unhappiness. They sabotage your performance, wellbeing, and relationships."

Positive Intelligence is a mental fitness framework and, among other concepts, taught me helpful practical ways to deal with stress, both professionally and personally.

Take the test or read more on How we self-sabotage

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

by Thomas at February 21, 2022 07:21 PM

February 20, 2022

Jean-François Fortin TamGTG 0.6 release candidate

Today we are publishing a “release candidate” version of Getting Things GNOME 0.6. You can either try it out directly from the git master version (by running launch.sh; see the general instructions), or from the testing package available on Flathub’s “beta” repository, separately from the standard stable flathub/flatpak release you may already be running. To run it as a flatpak, simply run these two commands:

flatpak remote-add flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
flatpak install org.gnome.GTG

…and choose the flathub-beta as the repository source to install GTG. Note that for some technical reasons, it will still say it’s version 0.5 if you look in the About dialog, but it really is 0.6 behind the scenes.

This release candidate is supposed to be stable and regressions-free, and is intended to:

  • Give translators an opportunity to update their favorite language(s) before the final release. You have roughly a week where you can voice your interest and provide us with an updated translation, if desired. The translation template (.pot file) has already been updated in the git version.
  • Give the opportunity for users to feel confident in trying out the current git version (or flatpak package above) and to easily check that everything is OK (and if not, report bugs).

This is the last call! If you haven’t tested out the git version recently, now would be a great time to test the release candidate and ensure there are no last minute issues we might have overlooked. If no showstoppers/regressions are found, we expect to release GTG 0.6 around the end of the month (roughly in a week).

by Jeff at February 20, 2022 04:20 PM

February 19, 2022

Nirbheek ChauhanBuilding GStreamer on Windows the Correct Way

For the past 4 years, Tim and I have spent thousands of hours on better Windows support for GStreamer. Starting in May 2016 when I first wrote about this and then with the first draft of the work before it was revised, updated, and upstreamed.

Since then, we've worked tirelessly to improve Windows support in GStreamer  with patches to many projects such as the Meson build system, GStreamer's Cerbero meta-build system, and writing build files for several non-GStreamer projects such as x264, openh264, ffmpeg, zlib, bzip2, libffi, glib, fontconfig, freetype, fribidi, harfbuzz, cairo, pango, gtk, libsrtp, opus, and many more that I've forgotten.

More recently, Seungha has also been working on new GStreamer elements for Windows such as d3d11, mediafoundation, wasapi2, etc. Sometimes we're able to find someone to sponsor all this work, but most of the time it's on our own dime.

Most of this has been happening in the background; noticed only by people who follow GStreamer development. I think more people should know about the work that's been happening upstream, and the official and supported ways to build GStreamer on Windows. Searching for this on Google can be a very confusing experience with the top results being outdated links or just plain clickbait.

So here's an overview of your options when you want to use GStreamer on Windows:

Installing GStreamer on Windows

 
GStreamer has released MinGW binary installers for Windows since the early 1.0 days using the Cerbero meta-build system which was created by Andoni for the non-upstream "GStreamer SDK" project, which was based on GStreamer 0.10.
 
Today it supports building GStreamer with both MinGW and Visual Studio, and even supports outputting UWP packages. So you can actually go and download all of those from the download page:


This is the easiest way to get started with GStreamer on Windows.
 

Building GStreamer yourself for Deployment

 
If you need to build GStreamer with a custom configuration for deployment, the easiest option is to use Cerbero, which is a meta-build system. It will download all the dependencies for you (including most of the build-tools), build them with Autotools, CMake, or Meson (as appropriate), and output a neat little MSI installer.
 
The README contains all the information you need, including screenshots for how to set things up:


As of a few days ago, after months of work the native Cerbero Windows builds have also been integrated into our Continuous Integration pipeline that runs on every merge request, which further improves the quality of our Windows support. We already had native Windows CI using gst-build, but this increases our coverage.

Contributing to GStreamer on Windows

 
If you want to contribute to GStreamer from Windows, the best option is to clone the gstreamer monorepo (derived from gst-build which was created by Thibault), which is basically a meson 'wrapper' project that has all the gstreamer repositories aggregated as subprojects. Once again, the README file is pretty easy to follow and has screenshots for how to set things up:


This is also the method used by all GStreamer developers to hack on gstreamer on all platforms, so it should work pretty well out of the box, and it's tested on the CI. If it doesn't work, come poke us on #gstreamer on OFTC IRC (or the same channel via Matrix) or on the gstreamer mailing list.
 

It's All Upstream.

 
You don't need any special steps, and you don't need to read complicated blog posts to build GStreamer on Windows. Everything is upstream.

This post previously contained examples of such articles and posts that are spreading misinformation, but I have removed those paragraphs after discussion with the people who were responsible for them, and to keep this post simple. All I can hope is that it doesn't happen again.

by Nirbheek (noreply@blogger.com) at February 19, 2022 01:37 AM

February 18, 2022

Thomas Vander SticheleYou are not my papa

(Thomas Vander Stichele)

Last night I rode our bike home from Brooklyn, with my daughter crying loudly "You are not my papa!" most of the way.

We were a few minutes late picking her up from her class, and she was the last one there, crying in the arms of the teacher, and yelling something loudly, too loud to understand.
I picked her up, hugged her, asked what's wrong and tried to calm her down, but she wasn't having it. I put her in the back of our bike, strapping her in, checking with my son what she could be saying. We finally started making out that she was saying "not my papa".

I tried to convince her that I am, in fact, her papa, but she just kept repeating the same thing. We started our ride back home, and at the first red light I was acutely aware of her still yelling the same thing while standing still in traffic next to other bikes. What would I do if I was stuck in traffic next to a vehicle with a crying child yelling "You are not my papa?", I wondered. I started asking her questions like, "what hair color does your papa have?" to get her to stop and think, and I would respond, "that's interesting, just like me". I'd ask a few questions like that until the lights turned green.

I was hoping this would work for all the stops on our 25 minute ride home, and I was hoping we'd not run into any police cars along the way, just in case. Of course, two minutes later, I was parallel with a string of five police cars, all with their lights flashing. I kept repeating the questions at every stop, until she fell asleep as she usually does on the bike.

She slept all the way through dinner, and the next morning at breakfast I asked her, "who's your papa?" And she beamed at me and yelled, "you are my papa!"

My best guess at what happened is that at pickup she saw a string of papas pick up their kids, but didn't see me, and started saying "you are not my papa" at every other papa, until I was the last one to show up. I'll never show up last again.

flattr this!

by Thomas at February 18, 2022 01:30 AM

February 16, 2022

Robert McQueenForward the Foundation

(Robert McQueen)

Earlier this week, Neil McGovern announced that he is due to be stepping down as the Executive Director as the GNOME Foundation later this year. As the President of the board and Neil’s effective manager together with the Executive Committee, I wanted to take a moment to reflect on his achievements in the past 5 years and explain a little about what the next steps would be.

Since joining in 2017, Neil has overseen a productive period of growth and maturity for the Foundation, increasing our influence both within the GNOME project and the wider Free and Open Source Software community. Here’s a few highlights of what he’s achieved together with the Foundation team and the community:

  • Improved public perception of GNOME as a desktop and GTK as a development platform, helping to align interests between key contributors and wider ecosystem stakeholders and establishing an ongoing collaboration with KDE around the Linux App Summit.
  • Worked with the board to improve the maturity of the board itself and allow it to work at a more strategic level, instigating staggered two-year terms for directors providing much-needed stability, and established the Executive and Finance committees to handle specific topics and the Governance committees to take a longer-term look at the board’s composition and capabilities.
  • Arranged 3 major grants to the Foundation totaling $2M and raised a further $250k through targeted fundraising initiatives.
  • Grown the Foundation team to its largest ever size, investing in staff development, and established ongoing direct contributions to GNOME, GTK and Flathub by Foundation staff and contractors.
  • Launched and incubated Flathub as an inclusive and sustainable ecosystem for Linux app developers to engage directly with their users, and delivered the Community Engagement Challenge to invest in the sustainability of our contributor base ­­– the Foundation’s largest and most substantial programs outside of GNOME itself since Outreachy.
  • Achieved a fantastic resolution for GNOME and the wider community, by negotiating a settlement which protects FOSS developers from patent enforcement by the Rothschild group of non-practicing entities.
  • Stood for a diverse and inclusive Foundation, implementing a code of conduct for GNOME events and online spaces, establishing our first code of conduct committee and updating the bylaws to be gender-neutral.
  • Established the GNOME Circle program together with the board, broadening the membership base of the foundation by welcoming app and library developers from the wider ecosystem.

Recognizing and appreciating the amazing progress that GNOME has made with Neil’s support, the search for a new Executive Director provides the opportunity for the Foundation board to set the agenda and next high-level goals we’d like to achieve together with our new Executive Director.

In terms of the desktop, applications, technology, design and development processes, whilst there are always improvements to be made, the board’s general feeling is that thanks to the work of our amazing community of contributors, GNOME is doing very well in terms of what we produce and publish. Recent desktop releases have looked great, highly polished and well-received, and the application ecosystem is growing and improving through new developers and applications bringing great energy at the moment. From here, our largest opportunity in terms of growing the community and our user base is being able to articulate the benefits of what we’ve produced to a wider public audience, and deliver impact which allows us to secure and grow new and sustainable sources of funding.

For individuals, we are able to offer an exceedingly high quality desktop experience and a broad range of powerful applications which are affordable to all, backed by a nonprofit which can be trusted to look after your data, digital security and your best interests as an individual. From the perspective of being a public charity in the US, we also have the opportunity to establish programs that draw upon our community, technology and products to deliver impact such as developing employable skills, incubating new Open Source contributors, learning to program and more.

For our next Executive Director, we will be looking for an individual with existing experience in that nonprofit landscape, ideally with prior experience establishing and raising funds for programs that deliver impact through technology, and appreciation for the values that bring people to Free, Open Source and other Open Culture organizations. Working closely with the existing members, contributors, volunteers and whole GNOME community, and managing our relationships with the Advisory Board and other key partners, we hope to find a candidate that can build public awareness and help people learn about, use and benefit from what GNOME has built over the past two decades.

Neil has agreed to stay in his position for a 6 month transition period, during which he will support the board in our search for a new Executive Director and support a smooth hand-over. Over the coming weeks we will publish the job description for the new ED, and establish a search committee who will be responsible for sourcing and interviewing candidates to make a recommendation to the board for Neil’s successor – a hard act to follow!

I’m confident the community will join me and the board in personally thanking Neil for his 5 years of dedicated service in support of GNOME and the Foundation. Should you have any queries regarding the process, or offers of assistance in the coming hiring process, please don’t hesitate to join the discussion or reach out directly to the board.

by ramcq at February 16, 2022 02:48 PM

February 10, 2022

Jean-François Fortin TamYear MMXX summarized in 7 minutes

For some reason, I didn’t get to see much people, and didn’t have much client work revenue throughout that year. I’m not sure why 🤔

TwentyTwenty was filled with unexpected events, discoveries, and opportunities to think about a lot of things. As nobody needs to read another editorial about the pandemic, I will attempt to summarize that year without discussing lockdowns, habit disruptions or international politics. Since this blog post is mostly chronological it does start with some dark stuff, but that’s just how it goes, it gets better (I think) and, as usual, concludes with a bunch of open-source related things.

Personal life summary

  • In January, one of my students/friends, Aida, died with her husband Arvin and 174 other passengers. She was 33 years old, and had just obtained her PhD a few weeks earlier. That hit me pretty hard. Two years after this incident, I still think of them regularly—you do not forget someone you worked with for half a decade.
  • Another one of my students/friends, Samer, died three months later, under nebulous circumstances, in his mid-twenties. As it happened right as the lockdowns were kicking in, I unfortunately did not get to pay my respects in person as I had done for James, Aida and Arvin. We were barely a quarter into the year and I was already fed up with this bad movie plot but, you know… shikata ga nai.
  • Not much happened during the couple of months that ensued (or not much that I remember, as I think we all collectively went through time dilation), other than working on resurrecting the Getting Things GNOME project (and doomscrolling).

But wait, keep on reading…

  • I found and bought the legendary rare-itemu ThinkPad X220T. A dream come true. There are many ThinkPads like it, but this one is mine.
  • I discovered that my then-16-years-old WordPress blog—an Elder of the Internet—predates unicode standardization on the web and was therefore a mix of latin1_swedish_ci, utf8, and utf8mb4 😱 I had to do database surgery to fix this before a major PHP update would break everything. It took me months to solve this; story for another day. But at least the fact that you’ve been reading this retrospective makes it all worth it 😃
  • I honed my bicycle maintenance skills (simple examples here and here) and taught myself a lot about bike restoration. The most dramatic case was an old folding bike that had been left to rust to death by some careless owner:
Rusted front wheel/fender/brakes Rusted handlebar accessories Rusted handlebar chrome Beat-up fender, chain, wheels, etc. Rusted wheel spokes, axles, etc.

…and that I fixed up real good:

Around the same time period in the summer of 2020, mai waifu, who had been stuck abroad for the past 12 months at that point, decided to end our relationship, as the prospect of coming back didn’t seem likely anymore in the context of the pandemic. Well, shi—’kata ga nai, desu yo~

With that turn of events, I went back to my personal projects backlog with a whole new perspective and set of priorities. With only myself to answer to and to take care of, I was essentially… limitless. No waifu? No laifu!

  • Bit by bit, I completed a lot of “living space” improvement projects that had been put on hold. Since I now had free reign to buy/install/organize whatever I damned please in my mancave, that’s exactly what I did:
    • A bunch of office chairs and studio equipment in the living room? An accounting desk in a closet? A mobile tower of shelves in the water closet? Two visible pans racks on the countertops? Not-pretty-but-practical entryway rugs? Mobile wire rack shelving for conveniently storing equipment in plain sight? A 40-years-old floral wool carpet from Thaïland in the ultramodern studio? Yes to all of that! Whoever visits me from here on accepts the corporate and utilitarian nature of my premises, and that’s that. 😤
    • I have set up my home cinema with a dedicated computer connected to the projector, installed dark blackout curtains on rails on three walls, used dark floor foam tiles, and placed the surround speakers all around the room. The subwoofer is in an unusual orientation, firing horizontally (from behind the seating positions) while held by a DIY wooden platform atop vibration absorbers, on a inexpensive Sonopan sound absorption panel cutout, to reduce structural sound transmission to neighbors. It is a derivative of this idea I originally had.
    • In the same room, I have perma-installed the heavy (and rare) upcycled Cobalt Flux™ Dance Dance Revolution pads on top of heavy anti-fatigue bartender rubber mats (to prevent damaging the floor or transmitting step sounds). The Linux media center computer has a fully-loaded Stepmania on it, thanks to the existence of this flatpak. Yet somehow, throughout 2020, I wasn’t very much into the mood for dancing.
  • I set out to prepare to resume my independent practice for the next year, and diversify a bit. Therefore I created the Atypi.ca website in the summer-fall of 2020 as a trial-by-fire deployment (even though there was no business to be made on that front with all the lockdowns), learned a lot from that, and from that successful experience, started strategic planning for two other specialized business websites I would develop throughout 2021.
I now sleep on the floor next to pro-grade DDR pads. I guess I’m living the Japanese Dream? 🤔

Miscellaneous findings & thoughts

  • Discovered that traditional Japanese archers are super stealthy.
  • I also discovered, near the end of 2020, that the ex-waifu had previously viciously murdered my bamboo plant in 2019 😲 We’re still good friends, although I think she can no longer be considered a model millenial.
  • After many weeks (months?!) of research, found a durable headphone earpads solution for my Sony MDR-7506 studio monitoring headphones, and made a video about it.
  • Was very saddened by Behdad’s story of his very unfortunate encounter with Iran’s state police. You should read that article if you hadn’t seen it. Also covered on CBC news and on Global news. I was relieved to know that he had at least made it out alive. If you’re too new in the GNOME community to instantly know who Behdad is, this is a person to whom we owe a lot of Cairo, Pango, and various other fundamental GNOME technologies.
  • Pro tip™ for Firefox tab hoarders out there who have trouble identifying/reading their tab titles to close or move them: set a minimum tab width of 150 or 200 pixels (instead of the default 76) by setting the browser.tabs.tabMinWidth property (in about:config) to 150. Thank me later.
  • Throughout the year I had become collapse-aware again, as the pandemic laid bare humanity’s division and general ineptitude at solving even “practice rounds” of large-scale issues; does not bode well from a climate crisis perspective. And as much as I love meeting my tech family at GUADEC, I feel like Philip Withnall was definitely right (see also his GUADEC 2019 talk, “Environmentally Friendly GNOME”, part 1 and part 2 and this forum question). I unfortunately do not have reassuring answers when it comes to the climate emergency, other than thinking that local urban vertical hydroponic farms are an interesting approach to the unsustainability and failability of land-based agriculture as we currently know it, and that we at least reportedly solved the ozone layer problem 😌
  • Speaking of hydroponics, I tried the kratky method. I wish I had great success to report with my indoors “victory garden”, but while basilico thrives in kratky, I never managed to get my tomato plants to fruit with just natural light, and it is a supremely time-intensive research process. Also, my tomato plants always tend to get powdery mildew. “Perhaps I need to try my luck again next year, with a regular self-watering soil planter and lots of artificial light”, I thought.

Open-source contributions and interesting bug reports

  • With Diego & friends, we resurrected the Getting Things GNOME project and published the 0.4 release (sorry to be mentioning this for the zillionth time here, but it’s technically part of that year’s history). Went on to talk about it, from an Open-Source Community Management & Project Management perspective, at the beginning of Linux Unplugged’s 361st episode, then presented at GUADEC 2020 on a related topic. Development and new releases have been ongoing since then.
  • I’ve taken the time to experiment a bit on Evolution using the GTK Inspector, to figure out the combination of properties needed to make Evolution’s attachments bar IconView look good, and shared my findings in this bug report. Reportedly some of those suggested improvements are supposed to show up in Evolution 3.41.3 and newer. As I am stuck on Fedora 33, I haven’t tested this myself yet.
Experimenting with Evolution’s attachments bar iconview

There were probably hundreds of other little open source contributions I did throughout 2020, but I can’t remember them all. I don’t know about you, but somehow my memory of that year is a little bit hazy.

by Jeff at February 10, 2022 09:35 PM

February 08, 2022

Jean-François Fortin TamYear MMXIX summarized in 5 minutes

As part of my seven-years retrospective, here’s a 5-6 minutes readable summary of what I did in 2019.

Personal life summary

  • Q4 2018’s intense professional stress was replaced by emotional exhaustion in 2019’s Q1 and Q2. Caring for folks who have residual schizophrenia comorbid with depression and high-functioning autism, really is a lot of work that turns your life upside down, especially when a portion of your support network ghosts or gaslights you as they do not see any of the things you see.
  • Continued work with fellow researcher Dr Julien Meyer. It was a pleasure to collaborate with him in my day-to-day, and we probably kept each other sane during a pretty long winter. I was really happy for him when he landed a fulltime professor job at Nancy’s university of architecture some months later, although I was sad to see him leave Montréal.
  • I bought some tatami mats to sleep on the floor and I was pretty happy with them, but my waifu kept complaining that they “smell like a farm’s barn” and I had to get rid of them. Such a waste. Shikata ga nai desu yo~
  • Was very pleased to see Greta Thunberg gaining traction as she expressed into words what I had been feeling for the better part of my life.
  • For administrative reasons, mai waifu had to leave Canada and go back to France. I told people, “She left with the dog!” (technically, she did, here’s proof)
Pictured: a corginapping
  • With experience, I can now say I love dogs, but do not have the lifestyle to adequately care for them as an urban dweller. I also do not miss picking up poop three times a day at -20°C, or feeling genuinely sorry for their boredom while I relentlessly work in front of a computer. Having a dog—which typically is a very active being—when you have a busy sedentary lifestyle seems… somewhat cruel.
  • Coincidentally, all my consulting contracts ended in the summer that year, including “that technology manufacturing company” whose business management strategy had grown increasingly intolerable for me and my professional ethos as CMO. Considering the fact that I had also stepped down from my remaining facility management board duties some months prior, this meant I was, for the first time in a long time, not receiving 400-500 emails per week anymore, which was quite pleasant. It felt like I was waking up from a lucid dream.
  • Overall, with those multiple changes in responsibilities having occurred by Q3 2019, my life suddenly became much simpler again. Since I also needed a change of scenery while I was in limbo for mai waifu’s return and my upcoming apartment move, I took the opportunity to spend most of 2019 doing R&D to fix or improve my processes and positioning. Namely, I:
    • overhauled my personal website again (the last round was in 2017) to increasingly focus it on my consulting services rather than pretty drawings and photos (which you can still find if you look hard enough);
    • recreated my personal YouTube channel (but I then some months later, as the pandemic struck, I ran out of time and energy to post new stuff. One day I’ll get back to it.);
    • spent most of 2019 fixing my web infrastructure on fire (including this blog, and many other sites, whether for bugfixes or security patching) and my personal tools, some of which can be read about in the first and second part of the “upgrade treadmill trilogy”: about servers, and about browsers and desktop tools.
    • I also fixed up my VoIP systems (personal and business phone infrastructure)
  • Sold a prime investment opportunity, via email, to two people who were living on a boat in the Caribbean. I am not making this up, and I swear it was 100% legit. It had nothing to do with cocaïne or a sentient La-Z-Boy. Sometimes I think I would have a much easier time being a salesman or broker than an open-source marketeer 😏
  • Joined the Instant Pot™ sect. Seriously, semi-automated electric multi-function pressure cooking is a revolution in efficiency for busy young professionals.
  • After many days of research and analysis, ordered prescription glasses online for the first time (through EyeBuyDirect). For those who have very strong short-sightedness and astigmatism, paying 100$ instead of 300-700$ for glasses, and being able to “try them on” virtually with a photo (which allows a standardized, systematic comparison, and being able to actually see yourself—because you’re short-sighted, of course you can’t see yourself when trying out glass frames in stores), is a game-changer.
  • Spent days upon days of research and thinking about acoustic treatment for my video production studio room. I thus have a lot of information on the matter, but never ended up putting it into practice, as 2020-2021 has been too much of a mess and I had to shelve that project.
  • Moved to a different appartment. There often are a thousand papercuts involved with settling in and fixing stuff in a new home, and in this case it took months. The interior design process for the new location could warrant its own story, but I don’t know if anyone would actually care to read (or hear) about that.
Pictured: packing stuff into boxes for moving out of the old apartment

Bug reports and open-source stuff

  • Discovered that thumbnails generation in Nautilus (GNOME “Files”) is extremely slow compared to other file and image managers, and reported the performance issue with my initial observations. There have been some community patches proposed there to alleviate the problem by making use of multiple CPU threads instead of a single one, but they have not yet been reviewed as of early 2022. I hope they will be considered eventually, along with further possible performance enhancements.
  • Discovered that there is a way, with some hidden dconf gsettings, to make Tracker not destroy your computer’s performance, by throttling its indexing performance to the minimum (org.freedesktop.Tracker3.Miner.Files.throttle = 20) and by tweaking another setting to delay its launch on login (org.freedesktop.Tracker3.Miner.Files.initial-sleep = 45).
    It posit that these settings should be the default behavior. There never is a good time for a background search database indexer to be hammering my desktop’s performance. Needing to instantly be able to search, right upon login, through a gigantic filesystem that was somehow never indexed before is not a thing.
  • Discovered that you can tell Evolution, the email client, to only show email notifications for certain accounts. Go set your preferences in the Plugin Manager’s “Mail Notification” built-in plugin.
  • Thoroughly appreciated being able to finally migrate from Firefox 57 to a recent (post-quantum) version of Firefox, as Drive4ik’s wonderful “Simple Tab Groups” extension proved to be bulletproof and provided an upgrade path from Quicksaver’s “Tab Groups” extension. Again, STG is an absolute must-have extension; if you’re a chaos warrior, use it; you’ll thank me later.
  • Pondered what to do about the fact that my password manager, Revelation, was being removed from Fedora. I’ll spare you the details, but after much research and thinking, I ended up converting all my passwords to… an encrypted spreadsheet. And that is my password management system now. At least I know it will still work 20 years from now.
  • Pondered what I would do considering that GTG, my favorite productivity tool I was fully dependent on, was getting deprecated from Fedora’s packages. The rest, if you’ve been reading my blog is history. Otherwise, check out this epic tale about the upgrade treadmill of open-source desktop applications.
  • Proposed a stupidly simple yet functional presenter notes user interface mockup for LibreOffice Impress in my decade old bug report. The mockup is also attached to the bug report. I’m not offering a Ferrari this time, but someone else did mention they would be happy to pay a thousand pounds to whoever implements this. Just sayin’.
  • Went to the GStreamer conference for the first time in six years, and made this short documentary video. I would like to sincerely thank the GStreamer Foundation for supporting my travel to attend the event, which allowed me to produce that video pro-bono.

Miscellaneous findings and lifehacks

  • Did you know that you can set the amount of floors or height of objects (like buildings, trees, etc.) in OpenStreetMap? That’s what I did, and if you use a 3D representation of OpenStreetMap, like the F4 map, you can see the difference, complete with the sun’s shadow projections depending on the time of the day.
    • Additional tip: as Alexandre Franke kindly points out, you can also use the free & open-source StreetComplete Android app to make edits on the go while walking around, and object heights is one of the questions the app might ask you to fill in.
  • Realized that Squall actually died at the end of Disc 1 in Final Fantasy VII, and the three subsequent discs were just his dying dream. Square Enix will never admit this, but this is the only plausible storyline I will now consider makes sense.

As 2019 ended I thought, “Alright, let’s finish tying loose ends, do some forecasting, and prepare for great business in 2020!”… Aaaah, such gleeful optimism! 🤭

by Jeff at February 08, 2022 01:18 PM

February 06, 2022

Jean-François Fortin TamYear MMXVIII summarized in 4 minutes

  • Was super excited to see a GNOME hackfest focused solely on investigating performance issues in GNOME Shell, and the great work that happened from 2019 to 2021 on that front. It made a huge difference.
  • Was thrilled that Mozilla finally got their sh!t together when it comes to performance in Firefox, with the initial release of Firefox Quantum in late 2017. This was one of the first times since 2010 where I had a somewhat solid argument to convince Chrome users to consider Firefox again. Personally however, I was stuck on pre-quantum Firefox up until 2019 due to my reliance on Quicksaver’s “Tab Groups” extension (the successor to the Panorama feature), which eventually got succeeded by Drive4ik’s “Simple Tab Groups” extension, which is an absolute must-have; if you’re a chaos warrior, use it—you’ll thank me later.
  • Participated in various Montréal urban design public consultation events, such as this one.
  • Went to FOSDEM for the first time. It was cold and wet, and I did not see any talks, but I did see Adrien Plazas and made him wear a horribly obnoxious blue shirt. In his presence, I discovered the marvel that are lambic beers, pretty much the only beer I ever liked in my life. How the rest of the world accepts drinking any other type of alcoholic beverage is beyond me. Sorry, Red Hatters, but the Starobrno doesn’t come anywhere close.
Pictured: meeting the elePHPant at FOSDEM. Allegedly not Adrien Plazas inside the costume.
  • Was given a full-length wool cloak, which is perfect for winter, especially when standing watch on windy days. Best waifu gift ever. I later had it modded, adding a faux-fur rim around the hood, additional hook loops, buttons, arm slits, etc. My childhood friends were deeply exasperated by my unconventional outerwear choices. I maintain that cloaks are eminently practical and superior to coats in many respects, and that I’m just too fashion-forward for my friends’ tastes.
  • Bought “swiftwater” Crocs shoes, again much to the exasperation of my close friends. Finally something that doesn’t rip apart in the span of two years (super comfortable and water-proof are also key advantages). They are even great for DDR!
  • Roadtripped the land of ice and fire, in the backseat of a minivan with a dozen friends. Can confirm: if you don’t like the weather in Iceland, wait five minutes. Otherwise, when devoid of humans, Iceland is a nice place. I guess I am the last generation to have experienced icebergs and WOW Air.
  • Visited various cities in Spain in the middle of summer. Re-learned Spanish in a week discussing with taxi drivers during GUADEC. Eastern and Southern Spain certainly has pleasant weather.
  • Sat in a bistro alley of Almeria with Tobias Bernard, Jordan Petridis and (I believe?) Jakub Steiner, as Tobias explained, with much passionate conviction, his plans to convince Linux distributions to ship only Adwaita (with a recoloring API) and stop theming GNOME apps. I definitely saw the appeal as an application developer myself, but as an (un)official member of the GNOME “Old Farts club” (I never got stickers or a pipe) who had witnessed the Desktop Wars of the mid-2000’s, and as someone who was enjoying the then undergoing reconciliation after six years of sometimes tense relationships with downstream vendors, I listened with some mild amusement and wished him good luck on achieving that diplomatically (fast-forward to 2021, it turns out that the most high-profile shitstorm came, to my surprise, from a pretty different downstream partner).
Crowd at GUADEC 2018
  • Discovered the fantastic tool that is SweetHome3D, and modelled a home in a day, with no prior 3D CAD/BIM software experience.
  • Discovered CHANS’ battery rebuild service for laptops, ebikes, power tools, etc.
  • Met and welcomed Dr Julien Meyer (seen below working in style on my terrace during the warm season) as a guest in my home for a month or two, until he would find an apartment to rent near the office. Wonderful gentleman with amazing all-around culture and artisanal skillset (complementing his architecture, engineering & construction research knowledge), that I am happy to count as a good friend to this day.
  • The waifu moved in with me for Q4 2018, along with an extremely lazy corgi dog. As she had been deeply abused by her work environment throughout 2018 to the point of utter burnout, she ended up taking an extended vacation in my home where I nursed her back to health from Q4 2018 to Q2 2019.
Behold, Mac Owain the corgi, quite possibly the laziest dog you could find in these lands. So lazy, in fact, that I had to drag it around like a floor mop to make it go outside, as you can see in this video.
  • My colleague/friend James ended his life at 39.
    I cried for the first time in probably twenty five years, wrote this farewell, and then traveled to his funeral where I found some closure.
    Incidentally, while I was there, I also saw some of the heartland and its social fabric. With my nascent awareness of “back row America“, the opioid epidemic and symptomatic despair deaths of the “forgotten people” (see also: the unnecessariat), it is then that I understood, I think, what led to the rise of Trumpism some years prior. Division in the USA is not necessarily about red vs blue states, nor just urban vs rural. It is, among other things, decades of collapsing socio-economic conditions and a general feeling of betrayal and being ignored by the establishment, all crystallized into an ideology of mistrust; thus why you can’t really recover that demographic once it has organized and radicalized.
François discussing with James, when we last met him at a get-together in San Francisco.
  • I completed my third yearly term on the two real estate boards of directors, and sought a replacement to fill my seat, as I was scheduled to move to a different location a few months later, and also because my life had gotten pretty darned complicated and stressful at this point. I might get involved there again someday, but in the meantime, the toughest part was done and the facilities were in good hands, so “mission accomplished”.
  • Around the same period, a certain technology manufacturing company started asking me to meet increasingly unreasonable objectives, such as near-single-handedly doubling/tripling sales every month (I believe anyone who worked in sales & marketing will laugh heartily at this), while also asking me to turn a blind eye to supply chain issues & product design considerations, which is just not what a true CMO does.

by Jeff at February 06, 2022 11:40 AM

February 05, 2022

Jean-François Fortin TamCHANS battery rebuild: giving traditional laptops a new life with refactored batteries cells

Back in 2018, when I acquired my legendary ThinkPad X220, I discovered that there is a lady in Ontario, Ms. Chulkova, who does professional battery rebuilding as a side-gig: if you’re in Canada (or the USA, to an extent) you can get your laptop (and other power tools) battery cells replaced by new high-quality cells. This is interesting if you have an electric bike or if, like me, you are a luddite who believes that the last great laptop keyboards were produced in 2011 (before the ThinkPad X230/T430/etc.) and that ultrabooks—with their proprietary slim LiPo batteries and general planned obsolescence—are an ecological disaster.

Ms Chulkova’s business is called CHANS. She’s not paying me to write this (and she never asked me for a review or anything of the sort), I just thought her business was worth mentioning, as I’m not sure it’s really a commonly encountered kind of business here.

At 45 CAD (+ shipping cost both ways, 2×15$ for a 1kg package in my case), this battery rebuild service is:

  • much better quality than no-name cheap chinese replacement batteries;
  • much less expensive than OEM batteries (which have always been at least 3 to 4 times that price, and might have been sitting on shelves for months at this point), which are not even really sold officially anymore, as far as I can tell any batteries you buy will be third-party aftermarket batteries;
  • much easier and more time-efficient than sourcing parts and rebuilding a battery myself, especially since she’s equipped to do spot welding, has specialized testing equipment, and uses special debugging software to reset the microcontrollers and ensure the batteries work.

I wish there was such a service locally in the Montréal metropolitan area (or even in Québec City) where I could drop off and pick up batteries to be reconditioned to save on shipping, but I didn’t find any (let me know if you find one someday).

When CHANS rebuilt my battery, Ms Chulkova mentioned she would use Samsung cells—second in quality only to Panasonic and Rhosgobel rabbits, I would assume—and indeed, the 9 cells I can see, as I opened up my ThinkPad X220’s battery, are Samsung-branded:

They worked great during the first year at least; I’m unsure what their behavior could have been like in years 2 and 3, because I stopped using the laptop 8 months after having the cells changed (as I picked up an even more exquisite ThinkPad X220T).

I started using the X220 again 2 years later, in the fall of 2021. After a few weeks, the battery died and suddenly wouldn’t hold a charge anymore, which is not entirely surprising; I wonder if it is primarily due to ageing (the cells being at least 3 years old at that point) or if sitting on a shelf (unplugged from the computer, at 50% charge) for a year killed them, or perhaps the microcontroller is confused. Or is there a way to easily deplete-recharge them or reset the controller to resurrect them? 🤔

My overall impression is that CHANS Battery Rebuild is good and honest business worth supporting, so if you are in need of getting like-new battery life out of old electronics that use battery cells, consider doing business with them (and let me know how it works for you in the long run). I will probably consider their services again when/if regular travel becomes a thing for me again.

by Jeff at February 05, 2022 11:35 PM

Bastien Nocera“Videos” de-clutter-ification

(Bastien Nocera)

(I nearly went with clutterectomy, but that would be doing our old servant project a disservice.)

Yesterday, I finally merged the work-in-progress branch porting totem to GStreamer's GTK GL sink widget, undoing a lot of the work done in 2011 and 2014 to port the video widget and then to finally make use of its features.

But GTK has been modernised (in GTK3 but in GTK4 even more so), GStreamer grew a collection of GL plugins, Wayland and VA-API matured and clutter (and its siblings clutter-gtk, and clutter-gst) didn't get the resources they needed to follow.

Screenshot_from_2022-02-03_18-03-40A screenshot with practically no changes, as expected

The list of bug fixes and enhancements is substantial:

  • Makes some files that threw shaders warnings playable
  • Fixes resize lag for the widgets embedded in the video widget
  • Fixes interactions with widgets on some HDR capable systems, or even widgets disappearing sometimes (!)
  • Gets rid of the floating blank windows under Wayland
  • Should help with tearing, although that's highly dependent on the system
  • Hi-DPI support
  • Hardware acceleration (through libva)

Until the port to GTK4, we expect a overall drop in performance on systems where there's no VA-API support, and the GTK4 port should bring it to par with the fastest of players available for GNOME.

You can install a Preview version right now by running:

$ flatpak install --user https://flathub.org/beta-repo/appstream/org.gnome.Totem.Devel.flatpakref

and filing bug in the GNOME GitLab.

Next stop, a GTK4 port!

by Bastien Nocera (noreply@blogger.com) at February 05, 2022 05:29 PM

February 04, 2022

Jean-François Fortin TamYear MMXVII in 1 ⅓ minute

As part of my seven-years retrospective, here’s a high-level overview of what I did in 2017, in roughly 1 minute and 20 seconds:

Pictured: mai waifu.
  • I did a painting featuring Tintin vs Sephiroth.
    Because I could.
  • It is only in February of that year that I found the time to finally review and sort through over 2750 photos on my computer, accumulated since the fall of 2014, bringing the number down to 500 untriaged photos within 7 to 8 hours of focused work.
  • Started wearing a short wool cloak.
    Y’all didn’t see me with it, because GUADEC never happens in the northern hemisphere’s winter.
  • Suddenly and unexpectedly got noticed by this lady (henceforth nicknamed “mai waifu”), who initiated a long and complicated love story that lasted until 2020. Notice me, sempai!
  • Was very happy to elect Montréal’s first ever mayoress the city’s 375+ years history, leading what I see as pretty much the only party with a sustainable development/transit/eco-oriented vision. She’s not perfect of course, and the press & vocal folks love to bash her and her party for some blunders and a handful of unrealized promises, but I do feel like she’s the best we’ve got so far, and probably the first shakeup we’ve had since the 50’s. Screw flashy events and north-american “car culture” city design, we need resilient cities built for humans. And as a marketeer, I can’t help but grin at the thought of a lady who campaigned as “The right man (sic) for the job”.
  • Provided photographic evidence of the enduring relevance of “chocolatine” to all French naysayers, by showing them what “pain au chocolat” actually is:
“Pain au chocolat”, as labelled behind Première Moisson‘s counter.
  • Curiously looked at powertop numbers and wondered why I can’t seem to break below the 50-60 wakeups-per-second barrier on modern Linux desktops: part 1 and part 2. Those observations may or may not be outdated by now.
  • Wrote my own super-accurate French subtitles for the original version of the Ghost in the Shell movie, but never released those. Would anyone care?
  • Restructured & rewrote my whole personal website during the course of September 2017, which then stood the test of time until summer 2019.
  • Started debating my couch’s upholstery with friends. The matter was settled only in 2021.

by Jeff at February 04, 2022 08:33 AM

February 03, 2022

GStreamerGStreamer 1.20.0 new major stable release

(GStreamer)

The GStreamer team is excited to announce a new major feature release of your favourite cross-platform multimedia framework!

As always, this release is again packed with new features, bug fixes and many other improvements.

The 1.20 release series adds new features on top of the previous 1.18 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework.

Highlights:

  • Development in GitLab was switched to a single git repository containing all the modules
  • GstPlay: new high-level playback library, replaces GstPlayer
  • WebM Alpha decoding support
  • Encoding profiles can now be tweaked with additional application-specified element properties
  • Compositor: multi-threaded video conversion and mixing
  • RTP header extensions: unified support in RTP depayloader and payloader base classes
  • SMPTE 2022-1 2-D Forward Error Correction support
  • Smart encoding (pass through) support for VP8, VP9, H.265 in encodebin and transcodebin
  • Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 support experimental)
  • Video decoder subframe support
  • Video decoder automatic packet-loss, data corruption, and keyframe request handling for RTP / WebRTC / RTSP
  • mp4 and Matroska muxers now support profile/level/resolution changes for H.264/H.265 input streams (i.e. codec data changing on the fly)
  • mp4 muxing mode that initially creates a fragmented mp4 which is converted to a regular mp4 on EOS
  • Audio support for the WebKit Port for Embedded (WPE) web page source element
  • CUDA based video color space convert and rescale elements and upload/download elements
  • NVIDIA memory:NVMM support for OpenGL glupload and gldownload elements
  • Many WebRTC improvements
  • The new VA-API plugin implementation fleshed out with more decoders and new postproc elements
  • AppSink API to retrieve events in addition to buffers and buffer lists
  • AppSrc gained more configuration options for the internal queue (leakiness, limits in buffers and time, getters to read current levels)
  • Updated Rust bindings and many new Rust plugins
  • Improved support for custom minimal GStreamer builds
  • Support build against FFmpeg 5.0
  • Linux Stateless CODEC support gained MPEG-2 and VP9
  • Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
  • Lots of new plugins, features, performance improvements and bug fixes

For more details check out the GStreamer 1.20 release notes.

Binaries for Android, iOS, macOS and Windows will be provided in due course.

You can download release tarballs directly here: gstreamer, gst-plugins-base, gst-plugins-good, gst-plugins-ugly, gst-plugins-bad, gst-libav, gst-rtsp-server, gst-python, gst-editing-services, gst-devtools, gstreamer-vaapi, gstreamer-sharp, gst-omx, or gstreamer-docs.

February 03, 2022 12:00 PM

February 02, 2022

Jean-François Fortin TamYear MMXVI in 1 ½ minute

This is part 2 of my seven-years retrospective. It is again kept extremely short and high-level.

Capacitor plague on my dad's motherboard
  • I took down my online personal Interaction Design portfolio back then, leaving just a summary page.
  • I completed my 2nd term on the board of the GNOME Foundation, and wrote a report summarizing my duties that year.
    At the end of these two terms, I decided to leave the GNOME Foundation board, as I felt like I had accomplished what I had to accomplish, and because I wanted to get back some balance in my personal life, as well as the ability to focus on my other non-profit work and professional duties.
  • I had found a rare business mentor, André, a friend of the family, who had had a very interesting entrepreneurial career and who kindly accepted to help… then I learned a few months later that he suddenly died of a heart attack.
  • Attended GUADEC in Karlsruhe, where some impressive tunnelworks were going on, and was happy to meet up with the Pitivi team and GSoC students there! Took some photos, including the fact that it was probably the only conference with an inflateable kiddie pool to watercool hackers (shout out to Bilboed “brainstorming with his eyes closed” in the right-hand side of that picture).
  • Sometime later, I began working with a certain Linux-and-security-oriented laptop manufacturer as their chief marketing officer, a contractor assignment that lasted for nearly 3 years.
  • I enthusiastically flirted with elementary OS‘ “Pantheon” desktop on Fedora, because GNOME Shell’s main performance slowdown issue at the time was irking me too much—so much so that I said I’d buy a Ferrari to whoever would prove me wrong (nobody did so far, but don’t attempt this in 2022, that offer is no longer valid; the performance problems were solved in 2019 and beyond). Pantheon on Fedora was an interesting experiment, although integration was lacking as it was never meant to be run outside of elementary and, understandbly, came with zero support for that usecase.
  • That year, Michael Catanzaro discovered, to his great shock, that I existed even in 2006.
  • Discovered that random freezes on an old Linux computer can simply be due to capacitor plague (pictured above). Replacing these three capacitors on my father’s computer motherboard eliminated the random freezes.
  • Organised the 2016 GNOME Summit in Montréal. Discovered the hard way that you can’t relocate the GNOME Summit out of the Boston area (or USA), even as an official event by the Foundation, without having a very different set of attendees as a result. People back then didn’t so desperately want to cross the border to the North.

by Jeff at February 02, 2022 11:52 PM

GStreamerGStreamer 1.18.6 stable bug fix release

(GStreamer)

The GStreamer team is pleased to announce another bug fix release in the stable 1.18 release series of your favourite cross-platform multimedia framework!

This release only contains bugfixes and security fixes, and it should be safe to update from 1.18.x.

Highlighted bugfixes:

  • video-converter: Fix broken gamma remap with high bitdepth YUV output
  • shout2send: Fix issues with libshout >= 2.4.2
  • mxfdemux: fix regression with VANC tracks that only contains packet types we don't handle
  • Better plugin loading error reporting on Windows
  • Fixes for deprecations in Python 3.10
  • Many build fixes, memory leak fixes, reliability fixes
  • Security fixes

See the GStreamer 1.18.6 release notes for more details.

Binaries for Android, iOS, Mac OS X and Windows will be available shortly.

Download tarballs directly here: gstreamer, gst-plugins-base, gst-plugins-good, gst-plugins-ugly, gst-plugins-bad, gst-libav, gst-rtsp-server, gst-python, gst-editing-services, gst-devtools, gstreamer-vaapi, gstreamer-sharp, gst-omx, or gstreamer-docs.

February 02, 2022 03:30 PM

February 01, 2022

Christian SchallerGetting rid of the need for the usecase Linux distribution

(Christian Schaller)

There was an article on Open for Everyone today about Nobara, a Fedora-based distribution optimized for gaming. So I have no beef with Tomas Crider or any other creator/maintainer of a distribution targeting a specific use case. In fact they are usually trying to solve or work around real problems and make things easier for people. That said I have for years felt that the need for these things is a failing in itself and it has been a goal for me in the context of Fedora Workstation to figure out what we can do to remove the need for ‘usecase distros’. So I thought it would be of interest if I talk a bit about how I been viewing these things and the concrete efforts we taken to reduce the need for usecase oriented distributions. It is worth noting that the usecase distributions have of course proven useful for this too, in the sense that they to some degree also function as a very detailed ‘bug report’ for why the general case OS is not enough.
Before I start, you might say, but isn’t Fedora Workstation as usecase OS too? You often talk about having a developer focus? Yes, developers are something we care deeply about, but for instance that doesn’t mean we pre-install 50 IDEs in Fedora Workstation. Fedora Workstation should be a great general purpose OS out of the box and then we should have tools like GNOME Software and Toolbx available to let you quickly and easily tweak it into your ideal development system. But at the same time by being a general purpose OS at heart, it should be equally easy to install Steam and Lutris to start gaming or install Carla and Ardour to start doing audio production. Or install OBS Studio to do video streaming.

Looking back over the years one of the first conclusions I drew from looking at all the usecase distributions out there was that they often where mostly the standard distro, but with a carefully procured list of pre-installed software, for instance the old Fedora game spin was exactly that, a copy of Fedora with a lot of games pre-installed. So why was this valuable to people? For those of us who have been around for a while we remember that the average linux ‘app store’ was a very basic GUI which listed available software by name (usually quite cryptic names) and at best with a small icon. There was almost no other metadata available and search functionality was limited at best. So finding software was not simple, at it was usually more of a ‘search the internet and if you find something interesting see if its packaged for your distro’. So the usecase distros who focused on having procured pre-installed software, be that games, or pro-audio software or graphics tools ot whatever was their focus was basically responding to the fact that finding software was non-trivial and a lot of people maybe missed out on software that could be useful to them since it they simply never learned about its existence.
So when we kicked of the creation of GNOME Software one of the big focuses early on was to create a system for providing good metadata and displaying that metadata in a useful manner. So as an end user the most obvious change was of course the more rich UI of GNOME Software, but maybe just as important was the creation of AppStream, which was a specification for how applications to ship with metadata to allow GNOME Software and others to display much more in-depth information about the application and provide screenshots and so on.

So I do believe that between working on a better ‘App Store’ story for linux between the work on GNOME Software as the actual UI, but also by working with many stakeholders in the Linux ecosystem to define metadata standards like AppStream we made software a lot more discoverable on Linux and thus reduced the need for pre-loading significantly. This work also provided an important baseline for things like Flathub to thrive, as it then had a clear way to provide metadata about the applications it hosts.
We do continue to polish that user experience on an ongoing basis, but I do feel we reduced the need to pre-load a ton of software very significantly already with this.

Of course another aspect of this is application availability, which is why we worked to ensure things like Steam is available in GNOME Software on Fedora Workstation, and which we have now expanded on by starting to include more and more software listings from Flathub. These things makes it easy for our users to find the software they want, but at the same time we are still staying true to our mission of only shipping free software by default in Fedora.

The second major reason for usecase distributions have been that the generic version of the OS didn’t really have the right settings or setup to handle an important usecase. I think pro-audio is the best example of this where usecase distros like Fedora Jam or Ubuntu Studio popped up. The pre-install a lot of relevant software was definitely part of their DNA too, but there was also other issues involved, like the need for a special audio setup with JACK and often also kernel real-time patches applied. When we decided to include Pro-audio support in PipeWire resolving these issues was a big part of it. I strongly believe that we should be able to provide a simple and good out-of-the box experience for musicians and audio engineers on Linux without needing the OS to be specifically configured for the task. The strong and positive response we gotten from the Pro-audio community for PipeWire I believe points to that we are moving in the right direction there. Not claiming things are 100% yet, but we feel very confident that we will get there with PipeWire and make the Pro-Audio folks full fledged members of the Fedora WS community. Interestingly we also spent quite a bit of time trying to ensure the pro-audio tools in Fedora has proper AppStream metadata so that they would appear in GNOME Software as part of this. One area there where we are still looking at is the real time kernel stuff, our current take is that we do believe the remaining unmerged patches are not strictly needed anymore, as most of the important stuff has already been merged, but we are monitoring it as we keep developing and benchmarking PipeWire for the Pro-Audio usecase.

Another reason that I often saw that drove the creation of a usecase distribution is special hardware support, and not necessarily that special hardware, the NVidia driver for instance has triggered a lot of these attempts. The NVidia driver is challenging on a lot of levels and has been something we have been constantly working on. There was technical issues for instance, like the NVidia driver and Mesa fighting over who owned the OpenGL.so implementation, which we fixed by the introduction glvnd a few years ago. But for a distro like Fedora that also cares deeply about free and open source software it also provided us with a lot of philosophical challenges. We had to answer the question of how could we on one side make sure our users had easy access to the driver without abandoning our principle around Fedora only shipping free software of out the box? I think we found a good compromise today where the NVidia driver is available in Fedora Workstation for easy install through GNOME Software, but at the same time default to Nouveau of the box. That said this is a part of the story where we are still hard at work to improve things further and while I am not at liberty to mention any details I think I can at least mention that we are meeting with our engineering counterparts at NVidia on almost a weekly basis to discuss how to improve things, not just for graphics, but around compute and other shared areas of interest. The most recent public result of that collaboration was of course the XWayland support in recent NVidia drivers, but I promise you that this is something we keep focusing on and I expect that we will be able to share more cool news and important progress over the course of the year, both for users of the NVidia binary driver and for users of Nouveau.

What are we still looking at in terms of addressing issues like this? Well one thing we are talking about is if there is value/need for a facility to install specific software based on hardware or software. For instance if we detect a high end gaming mouse connected to your system should we install Piper/ratbag or at least make GNOME Software suggest it? And if we detect that you installed Lutris and Steam are there other tools we should recommend you install, like the gamemode GNOME Shell extenion? It is a somewhat hard question to answer, which is why we are still pondering it, on one side it seems like a nice addition, but such connections would mean that we need to have a big database we constantly maintain which isn’t trivial and also having something running on your system to lets say check for those high end mice do add a little overhead that might be a waste for many users.

Another area that we are looking at is the issue of codecs. We did a big effort a couple of years ago and got AC3, mp3, AAC and mpeg2 video cleared for inclusion, and also got the OpenH264 implementation from Cisco made available. That solved a lot of issues, but today with so many more getting into media creation I believe we need to take another stab at it and for instance try to get reliable hardware accelerated encoding and decoding on video. I am not ready to announce anything, but we got a few ideas and leads we are looking at for how to move the needle there in a significant way.

So to summarize, I am not criticizing anyone for putting together what I call usecase distros, but at the same time I really want to get to a point where they are rarely needed, because we should be able to cater to most needs within the context of a general purpose Linux operating system. That said I do appreciate the effort of these distro makers both in terms of trying to help users have a better experience on linux and in indirectly helping us showcase both potential solutions or highlight the major pain points that still needs addressing in a general purpose Linux desktop operating system.

by uraeus at February 01, 2022 08:57 PM

January 31, 2022

Jean-François Fortin TamYear MMXV summarized in 2 ½ minutes

I’m doing a quick retrospective on the last seven years (you’ll see why later). In this first part, here’s a short overview of what I did in 2015 (2 to 3 minutes reading time):

  • In the spring of 2015, I wrote a blog post reporting on my first term (2014-2015) as the president of the GNOME Foundation.
  • Designed, printed and shipped a ton of annual reports for the GNOME Foundation, and wrote forty letters by hand with a calligraphic pen. I also did the design work in 2016 and 2017, but I didn’t do the letters then.
  • Attended GUADEC. Photos I took can be found at the usual place.
  • I experienced a fire in the airport, two broken gates, and an airplane engine failure during takeoff, all in the same day. Makes you rethink your outlook on life. Particularly in light of what happened to my friends at the turn of 2019-2020 (more on that later).
  • In the fall season, I joined two other boards of directors, to manage a real estate portfolio somewhere north of $55 million. I was there roughly three years, until the fall of 2018. Paradoxically, it was much less demanding work than the GNOME Foundation’s board, thanks to the true luxury of having a lot of staffers to operationalize the board’s governance decisions and take care of the day-to-day.
  • With friends, we made a TurBaconEpic (warning: not for vegans.)
  • Quietly ended my close involvement with the Pitivi project, due to lack of time and shifting life priorities. Thus 2015 was the last time I blogged about it (part 1, part 2, 0.95 release announcement. I’d love to be closely involved again, but realistically, years down the road, this is not happening, and I trust the current maintainers to do a great job with it.
  • I inked an old laminated sketch of Cubitus & Sénéchal to give it new life.
  • Made a video for a symphony orchestra.
  • Empirically/mathematically proved that projectors’ “smart eco” modes are marketing bullshit.
  • Discovered that some Spanish, French and British cities don’t understand how roundabounds are actually supposed to work.
  • It had taken me 2-3 years of trial-and-error (and lots of research), but at this point yeast and flour no longer had too many remaining secrets for me, and the bread and pizza doughs I made were pretty good.
  • My longtime friend Étienne came to see me a couple of times during his month-long stay in Montreal that winter, a most welcome visit considering we had not seen each other for three years. Lots of fun and repaired equipment.
  • Kusanagi, the desktop computer I had been using since 2009, was starting to show its limitations with the “modern” web obesity crisis. No longer wanting to constantly worry about my RAM consumption during my intensive use of web browsers (and wishing to work on 90 megapixel images with about thirty layers at the same time), I bought a workstation-class desktop computer (a used Dell Precision T3500 boosted to 24 GB of RAM). This computer was insanely powerful, it just took me two years to figure out why it was randomly crashing and how to fix it (troubleshooting the issue took me 21 months, but writing that blog post took me 10 months)
  • I bought/upgraded a lot of studio equipment for my video production services, from lighting to sound recording and processing, with the goal of getting back in touch with my old creative love of video production. A great pair of studio monitoring headphones to have for accuracy (but I would also say general purpose) is the legendary Sony MDR-7506; however, the earpads flake out after 4-5 years, so I later devised a permanent solution for durable headphone earpads.

by Jeff at January 31, 2022 11:15 PM

Jean-François Fortin TamNew photography portfolio

Side note: I originally planned to publish part III of my “upgrade treadmill trilogy” on January 31st, 2022, but something unexpected came up in recent days, which might make me rewrite the majority of that blog post for the 3rd time, so… holding pattern for now. It’ll probably happen later in February-March. In the meantime, here’s some unrelated quick announcement I wanted to share for quite a while.


For more than 18 years now, I’ve secretly been a photographer—including client work when opportunity arose—but I never took the time to build a photographic portfolio, because traditionally photography is not my core business.

However, a wildly impressed client of mine recently insisted I make an official photography folio to show publicly for the first time, and so I have painstakingly built it, as sub-pages on the Atypica website (such as the portraits page). Here are a handful of samples to whet your appetite:

I can hear you say, “But Jeff, you already had a photo gallery on your personal website, for years!” and you would be right, but it’s an extensive and informal gallery, not a select portfolio. In a portfolio, less is more: it is meant to be shown to people who only have 30 seconds to spare, not to friends, family and community members who wish to see the whole story of a trip to Zanzibarland or to find a reasonably complete depiction of a particular FLOSS conference event.

On my computer, my photo library has somewhere around 49 thousand items. Building this portfolio was thus an exercise in self-restraint, a ruthless selection & elimination process, going through my many thousands “good to excellent” pictures then culling the finalists, in multiple plasses, to only one or two dozen “top 1%” eye-catching pictures for each category.

You can see this in the resulting Atypica photo portfolio subpages, such as portraits photography, construction sites photography, events photography, etc. (there are more categories in the nav bar at the top).

Designing those pages and manually placing every element for importance and visual harmony, in two languages, was a hell of a job. Who said Tetris was fun?! 😤 Anyway, enjoy the result!

by Jeff at January 31, 2022 09:44 AM

January 28, 2022

GStreamerGStreamer 1.19.90 pre-release (1.20 rc1)

(GStreamer)

The GStreamer team is excited to announce the first release candidate for the upcoming stable 1.20 release series.

This 1.19.90 pre-release is for testing and development purposes in the lead-up to the stable 1.20 series which is now feature frozen and scheduled for release very soon. Any newly-added API can still change until that point, although it is extremely unlikely for that to happen at this point.

Depending on how things go there might be more release candidates in the next couple of days, but in any case we're aiming to get 1.20.0 out as soon as possible.

Preliminary release notes highlighting all the new features, bugfixes, performance optimizations and other important changes can be found at https://gstreamer.freedesktop.org/releases/1.20/.

Binaries for Android, iOS, Mac OS X and Windows will be available at the usual location in due course.

Release tarballs can be downloaded directly here:

As always, please let us know of any issues you run into by filing an issue in Gitlab.

January 28, 2022 03:00 PM

January 25, 2022

Jean-François Fortin TamThe Software Upgrade Threadmill and Life’s crazy chain of dependencies — an epic tale about Firefox, GTG, Python, and Linux distros

This blog post talks about the general types of hurdles I’ve been encountering on the desktop side of the “upgrade threadmill” when running Linux. It is part two of a three-part blog post série. If you’re into servers, you may be interested in part one, the Linux server landscape’s post-2020 metamorphosis.


Modern software development happens at a breakneck pace, and while staying on ancient versions (hello, Debian Stable / Ubuntu LTS / Android users) is not really a safe and realistic option anymore (try reporting bugs without getting laughed out of the room by upstream maintainers), it is becoming a challenge for users to keep up. When it works, it works… but when something breaks down in the upgrade threadmill, the chain of dependencies to get back on track can become absolutely ludicrous and throw your digital life in turmoil. Just like needing to replace that one light bulb…

Case in point: I’m finally publishing this article in 2022, while I initially meant to blog about this way back in 2017… but more stuff kept breaking all the time, resetting my productivity and accidentally adding more potential content for this blog post. More value for you, dear reader! So grab your popcorn and read on.

As someone who has been running Linux for 19 years (as of 2022), I think I know my way around most hurdles you can possibly encounter. Undoubtedly, running Linux-based operating systems on desktop/laptop computers has overall gotten incredibly easier compared to 2003, but also, as one gradually becomes highly dependent on specific tools and committed to well-oiled workflows, the upgrade threadmill can become a real high-stakes pursuit.

I’ll skim over minor anecdotes like the fact that I once had to “dnf versionlock alsa” for a while because ALSA was misbehaving with my Sound Blaster™ Audigy™ (don’t laugh! That’s how you get analog surround sound when your motherboard doesn’t do 5.1) while testing on a live USB version of a new Fedora release but, as it turns out, it worked without problems after installation… or the fact that I just realized, in 2022, that nautilus-sendto doesn’t exist anymore and since most apps haven’t yet migrated to the Flatpak-compatible replacement “portal”, that means I can’t right-click a file in Nautilus to send it via email now… and I’ll instead dive into the rather more interesting reason why I ran an old insecure web browser—and operating system—for nearly two years.

A tale of foxes

In 2017, Mozilla unleashed Firefox Quantum, quite possibly the most awesome and groundbreaking release they did in that decade. Except there was just one little problem: it also completely changed the extensions system (for good technical reasons).

I happened to be critically dependent, for my day-to-day productivity, on the now incompatible TabGroups extension (which was, itself, a reimplementation of Mozilla’s previously deprecatedPanorama” feature from Firefox 4, previously known as “Tab Candy“), whose author had burned out and given up completely on porting it to the new WebExtensions API.

As a power user, I was utterly foxed.

There was an awfully long period of time where Firefox had no replacement and no migration path for users like me.

Because the modern web (a.k.a. the web obesity crisis) was unbearable, I needed to stay on an Electrolysis-capable-but-pre-Quantum version of Firefox, and that meant specifically Firefox 57, and no other. Not even Firefox ESR. I had to deep-freeze my Firefox version to prevent any upgrade. Thankfully, operating systems like Fedora allow you to do that easily, with DNF’s “versionlock” feature.

This is what “dnf versionlock firefox” feels like (soft warning: this photo may shock animal lovers):

A fox that accidentally fell in a river in the winter

Locking your Firefox version is something that you should never do from a security standpoint (yes I can hear your lamentations, infosec crowd), but I had no other choice and I was too busy in my day-to-day mercenary CMO job to be messing with my personal productivity tooling. So I kept waiting, checking and hoping that someday, someone would write a replacement WebExtension for it.

I therefore spent a painfully long period of time stuck on the same old (and eventually EoL‘ed) version of Fedora Workstation, because upgrading Fedora eventually became impossible due to dependency issues arising from the versionlocked Firefox. While Fedora 27 was released in 2017, I had to remain on that frozen-in-time, unmaintained, insecure version until the end of 2019.

This is what waiting in suspense, on an EoL’ed operating system, looks like:

This moment was excruciating.

Yes, I can hear all of you from the InfoSec crowd gasping for air, in shock, after having stared at the screen for a solid 30 seconds wondering how I could have subjected myself to such risk in this day and age. What can I say, I have NERVes of StEELE.

Thankfully, one day in 2019, Simple Tab Groups was recommended to me and, as I tested it extensively to see how solid it actually was, I determined it to be the sole viable, Nekohayo-Proof™, Enterprise-Grade™ replacement for Panorama/TabGroups. It provided a migration path and it was pretty much bullet-proof (especially compared to things like Conex, which I found to be unreliable for my needs). I’ve been happily using it since 2019 and it works better than anything else ever did. With a couple of tweaks in the settings, it has much better performance than its predecessors—especially when you disable thumbnails, use the tabs “discarding” (unloading) feature, and after my suggested search activation technique was implemented—so that’s neat.

A tale of pure hard drive

Eventually, Firefox being a solved problem at last, and Fedora 27 reaching end-of-life status, I really had to migrate, not just for security reasons, but also because my computer’s hard drive partitions were badly space-bound, as I had really outgrown the layout I had made all the way back in… 2010.

Repartitioning my workstation, and upgrading some SSDs in the process, was also blocking my ability to reassign the older/smaller SSDs to my server, which in turn was blocking my ability to migrate from Centos 7 to Centos 8, which was hurting my ability to upgrade PHP sustainably, which was blocking my ability to upgrade Matomo.

If your head hurts while you’re reading this, at this point, it’s not just because of the hard drives. But wait, I’m not done yet!

A tale of serpents

Fedora, as a fast-moving operating system, generally favors leanness and innovation over backwards compatibility (“Friends, Features, First“). This means that if you want to get rid of Python 2 for example, you hunt down and exile any application that still hasn’t ported to Python 3 (they were not alone by the way; OpenSUSE and Sabayon Linux, among others, did the same thing roughly a year later). This works well in an ideal world where application developers have the time and resources to quickly port to new technologies, but the Python 2 to 3 migration has been a notoriously long process in terms of ecosystem. And sometimes, developers have to shave two dozen massive yaks in lockstep in order to achieve that. I know, because I have lived through, as a co-maintainer, the multi-years effort that was porting Pitivi to Python 3, GTK 3, GObject Introspection and GStreamer 1.0 simultaneously.

As a result, when Fedora decided to cut the cord for Python 2 apps in version 31, I had a number off desktop applications simply cease to exist on Fedora. Among them were DisplayCAL (which I had just discovered as the only way to actually make my Colormunki spectrophotometer work for display calibration without requiring a PhD in quantum physics, as colord unfortunately never worked reliably for me), and… Getting Things GNOME.

I could live without DisplayCAL (“we had barely just met!”), but I could not live without GTG, so I had to go begging for a good samaritan to emergency-package it as a Flatpak. Thankfully, Bilal Elmoussaoui answered the call to package the old version. Whew, I had some breathing room and could finally upgrade from the EoL’ed Fedora 27 to latest stable version at the time, Fedora 30, while I figured out a way to put the GTG project back on track.

  • I eventually did put the GTG project back onto the rails (with Diego’s admirable bugfixing frenzy, the much-awaited 0.4 version was released in 2020 from development hell). Two years down the road, GTG is now slated to re-enter Fedora (hopefully) 🤞
  • DisplayCAL, on the other hand, is still a Python 2 application so… as Larry “Solo Wing Pixy” Foulke said in the introduction scene of The Belkan War, “It’s going to take a while.”

As you can see, even for an experienced Linux user used to troubleshooting cutting-edge technology, the upgrade threadmill can be a problem. I mean, just look at how absolutely ridiculous the “chain of dependencies” has been for me here just to solve the “critical path”:

  • Objective: “run the latest Fedora version!”
    • Blocked by Firefox version
      • Blocked by needing to wait for a viable replacement for Panorama / Tab Groups
    • Blocked by GTG
      • Needs a temporary Flatpak package to live through the winter
      • Needs a new Python 3 + GObject Introspection + GTK3-based release
        • Needs a new community of coders to reform around the project
          • Needs product management, including proper open-source processes and an opiniated direction
            • Needs updating/rewriting the majority of contributors’ documentation
            • Needs talking to previous maintainers and the public to ascertain what led to previous failure
          • Needs remarketing & open-source tech evangelism, including outreach & community management
            • Needs to evaluate the feasibility and available resources
              • Need to ascertain the technical status of the previously stalled development efforts (by persistently tracking down and pressing previous maintainers for answers via personal email exchanges) and see if any of the onlookers of this ticket would be interested in embarking on that project
              • Needs to survey the market to gauge interest, with a marketing piece that also provides historical context and a pitch on GTG’s unique value proposition, preceded by:
            • Needs a clear, actionable, lean, rapidly achievable “MVP” roadmap
              • Needs heavy bug triaging
                • Needs building & testing code that had been abandoned for 7 years
                • Needs claiming administrative ownership of the multiple bug trackers
            • Needs to build a social media presence from scratch
            • Needs to rewrite the project’s front page to market it to users (who may become potential contributors)
          • The things in bold above are done as a public service, but they also are what companies would hire me for, if they have enough Japanese Yen. I didn’t spend years training as a mercenary in Restricted Airspace B7R for nothin’!

That’s not even counting the repartitioning of all my drives (which was another yak shave that had its own chain of dependencies), nor the years-long epic investigation to solve weird hardware issues some years prior to all this. Goodness gracious, it’s a miracle we get anything done around here.


You may think the story ends here. After all, with those issues resolved, I finally was able to thaw everything and upgrade Fedora… and it was a huge sigh of relief indeed; late 2019 to late 2020 was pretty great in terms of being able to run a normal up-to-date Fedora Workstation experience. But nothing is eternal (except Doom)…

Keep your popcorn nearby. Next, I will write about the Curious Case of Fedora and Unison, which warrants its own blog post. Keep your eyes open for a new article on Monday, January 31st!

by Jeff at January 25, 2022 02:30 PM

January 22, 2022

Thomas Vander SticheleQuick way to process an Inbox folder in Obsidian

(Thomas Vander Stichele)

Obsidian's Gems of the Year 2021 nomination has been a great source of cool ideas to add tweaks to my Obsidian setup.

In particular, Quick Capture (mac/iOS) and Inbox Processing was a great gem to uncover as I try and implement the weekly review stage of my Second Brain/PARA setup!

I noticed that the archive/move script was a little slow, taking several seconds to open up the dialog for selecting a folder, breaking my flow. I checked the code and noticed it built a set of folders recursively.

I simplified the code for my use case, removing the archive folder path, and using the file explorer's built in move dialog (which is much faster) and a callback to advance.

The resulting gist is Obsidian: Archive current file and then open next file in folder (Templater script) · GitHub

I'm sure it could be improved further if I understood the execution, variable scope, and callback model better, but this is good enough for me!

I get very little coding time these days, and I hate working in an environment I haven't had a chance to really master yet. It's all trial and error through editing a javascript file in a markdown editor with no syntax highlighting. But it's still a nice feeling when you can go in and out of a code base in a few hours and scratch the itch you had.

flattr this!

by Thomas at January 22, 2022 10:11 PM

January 21, 2022

Jean-François Fortin TamThe post-2020 Linux server landscape metamorphosis

This is “part one” of a three-part blog post on the challenges of keeping up with the “software updates threadmill” in the land of Linux. The next two parts are going to be about the Linux desktop. This first part focuses on the server side and will require about 5 minutes to read.

Shadow of the Colossus photoOne does not easily disturb a slow-moving, 160 tons colossus…

It used to be that you could leisurely deploy a L.A.M.P. server, and stop caring about it for years because PHP’s releases, and the dependency changes in web applications, were happening really slowly. Not so anymore. With the 7.x and 8.x series, PHP has considerably sped up its releasing cadence, and shortened the shelf life of releases. I’ve seen a drastic shift happen in the policies of web application developers, including Matomo (née Piwik) and Kanboard. Even WordPress, one of the most conservative behemoths of the industry (understandable, given that they power roughly half of the websites in the world), requires PHP 7.4 and no longer runs on PHP 5.x.

“Just put everything in containers and continous-deploy all that shit!” I hear you say, “It’s the future!” But I’m not a sysadmin, I’m not day-in-day-out into that crap, and the only reason I run a dedicated server machine in the office is because Matomo doesn’t scale well on shared hosting and their SaaS prices are quite expensive for an individual when you don’t like being artificially capped to a certain number of visitors per month, and, y’know, “How hard can it be, really?”… but I am happiest when I never have to touch/upgrade that server and don’t have to learn rocket science to deploy something. I understand now how infrastructure work would eventually turn you into a Bastard Operator from Hell™.

Circa 2014, I deployed CentOS 7 on my personal server to be able to run Matomo with better performance, because the Pitivi website had a lot of visitors (which is useful to derive knowledge such as “what screen resolutions do people actually use and what can we afford for our UI’s design?”) and its Matomo database weighted multiple gigabytes.

Fast forward a couple of years, and I’ve fallen behind on Matomo updates because, in part, of newer PHP requirements needing me to resort to third-party repositories to get a recent-enough version of PHP to run it. But I eventually did, and it worked, for a time.

Then in late 2019, CentOS 8 came out, so I switched to that, but you can’t just upgrade from one major CentOS version to another, you have to clean install, so it had to wait until early 2020 when I mustered enough courage and enrolled a friendly geeky neighbor to help me out with that yak shave. “Good, I’ll be set for another half-decade now”, I thought.

Then, at the end of 2020, CentOS 8’s support cycle got shortened with an EoL date set to the end of 2021, and the public was told to migrate to RHEL or CentOS Stream instead, and there was much discontent on the Interwebs about that, to say the least. But fair enough, I migrated to CentOS Stream, because I’m not running a mission-critical server powering the stock exchange; CentOS Stream was the easiest path forward, a couple commands and you’re done. Cool. I can live with that.

My respite was short lived however, and my stress levels are rising again as—since the announcement of CentOS Stream 9—I am realizing there may be no upgrade path planned for the various releases of CentOS Stream. Or at least, the lack of such documentation in the announcement, the worrysome comments there (ctrl+F “upgrade”), the fact that my request for clarification remained unanswered, and a redhatter’s comment in this Reddit thread saying that there is no upgrade path (and none is planned), are all factors that do not inspire me much confidence.

I love Red Hat (and the majority of my FLOSS friends work there), have tremendous admiration for their work, and wish them the best. While the creation of CentOS Stream may be a great move from a development & maintenance process standpoint—I can see the appeal, really—the way this situation was handled is not exactly the way I would have handled it from a PR & marketing standpoint (Red Hat unfortunately got a ton of flak and eroded some of its trust in the process), and realizing now that there is still no upgrade path between the short-lifespan* CentOS Stream releases, really discourages folks like from being able to casually use this platform. I know I’m not the only one in this situation.

I would prefer to remain on CentOS for my web infrastructure needs, but this may very reluctantly make me question my allegiances and consider Debian Stable, because I can’t deal with this kind of uncertainty and tedious “clean install” work a third time in such short timespans. And frankly, at this point, the prospect of going to Rocky Linux does not excite me particularly; I might encounter similar worries about the platform’s future or struggles when it comes to upgrades, so if push comes to shove, I’d be more inclined to hedge my bets with Debian, because it’s the one constant in the Linux landscape: Debian was there in the beginning in 1993, and it can’t be killed—it’s reasonable to say now that it will always be there until the end of times, free of ownership influence. And at least the damned thing can be routinely upgraded from one release to the next. Life is too short to be spent clean-installing servers.

With all that said, it remains to be seen whether Red Hat’s community entreprise OS strategy will be a net benefit from a business perspective, beyond engineering considerations. Of course, I realize I am not the target customer when it comes to enterprise scenarios, nor am I owed anything for free; but word of mouth and goodwill are very fragile things, and while I personally keep a positive outlook on Red Hat, not everyone around me does. The price Red Hat might have paid in potential brand damage, burning a lot of goodwill in exchange for increased development process efficiency and potentially a small sales uptick, in the resonating words of Dormin, “may be heavy indeed.”


Erratum: CentOS Stream 8 has a multi-year lifecycle

*: it was now pointed out to me, after this blog post came out, that CentOS Stream 8 isn’t supposed to end with CentOS 8’s Q4 2021 EoL date. This was not self-evident to me, nor was it (in my opinion) documented extremely clearly in the original CentOS Stream announcement, the FAQ, or the EoL information page, which did not specify dates for CentOS Stream 8 specifically (so casual onlookers like me could be led into thinking it has a short lifespan and that you would need to continuously upgrade from one Stream release to the next—which was an acceptable deal to me, until I realized there is no upgrade path!), and the fact that Stream releases have multi-year shelf lives was kinda buried under FAQ entry #6’s inconspicuous title, “Will there be separate/parallel/simultaneous streams for 8, 9, 10, etc?”—so those pages could certainly benefit from some clarifications to clear up any such misunderstandings in the eyes of the public.

I now know my CentOS Stream 8 server probably won’t stop being supported as of Q4 2021 after all, which is a relief; time will tell whether Stream remains an attractive proposition (if an upgrade path opens up in time for its EoL) or whether I may have to look elsewhere.

by Jeff at January 21, 2022 09:45 PM

January 16, 2022

GStreamerGStreamer Rust bindings 0.18.0 release

(GStreamer)

A new version of the GStreamer Rust bindings, 0.18.0, was released. Together with the bindings, also a new version of the GStreamer Rust plugins was released.

As usual this release follows the latest gtk-rs 0.15 release and the corresponding API changes.

This release includes optional support for the latest new GStreamer 1.20 APIs. As GStreamer 1.20 was not released yet, these new APIs might still change. The minimum supported version of the bindings is still GStreamer 1.8 and the targetted GStreamer API version can be selected by applications via feature flags.

Apart from this, the new version features a lot of API cleanup and improvements, and the addition of a few missing bindings. As usual, the focus of this release was to make usage of GStreamer from Rust as convenient and complete as possible.

The new release also brings a lot of bugfixes, most of which were already part of the 0.17.x bugfix releases.

Details can be found in the release notes for gstreamer-rs.

The code and documentation for the bindings is available on the freedesktop.org GitLab

as well as on crates.io.

If you find any bugs, notice any missing features or other issues please report them in GitLab.

January 16, 2022 11:00 AM