Language Selection

English French German Italian Portuguese Spanish

February 2020

Games: AI War 2, Soul Saga, Core Decay, Linux Game Publishing and Godot

Filed under
  • AI War 2 gains a massive feature expansion with The Spire Rises

    War, war never changes. Except when it's against a super smart AI that has you completely outgunned, and things just got a lot more interesting with AI War 2: The Spire Rises.

    Arcen Games released their massive grand-scale strategy game AI War 2 in October last year and it was a lot of fun. Since then, they've continued improving the base game with constant updates. It has a Very Positive user rating on Steam and it's well deserved.

  • A Linux version of the RPG 'Soul Saga' is currently in progress as it enters Early Access

    After a successful crowdfunding campaign way back in 2013, the RPG from developer Disastercake 'Soul Saga' just recently entered Early Access.


    Not seen or heard of it before? You will be forgiven considering the campaign was a number of years ago. The developer says it's a "uniquely challenging RPG with airship exploration, guild management, free-roaming exploration, and a world that is literally destroyed as time goes on!" and you can see the brand new Early Access trailer below:

  • Get ready for more retro FPS goodness as 'Core Decay' is coming to Linux

    The first-person shooter genre is alive and well, especially for retro inspired titles and we have another on the way that looks quite awesome with Core Decay.

    In Core Decay you will explore derelict facilities, uncover a vast conspiracy, install cybernetic upgrades as you gain levels, and find a wealth of unique weapons and powerups in an old-school shooter inspired by the classics of the late 90s. Use an arsenal of 8 unique, upgradeable weapons as you battle both security robotics and the remnants of experiments gone horribly wrong.

  • Linux Game Publishing Brought Back Online For Archival Purposes

    In 2020 we certainly didn't expect the Linux Gaming Publishing website to appear back online, years after their single server failed and ultimately faded away as one of the promising Linux game porters built up following the collapse of Loki Software.


    Expecting a Vulkan progress report? Not this month! As Godot 3.2 was released by the end of January, February was purely dedicated to do large core refactoring in preparation for Godot 4.0. This is required to unblock other contributors and their areas.


    Godot offered PoolArray as a type of variable, which was useful for storing large arrays in a compact way. They were designed for 32 bits CPUs with small address space, to allow packing memory and avoiding memory fragmentation.

    Given pretty much all mainstream platforms are now 64 bits, this optimization is no longer required (64 bits operating systems have efficient memory allocation for large objects, putting them on opposite ends of the address space, which reduces memory fragmentation to the point of making it not a problem).

    Having tightly packed arrays available to the user still makes sense, because regular script array ([]) elements are 24 bytes (containing a Variant). Having packed versions (including bytes) is desired, so they are renamed to "PackedArrays".

    This change also improves performance in all operations related to large memory allocations, as locking/unlocking is no longer required. As a side effect, put_pixel/get_pixel in images no longer requires locking either.

  • Godot Game Engine Working Towards Native Wayland Support, EGL

    On top of all the Godot happenings for its Vulkan rendering support, the code-base for Godot 4.0 is also being cleaned up and among the other improvements being worked on are Wayland and EGL support.

    Godot lead developer Juan Linietsky provided a first update on the state of Godot's code refactoring. Besides a lot of low-level code improvements, looking ahead to March is working on an implementation for Wayland and Linux+EGL support. That EGL support in turn will also benefit Raspberry Pi handling as one of the big benefactors.

Porting to Qt 5.14 on Android

Filed under

During the last weeks we have been trying to migrate KDE’s Android applications to Qt 5.14. For a minor version Qt 5.14 comes with a surprising amount of rather invasive changes that require quite a few adjustments in our build infrastructure, frameworks and applications. Here’s the current state of the migration, hopefully providing some hints for others facing the same problem.

Eskil and Bogdan have described what changed in Qt 5.14 already, and why. Working towards supporting multi-arch AAB packages and improving startup performance and resource consumption certainly makes sense.

