Linux on the desktop: growing, but not by as much as some claim

My attention was caught by the claim that Linux desktop use “surged to 22% on one workday.”

Unfortunately the claim does not stand up to scrutiny. The figures are drawn from Cloudflare data and based on North America only. The 22% is there but only at 9:00 UTC, which is 4:00am on the east coast and 1:00am on the west coast, or in other words, when most of the USA is asleep. At 15:00 UTC on the same day, Linux share was down to 6%.

Figures showing Linux share of 22% in North America - but only when most people are asleep
Figures showing Linux share of 22% in North America – but only when most people are asleep

If you set Cloudflare to show global figures, they are more even, with Linux desktop usage tending to peak at around 7%. Windows remains dominant.

I agree though with reporter Steven Vaughan-Nichols that Microsoft has damaged Windows with intrusive advertising and other user-hostile moves, such as the wrecking of the Start menu, the central position for the taskbar, and the confusing repositioning of key options like Copy on the right-click menu in File Explorer.

Almost whenever I touch a Windows 11 machine on behalf of another person, I offer to move the taskbar back to left alignment, and so far every single person has preferred it that way. There’s a good reason: the left corner is easier to hit with the mouse pointer. The central position was a victory for cosmetics over usablity.

I digress though. Today it looks unlikely that Windows on the desktop will be displaced by Linux; however what is more important is the desktop computing continues to be displaced by mobile and web. The notion of a home PC died long ago, other than for gaming.

My bank is “improving” its web site for online banking, in fact making it worse for desktop users. It justifies this by saying it will be better on mobiles. It is annoying but may be the right thing from the bank’s perspective.

In my own area, software development, desktop PCs remain more suitable than any other form factor, though I confess to using a Mac most of the time now (Windows 11 was my break point). On Windows, WSL (Windows subsystem for Linux) has become near-essential.

I also still use Word, Excel and Outlook so Microsoft continues to get money from me.

First steps with MAUI: some friction

I am evaluating Microsoft’s MAUI (Multi-platform app UI) for use on a cross-platform project. I mainly develop on a Mac with Visual Studio Code.

Setup for MAUI development is well explained here though getting everything in place for Mac Catalyst, iOS and Android is tedious. There is a tricky issue related to Apple’s Xcode, needed for MAUI for the Apple targets. Apple’s recommendation is that you install Xcode from the App Store. As you would expect, it updates quite frequently and always when there is a new version of macOS. The version on my machine is therefore 26.6. After installing MAUI for .NET 10 I got an error when trying to build, stating that I had the wrong version (mine was too new).

The workaround for this is either to install multiple versions of Xcode, which is fiddly, or to set ValidateXcodeVersion to false in the .csproj project file.

As it turns out, there is another fix. The .NET for iOS SDK (used by MAUI) was updated last month to require Xcode 26.6. Note: require, not support. Each version of the SDK requires one and only one version of Xcode, and there is a lag between Apple releasing a new version, and Microsoft updating its SDKs.

My instinct is to set ValidateXcodeVersion false during development and to watch out for strange errors that might be fixed for a production build, using the correct Xcode version.

Microsoft’s MAUI SDK engineering lead said:

Updates can include different things that amount to varying levels of work. Sometimes there’s api changes in the SDKs Xcode ships that we need to account for, sometimes they change Cli tools or break things in other ways. Depending on the changes it can be a little bit of work or a lot. 

Lately minor version updates to Xcode tend to be somewhat compatible with existing MAUI (Mac/ios) workloads and you can technically force trying to use it with the right build settings, but we generally advise not installing Xcode from the App Store so that it isn’t silently updated and you can install updates when you know they’ll be supported by MAUI instead.

This is friction, though it comes with the cross-platform territory. Note that Apple insists on building with the latest Xcode for store submission.

With that out of the say, I started building an experimental app. This is not Windows and conceptually one should think of the app UI as a single page, mobile app style, even if developing for Windows and Mac Catalyst. I decided to use a Tab Bar for navigation, but ran into an issue: when debugging the app for Mac Catalyst, the Tab Bar did not appear.

I thought this was something I was doing wrong, even though it was a simple and basic case. Then after digging a bit I discovered that it was a bug, that I was not the first to hit it, and that it was fixed with a workaround late last year.

The solution is to run: dotnet workload update from the command line to get the latest version.

Both issues are a reminder of how tricksy cross-platform development can be, particularly for frameworks like MAUI which use native widgets rather then drawing them from scratch like Flutter or Avalonia UI.

The solution, it seems to me, is to keep the user interface simple.

Running Visual Studio 2008 in Windows 11

One thing Microsoft is generally good about is keeping old applications running. Applications built with Visual Basic 6.0 (first released in 1998) still run well (in most cases) on the latest Windows.

I maintain an application which is not quite that old, but which was built with Visual Studio 2008 and .NET Framework 2.0. It still runs but needs modernizing and taking cross-platform.

I tried opening the project in Visual Studio 2026 but the automatic project conversion failed and it was proving difficult to fix up. Maybe it would be easier to keep it as-is and import it piecemeal to a new project, converting the database from Access MDB to SQLite along the way.

To this end, I decided to install Visual Studio 2008 on Windows 11. One can still download the trial from Microsoft as this Stack Overflow thread discusses, and upgrade to full if you have a valid key. I had to disable Windows 11 Smart App Control in order to mount the .iso files.

I installed both VS 2008 and the SP1 patch, as well as the MSDN library. Remarkably everything worked smoothly, with the exception of SQL Server 2005 (installed by default) which Windows warns will not work correctly.

My project loads and runs perfectly and the old Visual Studio is delightfully responsive to use.

The presence of local help is nostalgic:

One of the first things I did was to write code to export the MDB to SQLite, an important step forward in the modernization journey, and the task was completed in less than a day.