Towards a Linux Distribution That Seamlessly Runs Windows Binaries
This blog post was automatically generated (and translated). It is based on the following original, which I selected for publication on this blog:
Convert Linux to Windows | Hacker News.
Towards a Linux Distribution That Seamlessly Runs Windows Binaries
The prospect of a Linux distribution capable of running Windows binaries out-of-the-box has sparked considerable discussion. The core idea revolves around leveraging Wine to allow users to install and execute Windows applications as seamlessly as they would on Windows, without additional configuration or complexity.
Addressing the Challenges
A central challenge lies in isolating Windows applications to prevent conflicts. One proposed solution mirrors Android's approach: assigning a unique "user" per application. This not only restricts inter-application file access but also facilitates individual firewalling, enhancing security and control.
Another key consideration is the consistency of configuration. The "hacks" required to make one Windows application function correctly under Wine can inadvertently disrupt others. A container-based approach, where each application resides within its own Wine-enabled container, offers a potential solution. This ensures that the necessary settings and dependencies are pre-configured, eliminating user-end tweaking. While this might initially seem space-inefficient, efforts to streamline Wine for container usage could mitigate this concern.
Existing Solutions and Alternatives
The concept of containerizing Windows applications within Wine is not entirely new. Projects like "Bottles" already utilize YAML files to define installation instructions. Furthermore, Flatpak offers a containerization solution that could package Wine and its dependencies. However, the Flathub repository currently restricts Windows application submissions due to licensing and redistribution concerns.
Other suggested approaches involve:
- Distributing reproducible recipes: Similar to Dockerfiles, these recipes would outline the steps required to set up a working Wine environment for specific applications.
- Leveraging Flatpak: Utilizing Flatpak's ability to factor out common components to minimize Wine's footprint.
The Stability Question
A recurring theme in the discussion is the perceived instability of the Linux environment compared to Windows. While the Linux kernel's syscalls are generally stable, the C library (glibc) presents challenges. Windows, conversely, distributes its C library as part of the Visual C++ runtime, ensuring backward compatibility. However, issues with version conflicts and redistributable packages can still arise.
The stability question can be boiled down to this: Is the C library the problem with ABI breaks on Linux? Glibc has versioned symbols, but the problem is the abandoned libraries(e.g. SDL1, gtk2) and other things.
The Allure of Older Software
Many users expressed a desire to run older Windows applications, citing speed and resource efficiency as reasons to prefer them over modern alternatives. The ability to run legacy software also raises questions about what functionalities have really improved in the new software. Google Docs' real-time collaboration and autosaving is one, but not many others come to mind.
Forward Compatibility
A commonly cited advantage of Windows is its forward compatibility. However, this compatibility is achieved through extensive layering and the continued support of older APIs, sometimes at the expense of performance and security.
The discussion also mentioned that you would have to build on the oldest distro you can find so that the built binaries actually work on arbitrary machines you try to run it on. Containers can solve that problem though.
The Open-Source Dilemma
While Wine enables the execution of Windows applications on Linux, some argue that this approach encourages closed-source software on an open platform. This raises questions about whether it would be better to only support open-source software.
The User Experience
A key aspect of a successful Windows-compatible Linux distribution is the user experience. The proposed distribution would present a desktop environment familiar to Windows users, minimizing the learning curve and facilitating a seamless transition.
Is it a value judgement by the author that incentives are improperly aligned and maximizing profits by any means is pathological? Many would agree.
Conclusion
The creation of a Linux distribution that runs Windows binaries by default is possible, but fraught with technical and philosophical challenges. Addressing these challenges requires careful consideration of containerization, configuration management, licensing issues, and user experience. Whether such a distribution would ultimately benefit the Linux ecosystem remains a matter of debate. Could it increase Linux adoption by providing access to a wider range of applications, or would it simply perpetuate the dominance of closed-source Windows software?