However, this is unfortunately sorely lacking more information on how to adapt applications to those changes. Given the invasiveness, I’d expect that hardly anything beyond a simple QMake based app will be able to upgrade without some porting work. Some of Qt’s own modules being broken in Qt 5.14.0 hints at this as well.

Read more

Graphics: SHAREDed, X.Org/, LLVMpipe/Mesa

Filed under
  • SHADERed 1.3 Released For This HLSL/GLSL Shader Editor - Adds Shader Debugger

    SHAREDed is an open-source, cross-platform solution for creating and testing HLSL and GLSL shaders. This "shader IDE" is out this week with SHADERed 1.3 that presents new capabilities.

    SHADERed 1.3 introduces shader debugging capabilities, a plug-in API, support for multi-sample anti-aliasing (MSAA), support for the #include keyword within shaders, and a wide variety of UI/UX improvements along with different fixes.

  • X.Org/ Is Looking For Sponsors Or May Have To Cut Continuous Integration Hosting

    The cost of cloud hosting -- or in particular hosting their own GitLab instance and running continuous integration (CI) support for projects -- is putting financial strain on the X.Org Foundation.

    The X.Org Foundation estimates their annual hosting expenses this year to top out at 75k USD and at 90k USD for 2021. The hosting is done within the Google Cloud. This cost doesn't include that of any continuous integration runners but just the expenditures from storing and serving build artifacts and images from the cloud to external runners.

  • LLVMpipe Tessellation Shader Support Is Now Working - Runs Unigine Heaven

    The LLVMpipe CPU-based software rasterizer OpenGL driver within Mesa's Gallium3D now has working tessellation shader support (ARB_tessellation_shader) and can even run Unigine Heaven demo properly, just don't expect good performance.

Programming Leftovers

Filed under
  • Semantic versioning and containers

    How does that translates to containers?

    Imagine the following scenario: a developer deploys a containerized application that requires a Redi database. The developer deploys the latest version of the redis container (eg: redis:4.0.5), ensures his application works fine and then moves to do other things.

    After some weeks a security issue/bug is found inside of Redis and a new patched release takes place. Suddenly the deployed container is outdated. How can the developer be aware a new v4 release of Redis is available? Wouldn’t be even better to have some automated tool taking care of this upgrade?

    After some more weeks a new minor release of Redis is released (eg: 4.1.0). Is it safe to automatically update to a new minor release of Redis, is the developer application going to work as expected?

    Some container images have special tags like v4 or v4.1 and the developer could just leverage them to kinda pinpoint the redis container to a more delimited set of versions. However using these tags reduces reproducibility and debuggability.

  • Keeping your fast code fast

    One of the projects I completed before the end of the cycle is a memory allocation tracker for Sysprof. It’s basically a modern port of the Memprof code from 20 years ago, but tied into Sysprof and using fancier techniques to move data quickly between processes. It uses an LD_PRELOAD to override many of the weak memory symbols in glibc such as malloc() and free(). When those functions are reached, a stack trace is captured directly into a mmap()‘d ring buffer shared by Sysprof. We create a new one of these per-thread so that no locking is necessary between threads. Sysprof will mux all the data together for us.

    Below is a quick example running gtk4-widget-factory. We show similar callgraphs as we do when doing CPU profiling, but ordered by the amount of memory allocated. This simple tool and less than 20 minutes of effort found many allocations we could completely avoid across both GTK and Clutter.

  • Convert Float to Time in JavaScript (Hours and Minutes)

    How to Convert a given float number to hours and minutes. What is the JavaScript function we should use to convert float to time in JavaScript? Here, we share the easiest solution to convert a given number to time (hours and minutes).
    In this tutorial, you will see how to convert float numbers to time (hours and minutes) in JavaScript. There are a number of ways to convert float to time. However, we use the Math.floor() and Math.round() function from the Javascript Math object.

  • Perl Weekly Challenge: Smallest Multiple and LRU Cache
  • Weekly Python StackOverflow Report: (ccxvii) stackoverflow python report
  • Double-checked locking with Django ORM

    This post is about how we can implement this pattern in Django, using the ORM and database level locking features. The pattern applies if you are not using Django, or indeed any ORM, but I have only checked it for Django, and in fact only really verified it works as expected using PostgreSQL.

  • Implicit multiplication in Python - part 1

    What if we could do something half-way between what Python currently allow and what mathematicians would write by transforming something that is currently a SyntaxError into valid Python code?

  • Zope May Sprint

    Earl Zope has settled down for a good while in Python 3 wonderland. He made friends with the inhabitants and other immigrants. He enjoys his new live.

    The sunset of his original homelands took place as predicted by the beginning of January 2020. As Earl Zope was well prepared this was no longer a frightening date for him.

    But even living in Python 3 wonderland is not only joy and relaxing. The Python 3 wonderland changes in a more rapid speed than the Python 2 land ever had before: Each year a new policy has to be fulfilled (aka new Python version release). Additionally it is time to drop the last connections to the old Python 2 land to ease the transformation in Python 3 wonderland to make developers and consumers happy.

