Here's my (very simplified) understanding of how file systems work:

A box labeled "hard drive". Inside are two smaller boxes: in the front, a small one labeled "Bootloader". The rest of the space is a box labeled "Operating system and user data".

So, here's my idea:

A box labeled "hard drive". Inside are tgree smaller boxes: in the front, a small one labeled "Bootloader". The middle is is a box labeled "Operating system and user data (Windows)". There's an arrow pointing to the left labeled "(shrinking)". At the end, there's a small box labeled "OS and user data (Linux)". Above is the text "(getting bigger)".

Expansion of the idea

So, normally when switching operating systems I just copy the home folder to an external SSD or a thumb drive. But this only works because I have a few external SSDs and a lot of thumb drives! The average user doesn't even have a thumb drive.

The idea

So the user (on Windows) would launch some software. It will go through all the risks of Linux, check hardware compatibility, etc. After the user accepts all of those, the software will make a list of all the installed software. It will then slightly shrink the Windows partition to fit a tiny OS made specifically to transition off of Windows:

A box labeled "hard drive". Inside are tgree smaller boxes: in the front, a small one labeled "Bootloader". The middle is is a box labeled "Operating system and user data (Windows)". At the end, there's a small box labeled "OS specifically for transitioning".

The computer will reboot to this OS, and then it would start to shrink the Windows partition and make a Linux partition, where all the files could be copied from Windows to Linux.

A graphic laying out two file hierarchies side by side, the Windows one and XDG one.

Post-install experience

After the system is installed, the user will be greeted with a Windows-like OOBE.

Here's a very rough prototype:

Since we made a list of all the software the user had on Windows, we could also automatically install some of it.like

i.e. if the user had Spotify installed, we could automatically install the com.spotify.Client flatpak from Flathub.

Problems

No idea comes without problems. Here are a few I can think of, ordered from hardest to fix to easiest:

  • Users hate change

    • Effectively impossible to fix

  • Users use Adobe software or play games that don't run on Linux

    • Software could give advice on dual-booting

  • No user-friendly enough distros

    • Could make our own distro

  • Filesystem operations are dangerous

    • Advise user to make their own backups

Ending notes

There's a pretty good chance someone has already done this. If so, great! I'll quite possibly start working on something like this sooner or later, although it won't be done for a long while.