Pengwin – A Linux Distro Optimized for WSL Based on Debian
github.com
github.com
The clue is that MSWin running in a VM on Linux is faster than on hardware. The way forward is to boot Linux, or even something else, to manage hardware, memory, and filesystems, and cut down MSWin to run in a container on it. That way MSWin relies on the underlying OS to do things MSWin has proven to be just not very good at. MSWin runs programs written for it, reliably the same as non-hosted MSW, but is not subject to randomizing effects of manufacturers' drivers and MS's historically poor buffer and process management.
If you want MSWin to manage the screen, it can provide a way for an underlying OS program to work in a window it provides, and connect UI and clipboard events back to it. But MSWin is not really so great at display management, either, so it might be better for the underlying OS to manage that, too, as is done with VMs on X today.
If it's the former, pay a dev, if it's the latter, use a different device.
If it's the former, find the correct firefighter, if it's the latter, use a different fire.
If it's the former, pay a contractor to build you a chair, or make one yourself. If it's the latter, use a different construction material.
If it's the former, pay a licensed medical professional or read online forums and do it yourself. If it's the latter, contact your nearest funeral home.
Lock-in sucks, but it's real.
That's funny. I didn't know that. Any data source you can share with me?
IE6 was famously (in my parts) known for being perceivably faster under Wine.
Microsoft have invested considerable effort on improving the NT subsystem in subsequent releases of Windows so I would be surprised if that meme was still true. Plus SSDs likely even the playing field too.
As other people have noted, filesystem performance is often better under Linux.
I also will point out that at least some rendering tasks can be faster under Linux as well:
http://blog.thepixelary.com/post/167616662857/improving-perf...
Just like with the filesystem performance discrepancy, this article seems to point out WDDM (Windows drivers) as the reason for this rendering discrepancy.
And while we are on gaming (since I am a gamer as well!) when comparing games that run natively on Linux as well as Windows, Linux often has a performance edge over Windows:
https://www.phoronix.com/scan.php?page=news_item&px=Win10-Li...
Of course most games do not support Linux natively so in order to game on Linux you have to use WINE, Proton, or full virtualization to get a non-native game to run and this extra middleware layer adds overhead. But this doesn't mean gaming performance on Linux is worse than Windows; as comparing native-to-native performance shows.
(Not because it's using secret system calls, but because its design was vetted and performance tailored for Linux.)
https://www.phoronix.com/scan.php?page=news_item&px=Linux-4....
https://www.makeuseof.com/tag/linux-transfer-files-faster-wi...
https://www.tomshardware.com/reviews/ubuntu-oneiric-ocelot-b...
https://superuser.com/questions/1124472/why-is-linux-30x-fas...
I also want to point out that just because NTFS isn't the fastest filesystem on the block doesn't mean it is a bad one. From what I can gather just casually googling it seems like NTFS emphasizes safety at the cost of performance at times. So depending on your workload and desired behavior NTFS might be the file system of choice for you. It's also worth noting that IF NTFS is intended to be more user-safe it sort of makes sense why may be the choice for the most common OS which aims to serve all users (not just technical ones).
And that can't be fixed without involving 10 different teams and potentially outside partners.
And there's something wrong with the filesystem, which can't be fixed without the same deal except that will definitely require the cooperation of the outside partners because apparently you can write an extension for NTFS and fixing it would break the existing extensions, which Microsoft doesn't have the source for and doesn't ship.
And there's a thousand other paper cuts, and a very large fraction of those would require cross-team coordination and testing, which is a horrible time sink in a large company.
Fundamentally, Windows has poor performance when dealing with lots of little files, which is exactly what compiling large code bases involves. And to top it all off, their build system, conspires against their own OS. You'll get better performance using cmake + ninja (on Windows that is) then you will with cmake + visual studio.
Edit: also as a practical matter, if all my company's code is in git, and all outside code bases I work with are in git, I kinda would like decent git performance regardless of the origins of the tool.
I use windows as an outlook appliance at work, and as a gaming appliance at home. Otherwise I do everything in linux and am much happier.
Could you expand on what some of these things are?
I'll join the fray in expressing skepticism here. Source?
Anyway, I think this WSL distro is pretty cool. I've set up WSL on my Windows computer for kicks and while it was neat I never quite got it to work for the rust development and environment I wanted. I ended up just doing it in Windows.
But if this sets up rust and VS Code (the editor I wanted to use) painlessly, then I'll have to give it another shot.
ref: https://github.com/Microsoft/WSL/issues/873
To be clear, this is for a specific use-case. I don't believe that all applications will have similar performance profiles and that Linux wins over Windows in all of the cases like OP seems to suggest.
It has been tried.
Not to mention Windows has built in antivirus reacting to all your filesystem activity by default...
I have heard that system devs at Microsoft have Admin mode enabled. I think that is why they dont realise how bad the dev experience is on windows when you dont have admin. You cant turn windows indexing off, you cant exclude things from anti virus, you cant launch Application Verifier. All dev workflows should work without Admin.
All I can say is that I don't see the need for any of it.
As I have a corporate laptop running Win10 I can't install anything except use Cygwin or WSL. It doesn't allow me to run a Linux VM as it has networking issues upon installing Hyper-V or Virtualbox.
So I'm stuck with WSL on Win 10 and appreciate the efforts of others to get X apps running on it.
There are no good desktop os's in 2019, so they're all 'wrong'. Being 'wrong' therefore cannot be a good argument against their use. All we can do is find the best compromise for our purposes.
Pengwin is primarily Debian testing, with some stable and some unstable here and there.
Pengwin configures dozens of settings for WSL and has optional WSL-specific features.
Settings are delivered by pengwin-base and features can be configured with pengwin-setup.
You could probably spend hours implementing these features on your own each time you have to install Ubuntu on a new Windows device.
But by purching Pengwin you support open source indie devs that handle it for you, answer bug reports, constantly add new featres, and are available for support.
The readme is very vague about what Pengwin's features and differences actually are, and gives me no solid reasons to switch from Ubuntu, which already seems well-suited to WSL. Am I correct that trying Pengwin requires paying and installing through the Microsoft Store, even though it's open source?
“Grants/Bounties
If you have an idea for a new feature you would like to see implemented in Pengwin and can implement it yourself given the funding, we are now accepting grant/bounty proposals. Grants are currently available for $50-$500 USD based on complexity.”
The upper limit is quite demotivating, from my point of view.
"Learn how you can earn paid grants improving Pengwin."
"Your proposal will be promptly evaluated" ... "Your work sample and GitHub history will be evaluated to determine if you have the technical competancy to implement the proposed change and deliver timely." "If approved, you will recieve a simple agreement covering the scope of the work you will be doing which you must acknowledge and return and then you may commence work."
Windows Defender protects from Windows malware entering via WSL and Linux malware as well.
For example Windows Defender has caught comprimised npm modules inside WSL.
What I don’t understand is why antivirus has to second guess the user.
I say this coming from around a decade of running Linux or MacOS on the desktop. This just works.
I'm not running a Windows Insider build, and the current version of WSL doesn't accurately represent the posix permissions on files seen via the /mnt/c mount (DrvFs). The next version resolves this by storing posix permissions and other meta data. In my case, being unable to manipulate the permissions causes us some problems. It makes a lot of sense to work on the files within the VM, in a native ext4 volume.
What makes this optimized for WSL?
Yes. What kinds of optimizations make it optimized? This is my original question. Telling me the equivalent of "read the article" changes nothing when I've already done so and that it doesn't say what's been changed to make it optimized.
I've yet to carefully go through all 900 commits of with subject lines almost entirely of pull request #s, but one would think if whole repo's title was how it was "optimized" they could substantiate what they mean or what they did.
* Pengwin includes wslu, a set of useful open-source utilities for interacting between WSL and Windows 10
* Manage your Microsoft Windows and Azure deployments with PowerShell and azure-cli, command line tools for Azure.
* Enable/disable Windows Explorer shell integration.
* Configure experimental GUI settings, including a Windows 10 theme for your Linux applications, HiDPI support and international input methods.
* Create a secure bridge to Docker running on Windows.
* Support for many Linux graphical applications with no need to configure display or libGL in Pengwin. (Requires a Windows-based X server, such as X410.)
* Pengwin provides faster patching for WSL-specific bugs than any upstream Linux distro available on WSL.
The nicest thing has to be running IntelliJ from X11 and have it see the linux filesystem.
I can run a Yubikey with weasel-pageant and get GPG signing and SSH keychain access to github through it -- it pops up a Windows PIN entry dialog box and then works fine thereafter. You can use wslutilities (wslusc) to set up windows shortcuts to your Linux applications. I use ConEmu as my shell and it's fine.
There is a problem with HiDPI screens. I've worked around this by increasing the font size in IntelliJ, but VS Code shows up as teensy tiny.
The worst part has to be the documentation. The docs for "pengwin-setup" is basically a bunch of screenshots on their blog.
https://www.hanselman.com/blog/TheYearOfLinuxOnTheWindowsDes...
Pengwin looks like a Linux distro that removes the parts of a traditional distro that don't make sense in WSL and streamlines things that are still somewhat difficult in WSL, like getting X applications running.
Prebuilt OS image is just a single download and deploy.
This allows you to run a Linux userspace on Windows. The Windows store has (for free) installable distros for Ubuntu, Debian, and others.