Hardware With GNU/Linux: Debian on Walmart Motile M142, $199 Pinebook Pro ARM Laptop, Raspberry Pi and More

Filed under
  • New laptop: Walmart Motile M142

    Then, while at FOSDEM I saw an article in Phoronix about a $200 Ryzen 3 (the M141) from Walmart. It looked like it would end up similar in performance to the E7240, but with a bit better battery life and for $200 it was well worth a shot (luckily I already had a work trip to the US planned for the middle of February, and the office is near a Walmart). Unfortunately I decided to sleep on it and when I woke up the price had jumped to $279. Not quite as appealing, but looking around their site I saw a Ryzen 5 variant (the M142) going for $400. It featured a Ryzen 5 3500U, which means 4 cores (8 threads), which was a much nicer boost over my i5. Plus AMD instead of Intel removes a whole set of the speculative execution issues that are going around. So I ordered one. And then it got cancelled a couple of days later because they claimed they couldn’t take payment. So I tried again, and that seemed to work. Total cost including taxes etc was about $440 (or £350 in real money).

    Base spec as shipped is Ryzen 5 3500U, 8G RAM + 256G SATA m.2 SSD. Provided OS is Windows 10 Home. I managed to get it near the start of my US trip, and I’d brought a USB stick with the Debian installer on it, so I decided to reinstall. Sadly the Buster installer didn’t work - booted fine but the hardware discovery part took ages and generally seemed unhappy. I took the easy option and grabbed the Bullseye Alpha 1 netinst image instead (I run testing on my personal laptop, so this is what I was going to end up with). That worked fine (including, impressively, just working on the hotel wifi but I think that was partly because doing the T+Cs acceptance under Windows was remembered so I didn’t have to do it again to get routed access for the installer). I did need to manually install firmware-amd-graphics to make X happy, but everything else was smooth and I was able to use the laptop in the evenings for the rest of my trip.

  • The $199 Pinebook Pro ARM Laptop Is Closer To Running On The Mainline Linux Kernel

    While the Pinebook Pro is happily running various Linux distributions and BSDs, this 14-inch ARMv8 laptop doesn't yet have mainline kernel support for lack of the DeviceTree bits. But Tobias Schramm of the Manjaro camp on Friday sent out the latest patches adding support for the Pinebook Pro. The patches provide the needed DTS bindings for this Rockchip powered laptop.

  • Raspberry Jams around the world celebrate Raspberry Pi’s 8th birthday

    Happy birthday to us: tomorrow marks the eighth birthday of the Raspberry Pi computer!

  • Apollo Lake Mini-ITX board has thin profile

    Winmate’s “IP70” is an industrial thin Mini-ITX board with an Apollo Lake Pentium N4200 plus up to 8GB DDR3L, 2x GbE, 2x SATA, 2x M.2, 4x USB 3.0, DP, HDMI, and -20 to 60°C support.

    Winmate has posted details on a “new” low-profile Mini-ITX board with an Intel Apollo Lake SoC and a -20 to 60°C range. No OS support is listed for the IP70, but the company’s Apollo Lake based EAC Mini EACIL22S runs Linux and Windows.

  • Qualcomm Snapdragon XR2 5G VR Reference Design Comes with Dual 2Kx2K Display, Up to 7 Cameras

    Qualcomm Snapdragon XR1 was the first processor from the company dedicated to extended reality (XR) and virtual reality (VR) applications. It found its way in various hardware development kits, a well as Google Glass Enterprise Edition v2.

    We missed the company’s announcement of the Snapdragon XR2 platform with 5G support last December, but Qualcomm has now just unveiled the Snapdragon XR2 5G Reference Design to help OEMs shorten time to market.

  • Semtech LoRa Edge Uses LR1110 Single Chip with LoRa, WiFi, and GNSS

    Semtech, a leader in LoRa and RF technology, is continuing its support for the LoRa ecosystem with the launch of a new portfolio of solutions called LoRa Edge to simplify and accelerate IoT applications for the Edge.

    LoRa Edge is a new highly versatile and low power software-defined LoRa-based platform that will enable a wide portfolio of applications for indoor and outdoor asset management, targeting industrial, building, home, agriculture, transportation, and logistics markets.

