<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>thesola.io blog - os dev</title><link href="https://blog.thesola.io/" rel="alternate"/><link href="https://blog.thesola.io/feeds/os-dev.atom.xml" rel="self"/><id>https://blog.thesola.io/</id><updated>2021-09-03T00:00:00+02:00</updated><entry><title>The Year of the Linux Desktop won't happen, and that's fine</title><link href="https://blog.thesola.io/2021/0003_Linux-desktop" rel="alternate"/><published>2021-09-03T00:00:00+02:00</published><updated>2021-09-03T00:00:00+02:00</updated><author><name>Karim Vergnes</name></author><id>tag:blog.thesola.io,2021-09-03:/2021/0003_Linux-desktop</id><summary type="html">&lt;p&gt;Linux, and the community of hackers and users that formed around it, make for a formidable operating system product, both for software development and everyday use. Clearly it is superior, so &lt;em&gt;where are all the apps?&lt;/em&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Linux, and the community of hackers and users that formed around it, make for a formidable operating system product, both for software development and everyday use. Clearly it is superior, so &lt;em&gt;where are all the apps?&lt;/em&gt;&lt;/p&gt;
&lt;!--more--&gt;

&lt;p&gt;&lt;img alt="A laptop with Ubuntu" src="/images/0003-ubuntu-laptop.jpg"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It's a conspiracy from Microsoft!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That's an interesting point, because it used to be &lt;a href="https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish"&gt;very much true&lt;/a&gt;, so it isn't unreasonable to be wary of Microsoft today. However, times have changed, and they stopped fighting their pointless war. After all, Windows is probably not even profitable to them anymore.&lt;/p&gt;
&lt;p&gt;But that is besides the point. Linux has indeed essentially &lt;em&gt;dominated&lt;/em&gt; most devices with a CPU and memory, so why aren't we seeing it on desktops?&lt;/p&gt;
&lt;h2&gt;A ship with no captain&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;But Android is the dominant mobile OS! The desktop is dying anyway.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ah, the Canonical argument, I see.&lt;/p&gt;
&lt;p&gt;You may not have noticed, but there was a change of tone in Ubuntu development and marketing. This is important, because Ubuntu still represents the definition of the typical Linux desktop.&lt;/p&gt;
&lt;p&gt;Back in the good old days of 2011, Canonical's first objective was Ubuntu on personal desktop computers. Whichever way you looked at it, GNOME was not exactly pretty, and KDE was still knee-deep in Qt licensing issues. Thus, they decided to start development on the Unity desktop, which would become the trendsetter for various features we've come to expect on modern Linux. That, and Unity would eventually also drive the Ubuntu Touch project.&lt;/p&gt;
&lt;p&gt;Fast-forward to 2016, and Canonical has given up development on Mir and Unity 8, both due to frictions with the broader Linux community, and the failure and abandonment of Ubuntu Touch. Around the same time, Windows Subsystem for Linux came out, and the first distribution available at launch was &lt;em&gt;none other than Ubuntu.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Ubuntu Desktop effort, which used to be front-and-center on Ubuntu's website, is no longer mentioned. They now focus on WSL, and the Internet of Things. And I believe that this left a void in the Linux desktop community. Because no matter how flawed it was, Ubuntu had the brand power. Ubuntu was the flagship, the one solution that we could point to as the definitive "Linux desktop". &lt;em&gt;Now, it has all but fizzled out.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;A labyrinth with no way out&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;But Fedora/Zorin/elementary/&lt;em&gt;(insert distro here)&lt;/em&gt; will be the new standard! Why aren't people adopting those?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are an uncountable number of Linux distributions, which aren't completely compatible with each other, and whose software offering isn't necessarily consistent. For a long time, and especially these days, we have been experiencing &lt;em&gt;fragmentation&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;With an open-source project, when something isn't quite right, you will usually be tempted to &lt;em&gt;fork it&lt;/em&gt;. This is a great freedom to have, but now there are two, hardly distinguishable projects. It's only natural that, when given the option, &lt;a href="https://xkcd.com/927"&gt;everyone wants to "do it right"&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A Linux distribution, at heart, is a set of software packages that are built and distributed together with intent to provide a ready-to-use version of Linux. The prime philosophy of GNU, Linux, and pretty much all other constituent projects, is that &lt;em&gt;only source code is officially distributed.&lt;/em&gt; Software is shipped with a set of compile-time flags, so that the user can configure it just right for their system.&lt;/p&gt;
&lt;p&gt;A distribution's job is to pick out the best compile-time flags for their projects, build them on the same shared libraries, and regularly keep them up to date. This not only means that &lt;em&gt;some distributions may be lagging behind on updates&lt;/em&gt;, but also and more importantly, that &lt;em&gt;important configuration options differ and are obscured&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;Both of these issues make software support a lot harder for any developer, because suddenly there isn't one, but several different versions and flavors of your software floating around at one time. &lt;em&gt;And whether or not your software makes it to a distribution depends on the distributor, so god forbid you keep your code proprietary.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Let's not get into details on how there are &lt;em&gt;multiple ways to do basic things&lt;/em&gt; on Linux. As you can see, there is a certain philosophy, and it is incompatible with software distribution at scale. &lt;em&gt;You can't just roll out infinite package maintainers.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;A product with no market plan&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;But Flatpak and AppImage are solving those issues, right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That's if the community even wants to accept those (they don't). Also, &lt;a href="/2021/0001_Inert-installs"&gt;AppImages are a very bad idea&lt;/a&gt;, but whatever.&lt;/p&gt;
&lt;p&gt;There is one other &lt;a href="https://youtu.be/BEcoJYMB_SA"&gt;thing&lt;/a&gt; that Ubuntu had, and I cannot seem to find in other Linux distributions. A sense of &lt;em&gt;identity&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The people who decide on where the Linux desktop is headed, don't seem to agree on a single identity. Some even &lt;a href="https://stopthemingmy.app"&gt;want none at all&lt;/a&gt;. Sure, a bland and neutral appearance might help users customize it... but most user themes usually revolve around Windows and macOS look-alike anyway...&lt;/p&gt;
&lt;p&gt;The Linux desktop wants to be the &lt;em&gt;jack of all trades&lt;/em&gt;, but ends up being &lt;em&gt;master of none&lt;/em&gt;. It doesn't have a &lt;strong&gt;definitive, be-all end-all appeal&lt;/strong&gt;, and it's hard to sell users on something if we can't even show them what it's supposed to "look like".&lt;/p&gt;
&lt;p&gt;I know it may seem superficial, but looking at Windows starting with XP, or Mac OS X, they have a strong identity. Fedora is just default GNOME, elementary is just a macOS wannabee, and Zorin's main sales pitch is literally &lt;em&gt;its ability to look and feel like competitors&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;And yet, it lives on&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;So all hope is lost? I thought you said it was "fine"?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We don't have a legendary startup tune. We don't have a distinct desktop experience. That's because we want the user to design their own.&lt;/p&gt;
&lt;p&gt;We don't have a single packaging format. Our shared libraries are a mess. That's because package maintainers are &lt;a href="/2021/0002_Audacity"&gt;protecting us&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We don't have a company fully devoted to the Linux desktop since Canonical. That's because profit would prevent us from making it the best it could be.&lt;/p&gt;
&lt;p&gt;Linux has shown that people can come together to do great things, with no compensation. Before we even begin to think about sharing the Linux desktop, we need to answer one crucial question: &lt;em&gt;&lt;strong&gt;What even is the Linux desktop?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Never give up, guys.&lt;/em&gt;&lt;/p&gt;</content><category term="os dev"/><category term="our relationship to code"/></entry><entry><title>How much power do companies have over open source?</title><link href="https://blog.thesola.io/2021/0002_Audacity" rel="alternate"/><published>2021-07-06T00:00:00+02:00</published><updated>2021-07-06T00:00:00+02:00</updated><author><name>Karim Vergnes</name></author><id>tag:blog.thesola.io,2021-07-06:/2021/0002_Audacity</id><summary type="html">&lt;p&gt;The MUSE group wrote a telemetry &lt;em&gt;proposal&lt;/em&gt; as a pull request, and it backfired. Linux users are usually safe from telemetry thanks to distro maintainers, so why are people still mad? And what does that say about the way software is distributed as a whole?&lt;/p&gt;</summary><content type="html">&lt;p&gt;The MUSE group wrote a telemetry &lt;em&gt;proposal&lt;/em&gt; as a pull request, and it backfired. Linux users are usually safe from telemetry thanks to distro maintainers, so why are people still mad? And what does that say about the way software is distributed as a whole?&lt;/p&gt;
&lt;!--more--&gt;

