Security isn’t exactly a strong point of X11, and improving it is one of the main reasons why Wayland is such a vast improvement over X11. Just one of the many examples of X11 being inherently insecure is that keyloggers are entirely trivial on X11, because keylogger functionality is effectively built into it. Of course, this isn’t exactly news, and as Peter Hofmann details, there is an old X11 extension that adds somewhat rudimentary security to X11: the X11 SECURITY extension. This extension is part of every X.org installation, but it hasn’t seen any meaningful work in a long, long time. What it does is allow you to do is set X11 clients as “trusted” and “untrusted”, where untrusted clients cannot interact with tusted ones. This provides some basic security – it actually prevents keylogging! – but only very basic, as Hoffman notes: The thing is that it’s immediately clear that this extension — in its current state — is not the answer to “X11 is insecure”: You only have two classes, trusted and untrusted. That’s not enough. For example: When you run your browser as untrusted, you can’t simultaneously run some sandboxed program (Snap, Flatpak, …) in a meaningful way, because those two clients can spy on each other again. You want a proper per-client isolation instead. Sandboxing plays an important role here. If you run programs “the traditional way” (i.e., full access to the filesystem and network), then an attacker can do all kinds of things and X11 keylogging is just one of a million concerns. ↫ Peter Hofmann but it also happens to break a lot of things, and many applications simply don’t work with it at all. Oddly enough, Firefox has no issues with it, and will happily run in untrusted mode. The biggest problem, however, is that untrusted clients only have access to exactly two other X11 extensions, which leads to a whole host of problems, like no scaling, broken keyboard layouts, no 3D acceleration, and so on. On top of all of that, it breaks clipboard functionality, as anything copied in an untrusted client cannot be pasted anywhere else. As such, Hoffman concludes: In its current state, I’d say the SECURITY extension is “somewhat useful”, but more work would have to be done. Both in X.Org and in the clients. You would have to come up with a new clipboard protocol, for example. And the list goes on. (See where I’m going with this?) It’s not that simple. ↫ Peter Hofmann Since pretty much nobody adopted it when this extension came out in the ’90s, and it hasn’t seen much work since, the amount of work that would be required to bring it up to modern standards would be astronomical, and trying to get clients to adopt it would probably prove fruitless considering Wayland already exists, and offers all of the potential security benefits and then some. People often claim it would be “easy” to modernise X11, but just this one particular issue – security, kind of important – shows just how quickly the X11 house of cards comes crashing down if you try to do anything to drag it out of its ’80s and ’90s mindset.
Patchwork is a 64-bit monolithic NON-POSIX operating system for the x86_64 architecture that rigorously follows a “everything is a file” philosophy. Built from scratch in C it takes many ideas from Unix, Plan9, DOS and others while simplifying them and sprinkling in some new ideas of its own. ↫ PatchworkOS GitHub page Patchwork is a surprisingly advanced operating system considering it’s a hobby project. It has multithreading with a constant-time scheduler, fully preemptive mutitasking, SMP, file-based IPC (including pipes, shared memory, sockets and Plan9 inspired “signals” called notes), and much more. It also uses a Linux-style VFS and has a custom C standard library. On top of that, there’s a modular window manager that supports themes, in which everything is a window, and so much more. It supports x86_64, but only supports running in RAM. It’s licensed under the MIT license.
Claude Code has considerably changed my relationship to writing and maintaining code at scale. I still write code at the same level of quality, but I feel like I have a new freedom of expression which is hard to fully articulate. Claude Code has decoupled myself from writing every line of code, I still consider myself fully responsible for everything I ship to Puzzmo, but the ability to instantly create a whole scene instead of going line by line, word by word is incredibly powerful. ↫ Orta Therox Oh sweet Summer child. As a former translator, I can tell you that’s how it starts. As time goes on, your clients or your manager will demand more and more code from you. You will stop checking every line to meet the deadlines. Maybe you just stop checking the boilerplate at first, but it won’t stay that way. As pressure to be more “productive” mounts, you’ll start checking fewer and fewer lines. Before you know it, your client or manager will just give you entire autogenerated swaths of code, and your job will be to just go over it, making sure it kind of works. Before long, you realise there are fewer and fewer of you. Younger and less-skilled “developers” can quickly go over autogenerated code just as well as you do – but they’re way cheaper. You see the quality of the code you sign off on deteriorate rapidly, but you have no time, and not enough pay, to rewrite the autogenerated code. It works, kind of, and that will have to be enough. The autogenerated codebases you’re supposed to be checking and fixing are so large now, you’re no longer even really checking anything anymore. Quick, cursory glances, that’s all you have time for and can afford. Documentation and commenting code went out the window a long time ago, and every line of code scrolling across your screen is more tech debt you don’t care about, because it’s not your code anyway. And then it hits you. There’s no skill here. There’s no art here. You’re no longer a programmer. There’s no career prospects. Scrolling past shitty autogenerated code day in, day out, without the time or pay to wrangle it into something to be proud of, is the end of the line for you. Speak up about it, and you’ll be replaced by someone cheaper. The first time I was given a massive pile of autotranslated text to revise, without enough time and pay to ensure I was delivering a quality product, I quit and left the translation industry instantly. Like programming, translating is part skill, part art, and I didn’t get two university degrees in language and translation just to deliver barely passable trash. I took pride in my work, and I wasn’t going to let anyone put my name under a garbage product. Programmers, you’re next. Will you have the stones to stand by your art?
Wayback has been barely announced, and the first version 0.1 has barely left git, but it’s already time for version 0.2. It won’t surprise you to find out this isn’t some massive release, and you’d be right. It really only addresses a few very small bugs, while the developers also take the opportunity to highlight Wayback is now available on Gentoo GURU and Nixpkgs.
If there’s one thing Microsoft is good at, it’s creating weird variants of Windows with odd names that tech media talk about for like a day, after which everyone, especially Microsoft, forgets they even exist. Usually, these weird Windows variants are the result of either legal requirements, or, more commonly, of perceived threats to Windows’ dominance on the desktop. An example of the former are the various “N” editions of Windows, while an example of the latter is the one we’re talking about today: Windows 11 SE. I honestly had completely forgotten Windows 11 SE existed, and most likely you did, too. Windows 11 SE was (one of) Microsoft’s response(s) to the growing popularity of Chromebooks in schools, and as such, this Windows variant omitted a bunch of features for performance and distraction reasons, stored files in OneDrive instead of locally, was locked down so only administrators could control which applications could be used, and so on. In fact, unless specifically whitelisted, Windows 11 SE would not run any Win32 or UWP applications – everything had to be either a PWA or a website. Notably, it was only available in combination with a few specific devices. The past tense in the preceding paragraph should be a dead giveaway of what’s happening. Yes, Microsoft just cancelled the whole thing, after being on the market for only a few years. Microsoft will not release a feature update after Windows 11 SE, version 24H2. Support for Windows 11 SE—including software updates, technical assistance, and security fixes—will end in October 2026. While your device will continue to work, we recommend transitioning to a device that supports another edition of Windows 11 to ensure continued support and security. ↫ Windows 11 SE support document In other words, if your school fell for Microsoft’s sales pitch for Windows 11 SE, you’re kind of screwed after October 2026, because Windows 11 SE only shipped on specific, low-cost, low-powered devices. You’d think other variants of Windows 11 will more or less run on those, too, but if not – or far too slowly – your school is now sitting on a pile of e-waste. Anybody want to run a betting pool for the Windows variant Microsoft will cancel next?
Late last year, we talked about Bismuth, a virtual machine being developed by Eniko Fox, one of the developers of the awesome game Kitsune Tails. Part of a operating systems development side project, Bismuth is a VM (think Java Virtual Machine, not VMware) on top of Fox’ custom kernel, designed specifically to run programs in a sandbox. The first article detailed the origins of Bismuth, and the second article delved into memory safety, sandboxing, and more. We’re a few months down the line now, and Fox recently published another article in the series, this time explaining how a hello world-program works in Bismuth. This is the third in a series of posts about a virtual machine I’m developing as a hobby project called Bismuth. I’ve talked a lot about Bismuth, mostly on social media, but I don’t think I’ve done a good job at communicating how you go from some code to a program in this VM. In this post I aim to rectify that by walking you through the entire life cycle of a hello world Bismuth program, from the highest level to the lowest. ↫ Eniko Fox There’s a ton of detail here, and at the end you’ll have a pretty solid grip on how Bismuth works.
Servo is unique for a few other reasons, too. It’s managed by the Linux Foundation Europe with decisions made by a technical steering committee, not a big tech company. One of the main goals is to be an “embeddable web rendering engine,” meaning it’s not just for browsers—it could be a replacement for Electron or the Android WebView. Servo is also the first completely new browser engine in decades, so it’s taking lessons learned from mainstream browsers while building a new foundation. ↫ Corbin Davenport At the moment, as Davenport notes, Servo is far from ready to be a daily driver browser engine. Tons of websites’ rendering is broken and some crash the browser altogether, and performance is nowhere near that of the other browser engines. This makes perfect sense, as Servo is still in heavy development, and there’s no massive corporation with endless money (and ulterior motives) backing it. Still, out of all the various attempts at wrestling control away from Blink and WebKit, I feel like Servo’s the one with the most promise in the long term.
Getting hardware to run AmigaOS 4.1 or MorphOS on isn’t always easy, cheap, or even possible in the first place. Luckily, there’s now an incredibly easy and straightforward way to emulate these two operating systems: Kyvos, developed by George Sokianos. Kyvos is a user-friendly frontend for Qemu, designed to streamline the creation of AmigaOS 4 and MorphOS emulated environments on Linux, macOS, and Windows. Pronounced “kee-vos,” this name is inspired by the Greek word “κύβος,” meaning cube, symbolizing these virtual systems running within the host OS. Setting up an AmigaOS 4 or MorphOS system is effortless with Kyvos—just a few clicks, and you’re ready to go. A helpful wizard guides users in locating or downloading necessary dependencies, including Qemu and 7zip binaries. ↫ George Sokianos Of course, nothing is stopping you from following guides online to build your own Qemu virtual machine and associated complex command to start it, but Kyvos takes all that work out of your hands and makes it incredibly easy, all wrapped in a nice graphical user interface. It’s available for Linux, Windows, and macOS. All you need is Kyvos – which is free, but Ko-Fi donations are appreciated – and a copy of either AmigaOS 4.1 Final Edition or MorphOS. Based on a toot by Hyperion, the developers of AmigaOS 4.1, you need the version for the AmigaOne board specifically, which will set you back about €30 for a boxed copy (I’ve asked if there are any download versions for sale as well). A copy of MorphOS costs about €79, and can be bought from inside MorphOS after installation. Note that you can also use MorphOS without a license, but it will slow down its performance after about 30 minutes until you reboot. I’m stoked to try this out, as I’ve been wanting to review both of these operating systems again, since my previous reviews of Amiga OS 4 (from 2009) and MorphOS (also from 2009) are horribly outdated at this point. MorphOS on old Apple PowerPC hardware just doesn’t cut it – believe me, I’ve tried – and AmigaOS 4 hardware is quite expensive and outdated at this point. Until – and let’s face it, if – the Mirari comes out, easy emulation through Qemu might be an option.
Stuck at the bottom of NVIDIA’s announcement of its latest graphics driver update is a section about the company’s plan for Windows 10 support. As we all know, Windows 10 will become end-of-life in October of this year, and like so many others, NVIDIA needs to deal with this. Before we get to Windows 10, though, NVIDIA also reminds users that a few very popular GPU generations will no longer receive driver updates after October of this year. The company notes that GPUs based on the Maxwell, Pascal, and Volta architectures will Game Ready Driver in October 2025, after which they’ll only get quarterly security updates for another three years. These three architectures roughly correspond to the GeForce GTX 7xx, 9xx, and 10xx series and their mobile counterparts, as well as a few other higher-end cards from the same generations. The full list is available to see if your GPU will receive its last driver update in a few months. As for Windows 10 support, the company notes: Also, we’re extending Windows 10 Game Ready Driver support for all GeForce RTX GPUs to October 2026, a year beyond the operating system’s end-of-life, to ensure users continue to receive the latest day-0 optimizations for new games and apps. ↫ Andrew Burnes at nvidia.com Considering half of Windows users are still using Windows 10, this is probably the correct policy by NVIDIA. Ideally this support would last even longer than just that one year, but with a company like NVIDIA you kind of have to take what you can get, because generous they are not.
BlueOS kernel is written in Rust, featuring security, lightweight, and generality. It is compatible with POSIX interfaces and supports Rust’s standard library. ↫ BlueOS kernel GitHub page This is the kernel for the BlueOS operating system, developed by Vivo, a Chinese consumer electronics company. Sadly, all of the websites and documentation for BlueOS are written in Mandarin, making it virtually impossible to really get a grip on what they’re developing, and I certainly don’t trust Google Translate or whatever enough to give me a proper, trustworthy, and accurate translation. I hope the company either hires some translators, or perhaps enthusiasts with the right skillset can provide some more insight over the coming years. It seems similar to Huawei’s HarmonyOS Next, and it’s apparently shipping on one of Vivo’s smartwatches.
Last week-end, I was invited to the UNIX Social Camp in Dijon, France to talk about the reasons I still use OpenBSD these days and why should others do so; or at least, have a look at OpenBSD. ↫ Joel Carnat Here’s my short pitch as to why you should use OpenBSD: it’s the closest you’ll get to a traditional, classic UNIX, while still using a modern and maintained operating system. OpenBSD just makes sense, and every time I run into some issue or I want to know how something in OpenBSD works, the answers always make me go “well that makes sense”. That’s rare in modern computing, and we need to cherish it.
Are you still using LinkedIn, the website where failed tech startup entrepreneurs go to die and “AI” influencers try to sell you on the latest version of the chatbot Florpium like a Utah mom trying to sell leggings that are totally not an MLM? If you are, and the other ten thousand reasons not to use the website incarnation of an ad for a personal injury lawyer along I-11 in Henderson, Nevada, weren’t enough, Microsoft just handed you another one. LinkedIn removed transgender-related protections from its policy on hateful and derogatory content. The platform no longer lists “misgendering or deadnaming of transgender individuals” as examples of prohibited conduct. While “content that attacks, denigrates, intimidates, dehumanizes, incites or threatens hatred, violence, prejudicial or discriminatory action” is still considered hateful, addressing a person by a gender and name they ask not be designated by is not anymore. Similarly, the platform removed “race or gender identity” from its examples of inherent traits for which negative comments are considered harassment. That qualification of harassment is now kept only for behaviour that is actively “disparaging another member’s perceived gender”, not mentioning race or gender identity anymore. ↫ Matti Schneider at the Open Terms Archive Microsoft joined the chorus of pathetic, spineless US tech companies bowing to far-right extremism long ago, and this is just another sign that Microsoft, like so many other US tech companies, is pulling an IBM. They did learn from the best, after all, and it doesn’t surprise me one bit that all of these CEOs click their heels like the good little brownshirts that they are. Anyway, LinkedIn has no value to anyone with even a gram of self-respect, and Microsoft’s other products are such utter trash they basically have to make you upgrade at the barrel of a gun. For those using their products – do you hate yourself that much? You deserve so much more.
Adjusted for the inevitable progress of time, the Common Desktop Environment or CDE is the best desktop environment of all time, and no, I will not be taking question at this time. OpenBSD wasn’t yet graced by CDE’s presence, but this is currently changing as the first commit for porting CDE to OpenBSD has appeared. It’s still rough around the edges and very slightly tested. I wouldn’t use is as a daily driver, it’s old unsecure code but it’s fun if you want to bring back memories. ↫ Antoine at the openbsd-ports mailing list On top of that, this being the initial commit also means there’s probably bugs and other issues lurking in the code, so caution is definitely advised.
Microsoft is finally changing the way Task Manager reports CPU utilisation to make it consistent across the different tabs. So apparently this has been gradually rolling out to the 34 different Windows 11 beta dev preview testing alpha release candidate service pack 4 channels since early this year, but then stopped the roll-out to fix some issues. These issues seem fixed now, as the roll-out restarted this week. It”s an important change that I think y’all will care about. From the original announcement of the change back in February: We are beginning to roll out a change to the way Task Manager calculates CPU utilization for the Processes, Performance, and Users pages. Task Manager will now use the standard metrics to display CPU workload consistently across all pages and aligning with industry standards and third-party tools. For backward compatibility, a new optional column called CPU Utility is available (hidden by default) on the Details tab showing the previous CPU value used on the Processes page. ↫ Amanda Langowski and Brandon LeBlanc at the Windows Blogs Before this change, Task Manager’s Processes tab didn’t take the number of processor cores into account when calculating PCU usage, so you could see a process at 100% CPU usage even if it was only using one core. These new changes standardise CPU usage reporting across all tabs, taking the number of CPU cores into account properly. Rejoice.
RISC-V has been supported in the upstream Linux kernel since 2017. But without a common hardware baseline, ensuring compatibility across builds and distros hasn’t been easy. The ecosystem was in need of a compelling, clearly defined hardware target – something both software and hardware teams could rally around to produce silicon capable of running stable, enterprise-grade software. This target arrived in October 2024 with the ratification of the application-class RVA23 Profile – RISC-V-speak for a baseline configuration, similar to microarchitecture feature levels in x86. The culmination of years of progress, RVA23 brings together the work done to shape the ISA and standardize key extensions such as vector, bit manipulation and hypervisor. ↫ James De Vile at RISC-V International’s blog Such a standard, stable baseline is incredibly welcome, and RISC-V working to have everything part of the upstream Linux kernel is crucial. Having to deal with out-of-tree patches and drivers and specific builds for specific boards is a nightmare – look at Linux on ARM – and hinders adoption of RISC-V.
This release includes some Ext4 performance improvements; XFS support for large atomic writes; support for USB audio offload; support for zero-copy send TCP payloads from DMABUF memory; various futex improvements; initial support for Intel Trusted Domain Extensions; automatic weighted interleaved memory allocation policy; support for sending coredumps over an AF_UNIX socket, and make easier to build your kernel optimized for your local CPU. As always, there are many other features, new drivers, improvements and fixes. ↫ KernelNewbies: Linux 6.16 You’ll get it eventually, usually when the first few point releases iron out any troubling issues.
The European Union is in the process of testing an age-verification application, which people can use to verify their age in a privacy-preserving manner (in theory, of course). There’s countless important discussions to be had about whether or not age verification, privacy-preserving or not, is even something we should want, but that’s a topic for another time and for people smarter than I. For now, several member states are currently testing the application on a voluntary basis, and the application itself is open source, with the code hosted on GitHub. Aside from the obvious concerns about just how private such an application can even be, and concerns about whether or not we should even want something like this, there’s another major problem: the application intends to make use of and require application and device verification by using the proprietary tools for such functionality from Google and Apple, built into Android and iOS, respectively. Listed as future “features”: App and device verification based on Google Play Integrity API and Apple App Attestation ↫ The application’s GitHub page This is a massive problem. For reasons that should be obvious to anyone with at least six functioning neurons, the European Union, as well as countless other countries, are trying to reduce their dependency on US technology companies. As such, it’s indefensible to then require anyone who needs to use age verification in the European Union to use an application that will only work on Google-approved Android devices and even then, only when installed from the Google Play Store, with the only alternative being, of all things, Apple’s iOS. This means that the EU will require anyone who needs age verification to have either a Google or an Apple account, and can only use Google-approved Android or iOS. This application would not work on, say, GrapheneOS or any other non-Google-approved Android ROM – in fact, even if you were to compile the application yourself, you wouldn’t be able to actually use it because it wouldn’t be installed from the Google Play Store. Of course, any mobile operating other than Android or iOS need not apply either. The danger of tying age verification to Google and Apple did not go by unnoticed, and a GitHub issue raised the issue a few weeks ago. I would like to strongly urge to abandon this plan. Requiring a dependency on American tech giants for age verification further deepens the EU’s dependency on America and the USA’s control over the internet. Especially in the current political climate I hope I do not have to explain how undesirable and dangerous that is. ↫ TheLastProject in the GitHub issue The comment thread attached to the issue is long, but during the two weeks since the issue was raised, nobody from the application’s team has answered or even acknowledged people’s concerns, which doesn’t exactly inspire confidence in this being taken seriously. I just hope that with this entire project being in the early testing phases, at least someone manages to realise tying this to Google and Apple is one of the dumbest ideas in a long, long time.
Have a Samsung phone (outside of the United States), and want to unlock the bootloader? Well, soon you won’t be able to do so anymore, as Samsung seems to be removing this option from their phones – including already sold models being upgraded to One UI 8. Bootloader unlocking is a popular way to breathe new life into older devices, by loading unofficial software onto a device, like custom ROMs, gaining root access, custom kernels, etc. This option will be taken away from users with One UI 8. This means not only is the OEM Unlock not visible in Settings anymore, but the bootloader doesn’t even contain any of the code required to unlock itself. This means a workaround to brute force it open is not possible at all, unless Samsung updates the bootloader to add this logic back in. ↫ Josh Skinner at SammyGuru And so, the ongoing process of locking down Android to a point where it becomes nigh-on indistinguishable from iOS’ locked-down, anti-user nature continues unabated. Samsung is the default choice for Android users in a lot of places around the world, and seeing them, too move ever closer to fully locking down their phones is terrible news for consumers. We should be striving for less restrictive computing, not more. Combined with persistent rumours that Google is looking into effectively taking Android closed source, leaving only a stub AOSP behind, the future of Android as an least somewhat “open” platform looks quite grim indeed.
Becoming friendlier to desktop users is one of the goals of the FreeBSD project at the moment, as we recently saw with the new ability to install a full KDE Plasma desktop environment during FreeBSD’s initial installation. This is just one small piece of a larger effort, though, to improve, modernise, and possibly even replace the current FreeBSD installer entirely. As such, Pierre Pronchery, a Security Engineer for the FreeBSD Foundation and member of their team as a Userland Software Developer, published a blog post today with more information around this effort. The article goes into great detail to compare the installation procedures of other operating systems to that of FreeBSD, and the conclusion is that FreeBSD is lagging behind in quite a few areas. Among other shortcomings, the FreeBSD installer has no support for different languages, very little accessibility features, no niceties like progress bars or lists of steps, and most notably, no graphical mode. Some of these are already being addressed. The current FreeBSD installer (a combination of bsddialog, bsdconfig, and bsdinstall) consists of a number of shell scripts with some small C programs here and there, and the downside of this is that this is really only suitable for creating very basic steps and user interfaces. As an example, Pronchery mentions values during network setup, like network mask, DNS server or gateway, can’t be prepopulated with the most likely values, which puts quite a burden on the user. This specific issue is being worked on by one of the original creators of bsddialog, and the solution they settled on is adding Lua scripting, which would give developers an avenue to fix some of these shortcomings. As far as a possible graphical installer goes, Pronchery looked at the various options out there, both from the Linux world and the few graphical installers that exist for a few desktop-oriented FreeBSD distributions, but for a variety of reasons, none of them proved to be particularly suitable for FreeBSD. As such, Pronchery created a quick proof-of-concept for a graphical installer by implementing bsddialog as a GTK+ application which he calls gbsddialog. It’s important to note that this proof-of-concept is not suitable for FreeBSD, as GTK+ is licensed under the LGPL, but it does illustrate that by “simply” reimplenting bsddialog using a graphical toolkit, you can get quite a long way to a usable FreeBSD installer that mimics the traditional installer quite well. The article covers a number of other topics, such as setting up a development environment to make it more straightforward and easier to work on the FreeBSD installer, as well as various steps that need to be taken to improve the accessibility of the installer. It concludes with a mention of the possibility of a complete rewrite of the installer, but such decisions are of course not made by a single person and require a lot more discussion and input. Regardless, the amount of work being done to improve FreeBSD for generic desktop use is exciting, as we need a viable, competitive alternative to that other open source desktop operating system.
This article will explain in details about the fundamental issues that held back accessibility in GNOME Calendar since the very beginning of its existence, the progress we have made with accessibility as well as our thought process in achieving it, and the now and future of accessibility in GNOME Calendar. ↫ Hari “TheEvilSkeleton” Rana You’d think it would be easy to make a “simple” calendar application properly accessible, but boy would you be wrong. In this article, Hari “TheEvilSkeleton” Rana details just how much work had to be done in order to turn GNOME Calendar from entirely inaccessible into an accessible application, and considering the length of the article, you can see it wasn’t a weekend effort. There were apparently two primary reasons why making GNOME Calendar accessible was so hard. First, maximising GNOME Calendar’s performance optimisations had significant negative implications for accessibility, and two, the effectively endless flexibility a calendar needs to offer makes it very difficult to create a usable accessibility tree. Both the events on a calendar as well as the zooming view of a calendar lead to a ton of complexity in creating this tree. GNOME Calendar uses a ton of custom widgets, and these all needed specific, individual solutions to be made accessible. As an example, the article mentions that while it was possible to use the keyboard to create an event, it was not possible to use the keyboard to select created events. Obviously, even this one shortcoming alone effectively makes the entire application inaccessible to anyone relying solely on keyboard navigation. The article goes into great detail how both the above widget and countless other widgets were changed to make them accessible to both the keyboard and screen reader. If you’re working on GTK applications, or even applications using other toolkits, Rana’s article is a great resource to start to understand the complexities and creative thinking needed to implement accessibility in software properly.