EndeavourOS: Refining the upcoming release

Filed under

Before our big net-installer release in December, we’ve informed you that our release cycle in 2020 would be bi-monthly instead of the previous monthly release.

Development-wise, a lot has changed in the past two months. We are excited to announce that the help from our community members working actively to improve the ISO and our infrastructure has increased.

There are some great projects going on that we’re developing in collaboration with the community such as GFX boot, to choose between an Nvidia, AMD or regular boot for the ISO, translations for our Welcome app and setting up our mirror. There’s also a “How to setup EndeavourOS on a home server”-manual in the making.

Read more

AMD Graphics: RadeonSI, Radeon ROCm and RADV Vulkan Driver

Filed under
  • Initial Batch Of Radeon Graphics Driver Changes For Linux 5.7

    AMD Linux kernel graphics driver maintainer Alex Deucher has submitted the company's first batch of graphics driver updates to DRM-Next that in turn is for inclusion with the upcoming Linux 5.7 cycle.

    One of the big ticket items this round is a rework of the virtual memory code in preparation for finally having the HMM support in order. That is the Linux kernel's Heterogeneous Memory Management support and is important for compute in particular with Shared Virtual Memory (SVM) and other functionality. AMDGPU preparations around HMM have been ongoing for some time and with Linux 5.7 is nearing that milestone but as of this pull request hasn't yet crossed it.

  • RadeonSI + Gallium3D Video Code Fix Up 4:2:2 Support, YUY2

    Stemming from incorrect rendering with VA-API and UYVY422 content with AMD Radeon graphics on Linux, a number of fixes were merged today for improving the Gallium3D video code.

    AMD's Pierre-Eric Pelloux-Prayer added YUY2 support to Gallium3D's video acceleration state tracker along with 4:2:2 support. With these patches now merged for Mesa 20.1, the RadeonSI Gallium3D driver should be playing correctly for GPU video decoding of UYVY content with the VA-API state tracker. These improvements appear to have been tested so far with GStreamer.

  • Radeon ROCm 3.1 Released With RAS For Vega 7nm, SLURM Support

    A new version of the Radeon Open Compute "ROCm" stack is available today but it still doesn't deliver on Navi support.

    Radeon Open Compute 3.1 is the new release that now versions its default installation directory structure, adds RAS support for 7nm Vega, and also introduces SLURM support.

    The Reliability, Accessibility, and Serviceability capabilities are for HBM ECC memory error handling, GFX/MMHUB ECC errors, and PCIe uncorrectable errors. The RAS behavior should these uncorrectable errors happen is to perform a GPU reset using BACO. This 7nm Vega work is presumably under the microscope still for the Vega-based "Arcturus" compute accelerator coming this year.

  • RADV Vulkan Driver Begins Wiring Up Support For Radeon's SQ Thread Trace Block

    On top of the Mesa "RADV" Vulkan driver's recent support for using the Radeon GPU Profiler with this open-source driver, RADV is now adding support for the SQTT hardware block on Radeon GPUs for expanding the profiling metrics it is able to expose.

    The SQ Thread Trace block on modern Radeon GPUs collects thread trace data from timings to wave occupancy to other metrics on a per-draw/per-dispatch basis.