&lt;p&gt;&lt;img alt="The Audacity logo" src="/images/0002-audacity.png"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;People were angry because MUSE wanted to introduce telemetry, it's as simple as that!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Is it though?&lt;/p&gt;
&lt;p&gt;First things first, I would like to make it clear that &lt;em&gt;I &lt;strong&gt;do not condone&lt;/strong&gt; the actions of MUSE group in any way.&lt;/em&gt; All I want here is to use that situation as a case study.&lt;/p&gt;
&lt;p&gt;I will be referring to &lt;a href="https://github.com/audacity/audacity/discussions/889"&gt;Tantacrul's response to the telemetry proposal&lt;/a&gt;, as well as &lt;a href="https://github.com/audacity/audacity/discussions/1225"&gt;the MUSE group's response to the privacy policy changes&lt;/a&gt;. I recommend that you give them a read first.&lt;/p&gt;
&lt;h2&gt;1. The telemetry proposal&lt;/h2&gt;
&lt;p&gt;Here's a quick run-down of what I understood from the discussion around &lt;a href="https://github.com/audacity/audacity/pull/835"&gt;the telemetry PR of May 4th&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A MUSE developer submitted the pull request, containing working telemetry code intended for Audacity, to the Audacity repository.&lt;/li&gt;
&lt;li&gt;The community found out about the pull request, which promptly caused a backlash.&lt;/li&gt;
&lt;li&gt;The most obvious change to Audacity's governance to people was the involvment of &lt;a href="https://youtube.com/user/martinthekearykid"&gt;Tantacrul&lt;/a&gt;, so the community lashed out to him.&lt;/li&gt;
&lt;li&gt;Tantacrul explained, in an official response on behalf of MUSE, that the intent was for the PR to serve as a &lt;em&gt;proposal&lt;/em&gt; to the community.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now that I wrote these words out, two possible lines of thought come to mind:&lt;/p&gt;
&lt;h3&gt;A: MUSE had intended for people to find out about the PR through their official forum post, as they did with MuseScore.&lt;/h3&gt;
&lt;p&gt;Maybe. Or at least, that's what they officially said. I guess pull requests aren't a very subtle way of expression, but given that their alternative would have been to &lt;em&gt;work on a private fork then come out of the blue with an instantly implemented telemetry PR&lt;/em&gt;, I'd say it still was for the better.&lt;/p&gt;
&lt;p&gt;Of course, the community wishes that they talked about the idea &lt;em&gt;before&lt;/em&gt; starting work on it, but on the other hand, they may have thought that simply asking &lt;em&gt;"Hey, mind if we add telemetry?"&lt;/em&gt; would have caused most people to refuse anyway, and that an implementation would have been more clear.&lt;/p&gt;
&lt;h3&gt;B: MUSE had intended to implement telemetry as fast as possible. The PR was too complete to just be a proposal.&lt;/h3&gt;
&lt;p&gt;Except, something just &lt;em&gt;doesn't fit&lt;/em&gt;. In fact, looking at the commit dates, the whole &lt;em&gt;"work on a private fork then come out of the blue with an instantly implemented telemetry PR"&lt;/em&gt; is &lt;em&gt;precisely what they did&lt;/em&gt;. And of course, the community lashed out on them. As far as was disclosed, there was seemingly no reason to release their work ahead of the forum post they had intended to make, unless they wanted to merge the changes as fast as possible.&lt;/p&gt;
&lt;p&gt;The truth is probably somewhere in between, but comparatively speaking, the public reaction was a lot more tame than for &lt;em&gt;what happened next&lt;/em&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. The privacy policy update&lt;/h2&gt;
&lt;p&gt;A privacy policy is a legally binding document which an app developer uses to clarify what personal data their application is able to obtain from its users.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Just yesterday (at the time of writing)&lt;/em&gt;, MUSE made a public revision to Audacity's privacy policy, allowing them to collect data such as your IP address and error reports... and data intended for &lt;em&gt;law enforcement&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;When you think about it, Audacity is not like iOS, in that it does not explicitly encrypt or otherwise prevent external use of user data, so law enforcement data should not be in the scope of Audacity's privacy policy. That's what really worried users, so they did what they judged appropriate: &lt;em&gt;&lt;strong&gt;they forked the project&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Again, MUSE reminded people that the new data collection code can be disabled through a &lt;strong&gt;compile-time option&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Compile-time options are expected to be manipulated by users, but come with the implied requirement that said user should be sufficiently proficient in computing to know how to compile their own programs in the first place. As such, it is fair to say that, regardless of intent, these options will impact the uninformed and damage the image of an app as a unified product whose behavior is identical everywhere.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Moral of the story&lt;/h2&gt;
&lt;p&gt;It is much too early for me to give a definitive opinion on the situation, but as a community, we should consider our choices in software distribution, and how they can affect our users in the long run.&lt;/p&gt;
&lt;p&gt;Just like with &lt;a href="/2021/0001_inert-installs/"&gt;installers&lt;/a&gt;, the ability to customize and control the build process is an important part of a sane relationship with software. When the defaults are changed, it's as if the very philosophy of the app is being taken away from the community, who then feel powerless. Such is the irony of modern open-source.&lt;/p&gt;
&lt;p&gt;And to MUSE: Not every user of Audacity is a developer, and we are acutely aware of that, which explains the community's overprotective stance. &lt;em&gt;Code is law&lt;/em&gt;, and proposals should first be formulated in words, before being written down to code.&lt;/p&gt;</content><category term="os dev"/><category term="rant"/><category term="privacy"/><category term="our relationship to code"/></entry><entry><title>Installers are evil and here's why</title><link href="https://blog.thesola.io/2021/0001_Inert-installs" rel="alternate"/><published>2021-04-25T00:00:00+02:00</published><updated>2021-04-25T00:00:00+02:00</updated><author><name>Karim Vergnes</name></author><id>tag:blog.thesola.io,2021-04-25:/2021/0001_Inert-installs</id><summary type="html">&lt;p&gt;There's one aspect that's always really annoyed me about Windows. Except this time, all major operating systems can be affected. &lt;em&gt;Installers&lt;/em&gt; are one of the biggest cryptographic and social engineering security holes out there...&lt;/p&gt;</summary><content type="html">&lt;p&gt;There's one aspect that's always really annoyed me about Windows. Except this time, all major operating systems can be affected. &lt;em&gt;Installers&lt;/em&gt; are one of the biggest cryptographic and social engineering security holes out there...&lt;/p&gt;
&lt;!--more--&gt;

