Monthly Archive:: January 2021

Ubuntu 21.04 will try to use Wayland by default

Ubuntu is going to be trying to switch over to using Wayland by default for the current Ubuntu 21.04 cycle to allow sufficient time for widespread testing and evaluation ahead of next year’s Ubuntu 22.04 LTS release. Canonical engineer Sebastien Bacher announced today they will be trying again for Ubuntu 21.04 to enable Wayland by default, four years after they originally tried but reverted back to using GNOME on X.Org for Ubuntu 18.04 LTS and since that point. Ubuntu with GNOME Shell on Wayland has been available as a non-default choice but the hope is now in 2021 they are ready to comfortably switch to Wayland. I try to use Wayland wherever possible, since the performance gains and battery life improvements are just too good to ignore. There’s still two major blockers, though – first, NVIDIA support is problematic, at best, so my main computer will remain on X until NVIDIA gets its act together. Second, my desktop environment of choice, Cinnamon, does not support Wayland and has no support coming in the pipeline, which is really disappointing. GNOME can be made usable with extensive use of extensions, and I’m seriously considering switching to it once the NVIDIA situation is sorted. My laptop already runs GNOME for this very reason.

Fast commits for ext4

The Linux 5.10 release included a change that is expected to significantly increase the performance of the ext4 filesystem; it goes by the name “fast commits” and introduces a new, lighter-weight journaling method. Let us look into how the feature works, who can benefit from it, and when its use may be appropriate. Better file system performance is always welcome, especially when it concerns what is probably the most common file system among desktop Linux users.

Windows Package Manager getting an uninstall option very soon

That Windows Package Manager exists at all is a big step forward, but while the service is in preview it is rather limited. At present you can use it to find and install software but removing it has to be done the old fashioned way. And who wants to do that? Finally, though, that is about to change, according to these tweets from Demitrius Nelon, a member of the Windows Package Manager team. Yes, I know it’s a preview and all that, but a package manager that cannot uninstall packages isn’t really a package manager at all, now is it?

What color was “Apple Beige”?

Apple’s second computer — its first to have a case — launched in 1977, and that boxy beige Apple II was soon everywhere: in classrooms, living rooms and offices. At the vanguard of a generation of personal computers to come, it featured a particular and carefully-chosen beige. But what did that look like? Those first machines — the ones that have escaped landfills anyway — have shifted in color over 40 years. The documented public record is sketchy and confused. But I stumbled upon a way to investigate what Apple Beige was like. Fascinating bit of sleuthing, and a fun read to boot. Maybe not the most important aspect of computer history, but every bit of information we can preserve is worth it.

AMD Ryzen 9 5980HS Cezanne review: Ryzen 5000 Mobile tested

For our benchmark suite, almost all of our benchmarks show an uplift for the new Ryzen 5000 Mobile series, some considerably so: our compile benchmark is +12%, Corona rendering is +18%, Dolphin emulation +17%, NAMD +8%, Blender +6%. To our surprise our SPEC2006 1T benchmark is +32%, accelerated considerably by the 16 MB L3 cache, but also because these CPUs also support a higher instantaneous power turbo modes than the previous generation. This enables some competitive performance numbers against Intel’s Tiger Lake platform in single thread focused tests (AMD wins on multithread quite easily). AnandTech with the only deep dive that really matters.

Limine and TomatBoot

As I was browsing back and forth around the website for skiftOS yesterday, I came across two more interesting related projects – two bootloaders with very specific goals. First, Limine: Limine is an advanced x86/x86_64 BIOS Bootloader that supports modern PC features such as Long Mode, 5-level paging, multi-core startup, and more thanks to the stivale and stivale2 boot protocols. Second, since Limine does not support EUFI, they mention TomatBoot, which uses the same boot protocols but in an EUFI environment: TomatBoot is a simple kernel loader for 64bit UEFI based systems. The gold of this bootloader is to serve as an example of how to create UEFI applications, we use the edk2 headers/libraries without the edk2 buildsystem for simplicity.