GNOME: New GTK Site, GNOME 3.36 Lands Scaled/Transformed Hardware Cursors Support, Felipe Borges Celebrates 10

Filed under
  • GNOME launches a new GTK site, the Linux Foundation on security vulnerabilities, OSI board elections, and more open source news

    Developers of apps will be delighted with the facelift to the GTK website. The new site integrates a complete set of documentation for anyone developing applications to run in a GNOME desktop environment. One of the major successes is its extensive documentation in multiple programming languages, letting developers have more choice than ever according to the site. The whole site is available on GitLab and you can see the recent commits that led to the new look.

  • GNOME 3.36 Lands Scaled/Transformed Hardware Cursors Support

    Landing just in time for GNOME 3.36 is a merge request that has been open for nearly one year on improving Mutter's hardware cursor handling.

    Hitting Mutter today ahead of GNOME 3.36 is support for scaling and transforming cursor images with Cairo and using hardware cursors on rotated or fractionally scaled displays.

  • Felipe Borges: Ten Years Contributing to GNOME!

    I rarely celebrate recurring dates but this is a nice rounded number that serves as the perfect excuse for me to publish this letter of appreciation to our community.

    For me, it all started with a hardware vendor trying to cheap their desktop machine’s price by putting Linux on it. Initially, we didn’t have internet at home, so I spent a significant amount of time just exploring the OS and toggling every knob I could find in the UI. The first issues I encountered were missing translations. Googling for that lead me to discover the wonders of Free and Open Source Software. I could contribute that missing translation!

    Playing with computers wasn’t always my hobby. I had an offline childhood, despite being a 90’s kid. A career in anything computer-related was unthinkable given our economic reality at the time. My parents are low paid public servants, so I was inclined to find myself a job in the public sector too. I had strong feelings about teaching, just like my mom, but computers… well, they are addictive!

    When I was sixteen years old I made my first contributions to the Brazilian Portuguese translation team in GNOME. This was also when I started reading Planet GNOME. Your neckless floating heads were god-like figures to me. I couldn’t understand 90% of the topics discussed due to my limited English and technical skills at the time, but I basically just kept on reading everything. Really. IRC logs, mailing lists, blog aggregators, social media timelines… everything scrolled all the way to the bottom. This is indeed overwhelming, but it has helped me put everything together and ~kind of~ grasp what software development looked like.

More in Tux Machines

Servers: Kubernetes, MicroK8s and Ubuntu

  • What’s up with the Kubernetes ecosystem

    This week’s acquisition of Rancher Labs by the veteran enterprise Linux firm SUSE neatly illustrates the growing momentum of container-based application deployment. It also underlines the importance of Kubernetes as the orchestration tool of choice for managing all those containers. So, what does this latest move mean for the broader Kubernetes ecosystem? When containers first garnered corporate attention six or seven years ago, Docker and its tools were the centre of attention. But the focus soon shifted to management frameworks capable of automating the deployment and scaling of containers, and Kubernetes, developed by Google from technology used in its cloud platform, quickly won out. Like many open source tools, Kubernetes has its share of rough edges and does not necessarily provide all the capabilities that users need to build a functioning container-based infrastructure. Companies such as Rancher sprang forth to provide a complete software stack built around Kubernetes for those who didn’t want to build it all themselves.

  • MicroK8s HA tech preview is now available
  • Ubuntu Support of AWS Graviton2 Instances
  • Ubuntu Support of AWS Graviton2 Instances

    Ubuntu is the industry-leading operating system for use in the cloud. Every day millions of Ubuntu instances are launched in private and public clouds around the world. Canonical takes pride in offering support for the latest cloud features and functionality. As of today, all Ubuntu Amazon Web Services (AWS) Marketplace listings are now updated to include support for the new Graviton2 instance types. Graviton2 is Amazon’s next-generation ARM processor delivering increased performance at a lower cost. This