&lt;p&gt;&lt;img alt="A typical installer wizard on Windows" src="/images/0001-wizard.png"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Okay, now what?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you already saw my comments over on reddit and stuff, you may have figured out that I'm a proud Arch Linux User™ btw &lt;em&gt;(there, I said it)&lt;/em&gt;, with a little twist.&lt;/p&gt;
&lt;p&gt;My particular install calls itself "Arch Linux Atomic", and for good reason. Taking inspiration from the likes of Fedora Silverblue, I am trying to build an Arch system where most system directories (namely &lt;code&gt;/usr&lt;/code&gt; and &lt;code&gt;/etc&lt;/code&gt;) remain &lt;em&gt;read-only&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wouldn't that be a hassle? Doesn't it break &lt;code&gt;pacman&lt;/code&gt;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There's the thing. To me, Arch Atomic is a little experiment on trying to distinguish user-installed programs from the &lt;em&gt;system state&lt;/em&gt;. The logic is that as long as the system state works, nothing can possibly break from user-side tinkering, and ideally the user won't feel handcuffed by their OS.&lt;/p&gt;
&lt;p&gt;The key to achieving this is to have the system precisely control the way software is installed. To pretty much no one's surprise, that means that I try to rely as much as possible on &lt;em&gt;package managers&lt;/em&gt;. Because I can tell the package manager how to install things on my particular system, and retain compatibility with official Arch Linux repos.&lt;/p&gt;
&lt;h2&gt;Signing is cool&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Let me guess, you're hating on &lt;em&gt;installers&lt;/em&gt; because you prefer &lt;em&gt;package managers&lt;/em&gt;? I knew it, you're a Linux shill!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Woah, hold that thought. There's one other thing that's really nice about package managers, and that pretty much no one cares about except when it breaks. That neat little thing is &lt;em&gt;cryptographic signing&lt;/em&gt;. The ability to ensure, within reasonable doubt, that the random program you're downloading is in fact &lt;em&gt;trustworthy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As they say, &lt;em&gt;"prevention is better than cure"&lt;/em&gt;. When a package manager sees a signing discrepancy, it outright &lt;strong&gt;blocks&lt;/strong&gt; you from installing the program. That's the best kind of safety feature -- it gets out of the way and is simple to understand, yet very hard to break without direct machine access &lt;em&gt;(but that's another problem entirely)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Programs downloaded from a random place can only be trusted if the entire operating system implements that signing feature. For example, macOS does, and &lt;em&gt;obviously&lt;/em&gt; are &lt;a href="https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution"&gt;milking developers for it&lt;/a&gt;.&lt;br&gt;
Still, it works.&lt;/p&gt;
&lt;p&gt;Windows &lt;em&gt;kinda&lt;/em&gt; does too, but only when UAC is involved, and it's &lt;a href="https://security.stackexchange.com/questions/202409/what-is-the-benefit-of-signing-an-executable-that-is-not-a-driver-on-windows/202412"&gt;not remotely enforceable&lt;/a&gt;, and if you think &lt;em&gt;end users&lt;/em&gt; are going to tell the difference between a yellow and red UAC box, you're delusional.&lt;/p&gt;
&lt;h2&gt;Don't trust strangers&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Yeah, but as you said, macOS &lt;em&gt;installers&lt;/em&gt; are signed, so we're all good, right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=c13g1L8ycIk"&gt;Not right&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Say a malicious third-party &lt;em&gt;somehow&lt;/em&gt; got through the signing and authoring process. Let's review what they can, and cannot do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Installer&lt;/strong&gt;: An installer (especially the system-wide kind) is like a black box. It does some voodoo with elevated access, on the basis that you &lt;em&gt;trust&lt;/em&gt; it to install a program. &lt;strong&gt;It can choose not to and there's nothing you can do about it.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Package manager&lt;/strong&gt;: Package management is simple. Read through some info, move files to where they should be, update software index, done. We know what's going on, and at no point is the program needlessly elevated. Or run, for that matter. &lt;strong&gt;Package managers treat applications as inert data, meaning they cannot take advantage of elevated privileges.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The real strength of a package manager is that it makes privilege escalation requests &lt;em&gt;unusual&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;On Windows, for example, everything shows a boring, identical UAC dialog box. Annoying, get out of the way, done. Now your system's broken.&lt;/p&gt;
&lt;p&gt;On macOS, the permission dialog is not only more unusual, it's also more &lt;em&gt;detailed&lt;/em&gt;. It's worth taking a good look at, because you don't see it everyday, and instead of abstract concepts like &lt;em&gt;administrator access&lt;/em&gt;, it gives you a down-to-earth explanation of what the app is asking for.&lt;/p&gt;
&lt;p&gt;On the usual Linux system, there's &lt;code&gt;root&lt;/code&gt; and there's plebs. No in-between. Virtually no app will ask you for root access, save from the package manager and the occasional system utility. That makes it look like a &lt;em&gt;dangerous red button&lt;/em&gt;, rather than a boring formality. When you see &lt;code&gt;sudo&lt;/code&gt;, &lt;strong&gt;you think twice&lt;/strong&gt; &lt;em&gt;(hopefully)&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;TLDR&lt;/h2&gt;
&lt;p&gt;An &lt;strong&gt;installer&lt;/strong&gt; is a random program that runs as Administrator and you &lt;em&gt;trust&lt;/em&gt; will install something. Nothing is enforcing it to follow conventions (leading to bit rot) or do what it says at all (leading to viruses).&lt;/p&gt;
&lt;p&gt;You &lt;em&gt;could&lt;/em&gt; enforce signing. Signing in a curated app store is kind of a &lt;em&gt;given&lt;/em&gt;. Signing on every single program on the system is frowned upon at best.&lt;/p&gt;
&lt;p&gt;Your best weapon is to educate users. Eliminating installers removes a reason to accept administrator access prompts, making users more thoughtful about it.&lt;/p&gt;</content><category term="os dev"/><category term="installers"/><category term="signing"/><category term="rant"/></entry></feed>