skiftOS: a hobby operating system

skiftOS is a hobby operating system built for learning and for fun targeting the x86 platform. It features a kernel named hjert, a graphical user interface with a compositing window manager, and familiar UNIX utilities. This looks remarkably advanced for a “hobby operating system”, and can be run in both Qemu and VirtualBox. This one is definitely worth a virtual boot. The code is licensed under the MIT license and available on GitHub.

Remembering Windows 3.1 themes and user empowerment

The rise of OSX (remember, when it came along Apple had a single-digit slice of the computer market) meant that people eventually got used to the idea of a life with no desktop personalization. Nowadays most people don’t even change their wallpapers anymore. In the old days of Windows 3.1, it was common to walk into an office and see each person’s desktop colors, fonts and wallpapers tuned to their personalities, just like their physical desk, with one’s family portrait or plants. It’s a big loss. Android and Linux desktops still offer massive amounts of personalisation options – thank god – but the the other major platforms have all individuality stamped out of them. It’s boring.

Google cuts Chromium off from sync features and Google APIs

Google has announced that it is cutting off access to the Sync and “other Google Exclusive” APIs from all builds except Google Chrome. This will make the Fedora Chromium build significantly less functional (along with every other distro packaged Chromium). It is noteworthy that Google gave the builders of distribution Chromium packages these access rights back in 2013 via API keys, specifically so that we could have open source builds of Chromium with (near) feature parity to Chrome. And now they’re taking it away. The reasoning given for this change? Google does not want users to be able to “access their personal Chrome Sync data (such as bookmarks) … with a non-Google, Chromium-based browser.” They’re not closing a security hole, they’re just requiring that everyone use Chrome. Or to put it bluntly, they do not want you to access their Google API functionality without using proprietary software (Google Chrome). There is no good reason for Google to do this, other than to force people to use Chrome. This is what we in the business call a “dick move”.

Making Win32 APIs more accessible to more languages

Win32 APIs provide powerful functionality that let you get the most out of Windows in your applications. While these APIs are readily accessible to C and C++ developers, other languages like C# and Rust require wrappers or bindings in order to access these APIs. In C#, this is commonly known as platform invoking or P/Invoke. Historically this has required developers to handcraft the wrappers or bindings, which is error prone and doesn’t scale to broad API coverage. In recent years, given the strong demand for calling Win32 APIs from various languages, several community projects have spawned to provide more strongly typed and idiomatic representations of these wrappers and bindings to provide an improved developer experience and spare developers the overhead of creating them themselves. Some notable projects include PInvoke for .NET and winapi-rs for Rust. The main challenge with these projects is they are manually maintained, which makes broad and sustained API coverage difficult and costly, and their work doesn’t really benefit other languages. As owners of the Windows SDK, we wanted to see where we could provide unique value here, take some of the burden off of the community, and make achieving broad and sustainable API coverage across languages a reality. The result of this is our win32metadata project and corresponding Win32 language projections now in preview on GitHub! I’m not a developer, but I think this means that Microsoft is trying to make it easier to tap into the Win32 API with languages other than C and C++. This seems like a smart move considering how popular some of these more modern and/or recent languages have become. It also highlights that despite repeated attempts to kill Win32, Microsoft seems to have accepted that it simply isn’t going anywhere anytime soon.

How we ported Linux to the M1