Linux and Linux Foundation: Rust, Windows, SystemD and More

  • Linux Developers May Discuss Allowing Rust Code Within The Kernel

    A Google engineer is looking to discuss at this year's Linux Plumbers Conference the possibility of allowing in-tree Rust language support. Nick Desaulniers of Google, who is known for his work on LLVM Clang'ing the Linux kernel and related efforts, is wanting to bring up the matter of in-tree Rust support for the kernel. The extent though of allowing Rust within the kernel isn't clear yet but would likely be very limited.

  • Emulating Windows system calls in Linux

    The idea of handling system calls differently depending on the origin of each call in the process's address space is not entirely new. OpenBSD, for example, disallows system calls entirely if they are not made from the system's C library as a security-enhancing mechanism. At the end of May, Gabriel Krisman Bertazi proposed a similar mechanism for Linux, but the objective was not security at all; instead, he is working to make Windows games run better under Wine. That involves detecting and emulating Windows system calls; this can be done through origin-based filtering, but that may not be the solution that is merged in the end. To run with any speed at all, Wine must run Windows code directly on the CPU to the greatest extent possible. That must end, though, once the Windows program makes a system call; trapping into the Linux kernel with the intent of making a Windows system call is highly unlikely to lead to good results. Traditionally, Wine has handled this by supplying its own version of the user-space Windows API that implemented the required functionality using Linux system calls. As explained in the patch posting, though, Windows applications are increasingly executing system calls directly rather than going through the API; that makes Wine unable to intercept them. The good news is that Linux provides the ability to intercept system calls in the form of seccomp(). The bad news is that this mechanism, as found in current kernels, is not suited to the task of intercepting only system calls made from Windows code running within a larger process. Intercepting every system call would slow things down considerably, an effect that tends to make gamers particularly cranky. Tracking which parts of a process's address space make Linux system calls and which make Windows calls within the (classic) BPF programs used by seccomp() would be awkward at best and, once again, would be slow. So it seems that a new mechanism is called for. The patch set adds a new memory-protection bit for mmap() called PROT_NOSYSCALL which, by default, does not change the kernel's behavior. If, however, a given process has turned on the new SECCOMP_MODE_MMAP mode in seccomp(), any system calls made from memory regions marked with PROT_NOSYSCALL will be trapped; the handler code can then emulate the attempted system call.

  • systemd 246-RC1 Released

    With this being the first systemd release since March, there is a lot in store for the v246 milestone. There are many systemd 246 features including new unit settings, the service manager has support for the cgroup v2 freezer, the CPU affinity setting now supports a NUMA value, systemd.hostname= can be used for setting the hostname from the kernel command line during early boot, hardware database updates, systemd-journald now supports Zstd compression, numerous networkd additions, systemd-cryptsetup now supports activating Microsoft BitLocker volumes during boot, systemd-homed improvements, the new systemd-xdg-autostart-generator, and much more. Just yesterday was one of the latest additions of exposing host OS information to containers.

  • Intel Gen12/Xe Graphics Have AV1 Accelerated Decode - Linux Support Lands

    On top of Intel Gen12/Xe Graphics bringing other media engine improvements and much better 3D graphics support, another exciting element of the next-generation Intel graphics is now confirmed: GPU-accelerated AV1 video decoding! There has been talk of Gen12/Xe supporting AV1 at least on the decode side but a lack of hard information to date. But landing this week in Intel's Media Driver for Linux is indeed AV1 decode wired up for Gen12. This is nice to see happen and a bit of a surprise as so far the Intel Media Driver support matrix has lacked any references to AV1.

  • Four years of Zephyr

    The Zephyr project is an effort to provide an open-source realtime operating system (RTOS) that is designed to bridge the gap between full-featured operating systems like Linux and bare-metal development environments. It's been over four years since Zephyr was publicly announced and discussed here (apparently to a bit of puzzlement). In this article, we give an update on the project and its community as of its v2.3.0 release in June 2020; we also make some guesses about its near future. The authors are both Zephyr developers working for Nordic Semiconductor; Cufí was the release manager for the v2.3.0 release. [...] The Zephyr kernel supports multiple architectures and scheduling algorithms. There are cooperative and preemptive threads, along with facilities for reducing interrupt latencies and guaranteeing the execution of key threads. An optional user mode can use the Memory Protection Units (MPUs) typically present in microcontrollers to isolate and sandbox threads or groups of threads from one another and the kernel. Zephyr supports six major architectures (x86, Arm, ARC, NIOS II, Xtensa, and RISC-V) and also runs in emulation. Both 32- and 64-bit processor support exists for some architectures. Within the Arm architecture, the emphasis has been on the usual 32-bit Cortex-M cores, but experimental support for Cortex-R and Cortex-A (including 64-bit Cortex-A) exists and continues to improve. Beyond "real hardware," Zephyr runs on QEMU, and as an ELF executable. It supports a simulated radio, which can save time and expense when testing and debugging radio frequency (RF) issues. In all, there are upstream support files for over 200 "boards". Zephyr has logging and shell subsystems. These have configurable transports, including traditional serial ports (for both) and over the network (for logging). Logging is optionally asynchronous; in this case, a separate thread actually sends log messages. The logging calls themselves post compact messages to a queue, which can be done quickly, so logging can be done even from within interrupt context. Hardware-specific APIs are built around a lightweight device driver model that is tightly integrated with the kernel. It supports a wide range of peripherals and sensors under this common model. Multiple storage options are available. These range from basic key-value storage optimized for NOR flash to filesystems.