It also made Apple silicon rather distinct from all other 64-bit ARM hardware in terms of both CPU core and peripherals. Our Corellium virtualization platform has been providing security researchers with unparalleled insight into how operating systems and programs work on Apple ARM processors. But in the process of developing our virtualization system, we also gain knowledge about the hardware we are modeling, and this knowledge can be best refined by testing it against real hardware – which we have only been able to do with the emergence of checkm8, an exploit that let us load programs onto Apple smartphones. This led directly to the Sandcastle project, where we built a kernel port to the A10 processor in early 2020. So when Apple decided to allow installing custom kernels on the Macs with M1 processor, we were very happy to try building another Linux port to further our understanding of the hardware platform. As we were creating a model of the processor for our security research product, we were working on the Linux port in parallel. Excellent work by Corellium, and this materialised a lot faster than I anticipated. This makes M1-equipped Macs potentially more useful than if they could only run macOS, but of course, as with all these closed platforms and Linux support, the devil is in the details – bringing up a Linux kernel is only the first step – a big and crucial one, but only the first.

Porting Firefox to Apple Silicon

The release of Apple Silicon-based Macs at the end of last year generated a flurry of news coverage and some surprises at the machine’s performance. This post details some background information on the experience of porting Firefox to run natively on these CPUs. We’ll start with some background on the Mac transition and give an overview of Firefox internals that needed to know about the new architecture, before moving on to the concept of Universal Binaries. We’ll then explain how DRM/EME works on the new platform, talk about our experience with macOS Big Sur, and discuss various updater problems we had to deal with. We’ll conclude with the release and an overview of various other improvements that are in the pipeline. These kinds of articles are very valuable, since Apple isn’t always forthcoming with documentation of specifications, and the new M1-based Macs are no exception. Big, massive projects like Firefox sharing their experiences can be quite useful to other developers.

A visit from the Zune squad

It was weird to own a Zune in 2005. It is even weirder to own a Zune in 2021 — let alone 16 of them. And yet, 27-year-old Conner Woods proudly shows off his lineup on a kitchen table. They come in all different colors, shapes, and sizes, and each can be identified by that telltale black plastic D-pad just below the screen. He owns the entire scope of the brief Zune lineup — from the svelte Zune 4 to the chunky Zune HD — and among the microscopic community of people who still adore Microsoft’s much-derided MP3 player, no collection of dead tech could possibly be more enviable. But today, almost a decade after Microsoft terminated the brand, there is a small bastion of diehards who are still loving and listening to their Zunes. If you talk to them, they’ll tell you that these MP3 players are the best pieces of hardware to ever run a Windows operating system. Preserving the Zune legacy has just become another part of the hobby. I’ve never once seen a Zune in real life.

Apple knew a supplier was using child labor but took 3 years to fully cut ties

Apple is back under the spotlight over labor conditions in its supply chain following an explosive report from The Information on Thursday that revealed new details about the company’s reluctance to cut ties with suppliers who violate its ethics policies. According to the report, Apple learned in 2013 that Suyin Electronics, a China-based company that (at the time) made parts for its MacBooks, was employing underage workers, and despite telling Suyin to address the issue or risk losing business, Apple discovered additional workers as young as 14 years old during an audit just three months later. But rather than immediately cutting ties with Suyin for violating its supply chain ethics policies — which prohibit child labor and which Apple claims are the “highest standards” — Apple continued to rely on the company for more than three years, according to The Information. Any company – and their executives – knowingly and willingly using child labour, slave labour, or forced labour anywhere in the world should be tried as if they are committing these heinous acts in their home countries. The body of evidence that Apple is fully aware of its extensive use of child labour and forced labour in e.g. China’s Uighur concentration camps is extensive, and the fact Tim Cook can get away with this without ever having to face the consequences is disgusting. Tim Cook’s fellow Americans get life sentences for less. Of course, Apple is far from the only company guilty of this – just look at Nestle or Nike, for instance – but being the largest company in the world with the biggest, most arrogant mouth about how “ethical” they are should be the first to end up in court.

FreeBSD quarterly status report for Q4 2020