Mozilla Leftovers and Firefox Development

  • Browser Wish List - Tab Splitting for Contextual Reading

    On Desktop, I'm very often in a situation where I want to read a long article in a browser tab with a certain number of hypertext links. The number of actions I have to do to properly read the text is tedious. It's prone to errors, requires a bit of preparation and has a lot of manual actions.

  • Mozilla Privacy Blog: Laws designed to protect online security should not undermine it

    Mozilla, Atlassian, and Shopify yesterday filed a friend-of-the-court brief in Van Buren v. U.S. asking the U.S. Supreme Court to consider implications of the Computer Fraud and Abuse Act for online security and privacy. Mozilla’s involvement in this case comes from our interest in making sure that the law doesn’t stand in the way of effective online security. The Computer Fraud and Abuse Act (CFAA) was passed as a tool to combat online hacking through civil and criminal liability. However, over the years various federal circuit courts have interpreted the law so broadly as to threaten important practices for managing computer security used by Mozilla and many others. Contrary to the purpose of the statute, the lower court’s decision in this case would take a law meant to increase security and interpret it in a way that undermines that goal.

  • Changes to storage.sync in Firefox 79

    Firefox 79, which will be released on July 28, includes changes to the storage.sync area. Items that extensions store in this area are automatically synced to all devices signed in to the same Firefox Account, similar to how Firefox Sync handles bookmarks and passwords. The storage.sync area has been ported to a new Rust-based implementation, allowing extension storage to share the same infrastructure and backend used by Firefox Sync. Extension data that had been stored locally in existing profiles will automatically migrate the first time an installed extension tries to access storage.sync data in Firefox 79. After the migration, the data will be stored locally in a new storage-sync2.sqlite file in the profile directory.

  • SpiderMonkey Newsletter 5 (Firefox 78-79)

    SpiderMonkey is the JavaScript engine used in Mozilla Firefox. This newsletter gives an overview of the JavaScript and WebAssembly work we’ve done as part of the Firefox 78 and 79 Nightly release cycles. If you like these newsletters, you may also enjoy Yulia’s weekly Compiler Compiler live stream, a guided tour of what it is like to work on SpiderMonkey and improve spec compliance.

  • Testing Firefox more efficiently with machine learning

    At Mozilla we have around 50,000 unique test files. Each contain many test functions. These tests need to run on all our supported platforms (Windows, Mac, Linux, Android) against a variety of build configurations (PGO, debug, ASan, etc.), with a range of runtime parameters (site isolation, WebRender, multi-process, etc.). While we don’t test against every possible combination of the above, there are still over 90 unique configurations that we do test against. In other words, for each change that developers push to the repository, we could potentially run all 50k tests 90 different times. On an average work day we see nearly 300 pushes (including our testing branch). If we simply ran every test on every configuration on every push, we’d run approximately 1.35 billion test files per day! While we do throw money at this problem to some extent, as an independent non-profit organization, our budget is finite. So how do we keep our CI load manageable? First, we recognize that some of those ninety unique configurations are more important than others. Many of the less important ones only run a small subset of the tests, or only run on a handful of pushes per day, or both. Second, in the case of our testing branch, we rely on our developers to specify which configurations and tests are most relevant to their changes. Third, we use an integration branch. [...] The early results of this project have been very promising. Compared to our previous solution, we’ve reduced the number of test tasks on our integration branch by 70%! Compared to a CI system with no test selection, by almost 99%! We’ve also seen pretty fast adoption of our mach try auto tool, suggesting a usability improvement (since developers no longer need to think about what to select). But there is still a long way to go! We need to improve the model’s ability to select configurations and default to that. Our regression detection heuristics and the quality of our dataset needs to improve. We have yet to implement usability and stability fixes to mach try auto. And while we can’t make any promises, we’d love to package the model and service up in a way that is useful to organizations outside of Mozilla. Currently, this effort is part of a larger project that contains other machine learning infrastructure originally created to help manage Mozilla’s Bugzilla instance.

  • Async Interview #8: Stjepan Glavina

    Several months ago, on May 1st, I spoke to Stjepan Glavina about his (at the time) new crate, smol. Stjepan is, or ought to be, a pretty well-known figure in the Rust universe. He is one of the primary authors of the various crossbeam crates, which provide core parallel building blocks that are both efficient and very ergonomic to use. He was one of the initial designers for the async-std runtime.

  • Missing structure in technical discussions

    People are amazing creatures. When discussing a complex issue, they are able to keep multiple independent arguments in their heads, the pieces of supporting and disproving evidence, and can collapse this system into a concrete solution.

  • Thank you, Julie Hanna

    Over the last three plus years, Julie Hanna has brought extensive experience on innovation processes, global business operations, and mission-driven organizations to her role as a board member of Mozilla Corporation. We have deeply appreciated her contributions to Mozilla throughout this period, and thank her for her time and her work with the board. [...] We look forward to continuing to see her play a key role in shaping and evolving purpose-driven technology companies across industries.