This quarter had quite a lot of work done, including but certainly not limited to, in areas relating to everything from multiple architectures such as x86, aarch64, riscv, and ppc64 for both base and ports, over kernel changes such as vectored aio, routing lookups and multipathing, an alternative random(4) implementation, zstd integration for kernel dumps, log compression, zfs and preparations for pkg(8), along with wifi changes, changes to the toolchain like the new elfctl utility, and all the way to big changes like the git migration and moving the documentation from DocBook to Hugo/AsciiDoctor, as well as many other things too numerous to mention in an introduction. The best way to keep up with FreeBSD development from an outsider’s perspective. FreeBSD is on my radar for the UltraSPARC server-as-a-workstation project – a reader has donated a SunFire V245 that’s currently in shipping to me – so I’m trying to be a bit more in tune than I usually am with the world of FreeBSD.

Exploring swap on FreeBSD

On modern Unix-like systems such as FreeBSD, “swapping” refers to the activity of paging out the contents of memory to a disk and then paging it back in on demand. The page-out activity occurs in response to a lack of free memory in the system: the kernel tries to identify pages of memory that probably will not be accessed in the near future, and copies their contents to a disk for safekeeping until they are needed again. When an application attempts to access memory that has been swapped out, it blocks while the kernel fetches that saved memory from the swap disk, and then resumes execution as if nothing had happened. In 2021, cheap SSDs have become commonplace and have performance characteristics much better suited to swapping, so it seems worthwhile to revisit how swapping works in FreeBSD, and try to provide some insight into frequently raised issues. Some light reading for the weekend.

Genode’s roadmap for 2021

Herein, we lay out our plans for evolving Genode. Progress in addition to this planning will very much depend on the degree of community support the project will receive. The Challenges page collects some of our ideas to advance Genode in various further directions. The road map is not fixed. If there is commercial interest of pushing the Genode technology to a certain direction, we are willing to revisit our plans. This is a very detailed roadmap, but as clearly mentioned in the opening paragraphs, this is not set in stone, and things may change. Most of the planned focus seems to be on vastly improving support for ARM, for instance by working on bringing Genode to the PinePhone. They also want to streamline and improve the process for porting Linux device drivers to Genode, which should help in increasing hardware support.

WhatsApp delays privacy changes following backlash

The WhatsApp messaging service announced on Friday that it would delay changes to new business features after people around the world criticized the new policy. The Facebook-owned company said it is “going to do a lot more to clear up misinformation around how privacy and security works on WhatsApp.” Privacy rights activists heavily criticized the WhatsApp changes, saying it was the latest step showing Facebook’s poor handling of user data. The real issue was a far larger than expected exodus of users to services like Signal and Telegram. I doubt Facebook will actually make any meaningful changes – instead, we’ll see a different tone or wording.

Windows 10X is now Microsoft’s true answer to Chrome OS

After years of waiting, it looks like Microsoft now has a true answer to Chrome OS. A new and near-final version of Windows 10X has leaked, and it offers a first look at the changes Microsoft has made to the upcoming operating system to get it ready for laptops. Windows 10X first started off life as a variant of Windows 10 designed for dual-screen devices. It was supposed to launch alongside Microsoft’s Surface Neo, a tablet-like device with two separate nine-inch displays that fold out to a full 13-inch workspace. Microsoft revealed last year that Windows 10X is now being reworked for “single-screen” devices like laptops, and Surface Neo has been delayed. While the company has spent years differentiating Windows 10X for foldable and dual-screen hardware, it now looks and feels more like Chrome OS than ever before. This is literally Chrome OS. It looks, feels, and tastes like Chrome OS – and of course, that’s the point. It also points to what we can expect from regular Windows over the coming years.

A week with Plan 9

I spent the first week of 2021 learning an OS called Plan 9 from Bell Labs. This is a fringe operating system, long abandoned by its original authors. It’s also responsible for a great deal of inspiration elsewhere. If you’ve used the Go language, /proc, UTF-8 or Docker, you’ve used Plan 9-designed features. This issue dives into operating system internals and some moderately hard computer science topics. Sounds like an excellent article for us!