Why Windows Power Users Break Linux

As more people come to Linux, those of us who help the Windows refugees make the switch will need to be very patient with them. The more someone knows about Windows, the more likely it is that they will break Linux. Handing them a Linux laptop and saying, “Here ya go…” is not enough if they are going to succeed. You’re going to have to hold their hand for a while and telling them to “RTFM” will just drive them back to Windows. Understanding why they struggle as much as they do will help you to help them avoid some of the common pitfalls. I specialize in helping people get started with Linux. I’ve helped hundreds of people over the last few years and I can pretty much spot the ones who are going to do well and those who are going to be frustrated. If a client approaches me and they start the conversation with “I’ve been using Windows for 20 years…” I know it’s going to be a bumpy ride. The pattern is always the same: I walk them through an install and all is well for about two weeks and then I get a frustrated message from them about how Linux is stupid and doesn’t work. I know without asking that they’ve broken something major or borked up the whole system. I usually can fix the problem and make a good lesson out of it for them. I have gone so far as to walk them through a second installation from scratch. If the system is totally hosed, that’s the best way to go. Give them a clean slate to work with and hope they learned something. On the other hand, if a client tells me that they know nothing about computers but they need one to get things done like writing documents, spreadsheets, web surfing and email then they usually have zero issues. I get them setup and I don’t hear from them again. I usually contact then after a month or two and they invariably tell me everything is working perfectly. I got a call from a gentleman I hadn’t heard from in a year and a half recently. He said everything was working nicely but he wanted some advice about upgrading his Linux Mint from 17.3 to 18.1 and could I help him get it right. No problem. Wonderful to hear that all is well! Read more