QtDD – Use Windows Subsystem for Linux to develop your Qt apps on Windows

I can introduce myself at least. My name’s Avri Parker, and I’m a Program Manager at Microsoft on the Windows Subsystem for Linux team, and I’m joined by Hi, my name is Craig Loewen, and I’m a Program Manager, also at Microsoft -on the Windows Subsystem for Linux team -Awesome. All right, so let’s get started with how you can use the Windows Subsystem for Linux to develop your Qt apps on Windows. We’re going to explain to you, first of all, what even is the Windows Subsystem for Linux. Then we’ll get into how you can use WSL for your inner dev loop, and that’s going to include your Qt development also. After that, we’ll tell you all about some of the great new things that are happening with WSL. And you can thereafter ask us all the questions that you’re dying to get answered. So let’s get started with this. What is the Windows Subsystem for Linux? WSL is a tool which makes your Windows dev box feel like a Linux machine without the traditional virtual machine or dual boot setup, which means it lets you run most of the command line tools, utilities, and applications you would use in your new Linux environment So that sounds cool enough, but the real reasons for why WSL is such an amazing development tool, is because if you’re someone who uses Windows, then it opens the whole wide world of Linux to you And this is all without the added worries of dual booting or context switching On the other side, if you’re someone who is a Linux user and loves Linux, then WSL gives you the opportunity to run Linux on a Windows machine. So you can use apps that you prefer to use on Windows, like Photoshop, while still having access to all your favorite Linux tools. So WSL really is the solution for those who like to develop in both Windows and Linux environments. But now I can tell you why you’ll really want to start using it The integration with Windows is truly a seamless experience. As you can see in the top left picture, you can open Windows file Explorer and see your Linux distributions. You can also open VS code and develop in a full Linux environment, which means having access to your Linux files from the VS code file Explorer and more. And WSL is so performant that even Docker desktop has opted to use it as its backend for running containers. So, if you’ve been using Docker desktop for your dev environment, then you’ve also been using WSL, and witnessed its awesomeness And now adding to this awesomeness with WSL, you’re also able to access your Windows files and executables within your Linux environment. And it has 100 percent full system core compatibility, meaning all your Linux apps work inside it with near native speeds, because it now uses a real Linux kernel. So, Craig, why don’t you walk us through some of these great WSL features and experiences? Yes, I’ll jump over. I’m going to start sharing my screen and we can see what it’s like to actually use your WSL. So, Avri, let me know when my screen’s finally -sharing -Will do, and I can drop my camera for you -All right. Can you see it? -Yes, I can see Sweet. OK, so here I am on my desktop, on my Windows machine, and if I wanted to get started using WSL, a really great way to do that is to use the Windows terminal, which you can see here in my taskbar So I’m going to open this up, and I have my default profile set immediately to Ubuntu So I open it up and I get dropped into a bash shell on my machine, which is pretty awesome. And it builds up really quick. And I can go from here and run my favorite Linux commands, like perhaps update, and it will actually query the actual app packages, and it’ll update my packages from here. And so I can then run those packages. I can run nano editors, like Nano or VIM, or I can run any Linux binaries that I might want to run, like LS, et cetera. And that’s something that you might have seen before, in a VM or a traditional dual boot setup. But where WSL really shines, is the integration between Windows and Linux. So the first example here is accessing your Windows files from a Linux environment. So I’m still in Bash I go to here, and do, echo, shell. I am in Bash, and I’m in actual L64, Linux Binary Bash. This isn’t an emulation or something that is an abstraction of what Bash is It’s actually Bash running in a virtualized context. And I can access my C drive from here. And if I run LS, I’m using the Linux binary LS to list these files, you’re actually going to see permission denied. And that’s what’s so interesting, is I do not have admin rights inside of this context, so I don’t

have rights to go look at some of these files and I get permission denied That’s because we actually use your Windows user account permissions to access any Windows files. So from here I can go into media dev folder, and I can run something like them, through, and I can access my different Windows files using Linux binaries and different Linux products. So you can run projects and access them, and move files around really easily between your Windows contacts and your Linux contacts. So we do that from Linux to Windows, but we also do it the other way. If I go back to my Linux contacts, so I’m inside of my Linux route file system again, I can run powershell.exe/c start. So in normal powershell context, this opens up files for it in that folder. And it actually runs the exact same inside of Linux, where I open up inside of this new Linux file icon here, and it opens up my home folder inside of my Linux distribution, inside of Windows File Explorer. And I can actually go through here and analyze these different files. I can open them up and start reading them with windows, file machines and programs. So we can actually take a look at running Windows program to do that. And I can access my .bashrc file with notepad, which is pretty cool. And so this is actually running inside of Windows. I’m accessing a Linux file, so it has a Linux file ending which I’m able to go access. And I can edit my Bashrc file straight from a Windows editor. And the last thing I want to show you is all this has been from a Linux context, but we can also take a look at this as someone who likes Windows and wants to dive into Linux. So with the Windows terminal, I can open up my drop down menu here and I can have different tabs. So I’m going to open up powershell. You’re going to see a lot of different Linux distributions here because I have a lot installed on my machine. Let’s run a fun command So we’re going to do right, output. And this just in powershell, we’ll write the output to the command line. So I’ll do, ” hello world”, new line “from Linux.” And that just looks like it’s two lines. And we’re going to pipe that to Alpine, and we’re going to run GRAP on it. And that gives us that, from Linux. And then we’re going to pipe that again to Ubuntu, and we’re going to run Cowsay. And that finally gives us this output, where we have taken command output from powershell inside of Windows We’ve piped that to one of Linux, and run GRAP on that output to filter it, to just show from Linux. And then we piped that again to another version of Linux Ubuntu, and we run the Cowsay binary on it, which makes a cowsay output. It’s a fun example. But the really amazing part here is that this command runs in just about under a second, where we can take output from Windows, pipe that into one Linux OS, piped that into another Linux OS, and then pipe that back out to Windows all seamlessly. So WSL really makes it easy to swap between these different environments and access a lot of different features, both from the Windows world and the Linux world. I’ll give it back -to you Avri -Awesome, thanks so much for sharing that, Craig. Let’s give this a second for my screen sharing to pop back up. OK, so how can you start developing with WSL? I think one of the first things that any new developer in a new environment does is set up Git. It’s the most commonly used version control system, which I’m sure you’re all familiar with. And you’ll also want Git all set up with VS code remote extension. And I’m going to tell you guys why it’s a really cool feature in VS code. With the remote extension, you can build, run and debug your Linux applications on windows, directly from VS code, and with WSL as the back end, which is a lot to say and a lot to think about. And we’ve tried to explain it here in the diagram below. But if you haven’t had the chance to play with this just yet, you should definitely do that following today’s talk. And Craig will now show you a demo of what this somewhat complicated diagram is depicting I’ll start chatting about it while it loads We’re going to take a look at what it looks like to have a brief interloop scenario using WSL. So we can take a look at exactly how would you use some different projects inside WSL? What would it look like to make some changes and then push that to production? OK, well,

we might as well start. Here I am back in my home folder, inside of my Linux system, Ubuntu. From here, I’m going to navigate to a project folder which is actually inside of my Linux file system. So I have a website here, and I could go in and start accessing it using whatever method I like. So, I could use VIM, and if I’m very comfortable with VIM tools, I could go start adding it through there. Or I could use VS code. And this has a really nice UI and UX experience, and we can take a look at what that looks like. So the thing to point out here is I ran Code Dot, and from here Visual Studio Code opens, and you’ll notice that this is actually the Windows version of your Visual Studio Code. So it’s the actual dot exe, however, I want to point out that the only thing that’s running in Windows is the UI, while what is actually happening behind the scenes is we’ve created a server inside of our Linux instance that’s communicating back and forth to VS code. And this gives us a remote experience. Remote here is in quotes, because you can use it to access other remote instances like docker containers, or over SSH, and WSL uses that exact same technology to facilitate a way that you can have a full Linux environment directly on Windows. And, you know you’re in a remote context if you look at the bottom left of your screen. You can see WSL Ubuntu here. And so this actually shows me that I’m in Linux And if we really want to prove it to ourselves, we can hover over one of our files here. It may be a little bit hard to read, but the file says Linux file path. So, /Home/C11, which is my username in this case. This is actually using Linux. I’m opening Linux files. And when I’m actually running anything, I’m using a Linux instance. And so if we go and open our extensions, you can see here I have the remote WSL installed. This is how you actually get this experience Another thing that I really want to point out is we also have local extensions installed in the actual remote instance itself. So here actually in a Ubuntu, we have the C++ python, and view tooling extensions installed. So this will actually help us do things like debug, and get intellisense directly in Linux using Linux tools. So we talked about that a lot, but let’s jump into what that looks like. I’m going to hit the debug tab here, and I’m going to hit Start on my project From here, a debug console opens and it says, “hey, you’re running, and your debugger’s attached.” And so from here I’m going to go to localhost 3000, and I get my website. And this is actually the website that is being hosted here in Linux. I’m able to access it using localhost on my Windows machine And from here, this is my production critical website where if you press the button, a cat paw comes and turns the button immediately off. However, this is a real inter dev loop scenario and we’ve identified a bug within our website that shows a cat paw, and since we’re running Linux, we obviously want it to show a penguin’s flipper instead to symbolize Linux. So let’s go take a look at the routes folder and index touch VS. This is the code that runs when someone refreshes the website. And we’re going to set a breakpoint here in the Linux context. Go back to our website and refresh It doesn’t refresh because we put that break point, and you can see the VS code is yelling at us down here. In here, we actually have that breakpoint set And I can check that my actual platform that I’m running on is Linux. And so I’m actually running this as a Linux instance, which is really powerful if you’re targeting Linux in the cloud, and you’re using Linux, like in the case of NPM in this example, there can be different behaviors for node packages on Windows vs. Linux, which can lead you to do some interesting edge cases. That’s why it’s really powerful to be able to use tools like dev SL to develop as closely as you can to your production environment, while still using your favorite tools like VS code. And we’ve identified the bug, which says, my platform should equal Linux to use the Penguin flipper. I can hit restart on my debug, and let’s turn off that breakpoint so it just loads. And then we’ll go and restart my website, and there we go. Now it is critically running And this is overall what the WSL would look like. And then I can hit stop, and I can go to the terminal tab here It opens up in bash, and then from here I can use whatever Git commands, like git status, Git push, et cetera, to do that And the last thing that I want to show here is that you can actually connect Git to use your Windows credentials as well. So let’s take a look at that. Here

I have it. You can actually have that to connect to the Windows credential helper Inside of Windows is connected to your Linux Git. So, you can use the same credentials across both Linux and Windows, which is really nice. And I’ll give -it back over to you Avri to keep going -Awesome. Thank you for explaining that diagram. So now we can get into how you can actually start creating a Qt app Right now in order to run Linux free apps in WSL, you’ll need to install what’s called an X server. I’m actually going to be using Xming. And then, of course, you want to download and install Qt So now I can actually show you a quick demo of how to get started developing Qt apps with WSL, and it’ll be done through this quick video. All right, so I’ve already installed my X server, so I’m going to go to my Xming folder and click Xwatch You’re going to launch the X server with multiple windows and display number equal to zero. You’ll start with no client and you’ll disable the integrated clipboard manager, and disable server access control. And so now that all that configuration has been done, I’m going to go to my handy dandy terminal application, and I’ll go on to 2004 I just want to make sure that my X server is actually up and running. So I’ll just do a test app. I’ll run exercise. And you can see that that is actually working So that’s awesome. So now you can go ahead and launch Qt creator. I’ve actually already installed that on my machine so I’m going to launch that from this WSL instance. And the good thing to call out here is that this is actually going to be launching from my Linux file system And so when you do launch Qt creator, you see that there are a bunch of examples and tutorials that you can get started with And so I’m actually going to get started with this calendar widget example. And as you can see in the video, you can interact with the IDE, just as you would if you were on a Linux desktop. So that’s really awesome. You can go to the code editor. You’ll see that all the formatting, it all translates exactly the same. So that’s really good to see And so I’m now going to actually run an example calendar app, just so that you guys get an idea of what that looks like And so you see, it actually pops up another window, and you can interact with all the drop downs, all of the menus I will actually now just show you guys an example of what it means to debug using Qt. So right now our headers are in bold, Sunday, Monday, Tuesday. If I click italic, though, it does not tell size So we want to be able to fix that So we can go back and start debugging this project because we just can’t figure out why that’s actually happening. So I’m already in the right function that handles the reformatting of the headers. We’ll set a breakpoint at line 168. And so now we’ll actually run the calendar with the debugger attached. And the good things are that you can actually still see the tool tips. So all of that formatting is still the same. So let’s try to hit that break point. We’ll go to italic We see things flashing in the background, meaning we ‘ve actually hit our break point. So we’ll close out of that If we hover over the text, we see that the string is actually set to italic right now. So we’ll step through this function. And let’s see. We’re at the condition where text does not equal italic, which is not right. We want to set that to, if it is equal to italic, that will actually change that formatting, or those letters to be italicized. So that’s good. We’ll go in and make that change We’ll get rid of that breakpoint We’ll stop the debugger and now we’ll relaunch the calendar app. And hopefully I fixed our bug. So we’ll give this just a second to build and to run. And now let’s see. We can go back in. I’m going to make my weekend color magenta, because I just like that color. We’ll change the header text to be italicized. And as you can see now, it is actually italicized. So we’ll go back to bold, and then to Italic so you guys can see. And that’s good. So we fixed our issue. And so the great thing to call out here, is it’s the same kind of development loop that we showed with VS code. So you can actually edit your code, you can run it, you can debug. And this is all happening in Linux land, and that’s

super awesome. So it’s really great that we now have support for GUI apps. You guys may have a couple of questions about how we’re actually doing this, right? So is it magic? I don’t know. We’re never really supposed to spill our secrets if you are a magician, but I can give you guys a pass today. And we’ll start with this diagram just to give you guys a quick breakdown of how it all works So on the left side of the diagram, you’ll see we have Windows World where there is Windows user mode, and the windows NT kernel. On the right side of the diagram, you’ll see that we have Linux land, which is stored in what we call a lightweight utility, VM. And inside this VM, we have Linux USERSPACE, which is where all of your dystrophies live. And beneath that is an actual Linux kernel, which we have shaped specifically for WSL. So both Windows World and Linux Land are running on top of what’s called a hypervisor, and that’s that bottom layer. A hypervisor is also known as a virtual machine manager. And its purpose is to allow multiple machines to share a single hardware platform. And the Windows Type one hypervisor does a great job of serving its purpose in order to support WSL The really big callout I want to make here are those yellow arrows between Windows World and Linux. It’s basically our communication bridge and it’s made up of socket connections which facilitate the input and output communication between the VM environment or Linux and Windows. This communication layer is what allows for the interoperability, the filesystem access and full system core -compatibility -And the other fun things about this diagram is you can see that there’s a Linux kernel in here. This is actually a real Linux Kernel that is built by Microsoft and delivered by Microsoft update. So, yes, that’s right, if you go to Windows settings and hit check for updates, you can get updates to your Windows kernel as well as your Linux kernel. And this will come in the same form as TouchPad drivers, or a graphics card driver will be updating machine This kernel is totally open source and all of the source code is available online. So we’re really excited to be showing you what it does. And it’s based off of the latest stable branch of Linux kernel from Kernel.org. The other thing to call out is all of your different distributions run in the same utility VM. So if you’re running Debian at the same time as you’re running Ubutu, that’s all running in the context of the same VM itself. That’s the difference. The last thing is that this is the architecture for the Windows Subsystem for Linux 2. Everything that you’ve seen today is all WSL 2 focused This is because WSL 2 brings a lot of benefits, like file performance and system core compatibility. And you’ll also see WSL 1 in earlier presentations as well That has a slightly different architecture using machine translation layers inside of the actual Windows and NT kernel itself Yes, thank you for those call outs about the Linux kernel, Craig. It’s crazy to hear that Windows is actually shipping Linux kernel. But we do what we have to do to make sure that we give our developers the best experience possible. And so why did we choose to go with this lightweight utility VM as opposed to a traditional virtual machine? So a traditional VM is, by design, quite isolated from the host, whereas a lightweight utility, VM, is not We’ve made a lot of efforts to make the integration very tight so that the experience feels native. Traditional VMs also boot very slowly and that’s usually within tens of seconds, whereas the boot time for WSL 2 is about one second, depending on your machine, of course And so this means the startup times are virtually instant, and that’s the real reason why Docker Desktop was very keen to have it launch their containers. You go from command props to bash in an instant Also traditional VMs also use a lot of memory, whereas WSL 2’s lightweight utility VM uses only as much memory as needed. Additionally, with traditional virtual machines, you’ll need to manage it. Whereas with WSL 2, we take care of launching only when you need it, so only when you’re actually running Linux apps. And the main reason we use it is really because you can’t even tell that we’re using the VM for your WSL development In that demo that I showed, there’s no keystrokes used to start, stop or wait for anything to do. So the experience just feels natural and native. So now that you guys know how it all works, we can tell you how we’re using this new design for new features. Craig, let’s tell them a little bit about our new experience

-for GUI apps -Yes. So this is really exciting. We have announced that we’re working on GUI app support in the Windows Subsystem for Linux. And this is an exclusive first look at what that looks like on an internal dev-null of some of the progress that we’re running. So here I’ve opened up Windows terminal. This is a video of it running that we took earlier And you can see I’m going to run Nautilus first. The extra command there at the end is just typing the error output backwards to dev-null so that we don’t have to see it. All right, and so there we go. You can see Nautilus opens up, and I want to point out that in an extrovert you might have to telebars. Here, we have just one, surrounded really nicely. It even has a drop shadow on the side. And we also support the Linux icons themselves. And we add a little touch penguin on them to make it really clear that that’s running in a Linux context. And so I can go and use Nautilus to do some file exploration, but our course uses WSL, so let’s do some really fun stuff with it. We’re going to go to my C drive in windows using Nautilus. From here, I can access different folders. I can go to my users folder and I can even access my desktop from there, which is a pretty neat experience. We try to make this as integrated as possible, so it actually looks like it’s a Linux app running directly on your screen. Doesn’t look like it in the X server case where it’s completely separated. And just for fun, I’m going to open up inside of the Linux option in my files in Windows, and I’ll show the exact same view inside of Nautilus So that’s a really cool example of what you can do for fun in exploring it. But we can also do some more complicated scenarios like opening up text editors. So let’s open up G edit. And this is going to now be in my C file. And this gives a really awesome experience, exactly what Avri showed, where it is a Linux environment, you can access all of your Linux files and you can seamlessly open up different Windows and access all of your files in a unique Linux way So this is a really great solution for those who want to use things maybe different than VS code, maybe options like Qt Creator directly in your Linux environment. We also have Glom support, which is the term for when different windows line up on top of each other So if you have multiple windows open, they’ll glom onto the same icon of the taskbar. Of course, this is Qt desktop updates. So let’s open up Qt Creator and run through an example here. We can go and open up an example project I really like the Mandelbrot example because I’m a math nerd. We can actually open these files, get Intellisense and run it seamlessly, and whenever we go and open a new project, we can resize windows, move them around and fully interact with them Again, this is all running perfectly in a Linux environment using actual Linux binaries in a really performant way. And so just to close this loop on this example, we’re going to go to the same code instead of Breakpoint and emulate exactly Avri’s demo from earlier where we can go and debug inside of this context So from here, we hit the break point and then we can have the same experience hovering over different tool tips, and seeing the different outputs, which is really nice overall. And I think now we’re going to close out of this last example, and just for fun, let’s push this a little bit more and open up Google Chrome. And this is a really fun example because we use the actual tiling provided by the app. And so Google Chrome looks exactly like it would on Windows because it uses the same tiling as it does in Linux. So really, just to prove it to ourselves that we are running in Linux, I go to what is my OS.org, and it says, “yes, you are running Linux. This is an actual Linux app.” We can actually go to YouTube from here, and we can open up different videos because this also includes audio and microphone support. So you can’t hear it here through the video, of course, but you will be able to when we release am initial preview of this. You’ll be able to hear different apps and use your microphone through it So we’re really excited to show you the progress of what’s happening behind

the scenes. We’re going to be releasing an initial preview of this in the upcoming months. So you’ll be able to get your hands on it shortly and start playing around with it. It’s going to be available inside of the Windows Insider program coming up. And speaking of other features that we have on the Windows Insider program, let’s take a look at the WSL–install So this is a feature to make installing WSL a lot easier. So all you need to do is open up a command window with administrative privileges and run, WSL –install. From there, it’s going to install all the necessary WSL packages. You’re going to restart your computer and once you’re fully restarted, it will open up a window automatically and it will finalize the installation process. So you can specify chosen distro, and use that from there. And so we’re trying to make it as simple as possible to get started with WSL from A to Z. We actually have a version of this already in Windows Insiders Dev channel right now, which used to be called the fast ring. So you can get started using it right away. But very shortly we’ll be releasing an update that will also include distro installation. This means right now when you use WSL–install, it enables the correct optional features for you. In the future, this will also download a specified distribution of your choice and set it up for you. So when you restart, you’ll be immediately ready to go. And you can expect to see this also within the next couple of months on the Windows Insider program. And the last speech that we want to highlight here is on the next slide, is GPU Compute. So for some of you, this already might be really obvious why this is amazing. But I wanted to take some time to step through the benefits that I see from this feature and what exactly is going on behind the scenes when we talk about GPU compute. So to be really clear, GPU compute is the idea of using your GPU to process large amounts of data GPUs are really great at doing parallel computations so they can do lots of math simultaneously, really quickly, compared to CPUs, which is usually only good at doing one thing at a time And the example on the top left is applying a filter to an image, so we can do a top right corner filter. And that’s just a lot of math. Basically, you’re doing matrix multiplication of that image across the filter over and over again. And that’s where something like a GPU really excels. And we can take that principle of parallel computation, which is what this feature enables at a very basic level, and we can apply that to things like a neural network to solve interesting problems. So on the left of this image, you can see those numbers At the bottom, that’s the user input of the number two, and that is the visualization of a neural network, understanding what the user wrote to output at the top, in this case, the number two. And that’s a simple example of why we might want to use GPU compute using machine learning and AI development scenario. And then on the right is bringing it all together to a really stellar example, which is self driving cars. So you can see an example for video strife net demo, where they show a machine learning model that can identify from just an image people, roadsigns and cars So this is a really cool example of what you could actually use it for. And Avri, if you go to the next slide, we can actually see it running inside of WSL So now all you need to do is go join the Windows Inside program, go on to the dev channel, and make sure that you install the right graphics driver for your graphics card. And from there, you can open up WSL, and you can run machine learning scenarios directly from a Linux instance. And you can use that all using Linux tools. This is really awesome because there are a lot of people who use Linux for machine learning and AI development scenarios, and very often they might need to Google it, because you might need to go jump back to email, office, word, Photoshop, or other scenarios And then you prefer to use Linux tools entirely in the Linux toolbox scenario Now we can bring those two together and make it a lot more accessible to run your favorite GPU scenarios directly on Windows So, the example here is training and running squeezenet, which is a famous machine learning scenario. And you can see that even though I’m running it in the loose context, it’s stressing the GPU that I have on Windows. Last point here is that if you look with a very sharp eye, you will see that I’m actually running this on an AMD graphics card And so we support both CUDA, which is a very popular machine learning transitional

framework for your actual graphics card driver. We support that, but we also support DirectML, which is hardware agnostic. So that means that you can actually run this as well on Intel graphics card as well as AMD graphics card, as well as in video graphics cards. And so for professionals, you can use CUDA, and for students who maybe want to get started with this feature or don’t necessarily want to do it with their Windows machine, just to do their machine learning course inside of school, they can start using DirectML with any machine with these different graphics card vendors That’s so awesome, all these new features that are coming out. Thank you all so much for joining today. We hope you got to learn a lot about WSL and how to use it for developing Qt apps. If you like, you could follow us on Twitter Our handles are on the top, right. You can check out our docs for more detail on how to get started with WSL. You can also find our GitHub repo. You can store it and submit issues if you’d like. And then read our blog posts. We talk about a lot of our new features and releases there, and these are all the ways that we really like to stay engaged with our community. So now I believe the time is for Q&A and we can dive into the questions Thank you very much. I am going back The most amazing thing is, that from a Windows guy, I learned a new Linux command, namely cowsay. How did I live without that -my whole life? -Yes, very useful, especially for demos So I have a whole list of questions here. I don’t know if you watch the chats in the sidebar. But anyway, let me just start from the top. There’s a question here that says, you have transparent access to both the Linux file system and the Windows file system, what is the recommended way to handle a Linux project? Check out the files on Windows or on Linux So I would say the recommended way here would be to use Git on Linux. We recommend that if you have a Linux project, accessing Linux files and you’re using Linux tools, we recommend that you keep that on the Linux file system itself This is because of the nature of the Windows Subsystem for Linux 2. You get the IO performance and improvements when accessing your Linux files with Linux applications. So I would recommend that you take a look at using Git on Linux, but route it so that it accesses your Git credential manager from Windows. So this is as easy as just writing one command. It’s Git config and then the path to your credential manager. If you go to our docs, at akawsl/docs, there’s a tutorial section there, and we have getting started with Git in WSL. That has all of our prescriptive guidance of, “hey, I want to set up Git and I want to get started with my project What does that actually look like?” OK, next question here is I have Windows 10 build 2004, with WSL, but I cannot see, inside the file explorer, the Linux drive symbol. Is a task for this feature -missing? -That’s a good question. So that feature is available on the latest insider channel builds. So you need to be on the Windows Insider program to access this one. It’s not yet available on Windows 10, -version 2004 -OK, and here is a provocating question from somebody. When will we see Windows as a Linux distribution? Good question. I don’t have the answer to that one The next question here, I guess that relates to the first one we had. Using WSL gives a huge IO speed up, for example, when using Git, but all the performance gain vanishes as soon as we access in native Windows file system Any suggestions? Would you like to target native windows, but still use git from WSL -since it’s much faster than native? -Yes, so for that one, it’s very similar to our answer before. And they identified it right away. WSL 2 has the ISO speedups when you’re using Linux files being accessed by Linux binaries So we recommend put everything in your Linux file system, on your Linux folder, just as I showed in the demo. And then when using Git, you can either use your credentials just in the Linux instance as you like it, or I prefer to connect it to the Windows credential manager. That way it’s simultaneous. You can use the same credentials back and forth between Linux and Windows using Git So I’d like to ask a follow up question to that myself. If I am developing

on Windows, would I actually get some speed up from taking my source files -and put them on a Linux system? -It depends on some different scenarios. So when you’re saying you’re developing on Windows, if you’re using Linux tools to do that, like let’s say you’re using WSL one scenario where I have my project stored inside of my Windows file system, and I’m accessing that with WSL one. I move that to WSL 2, and I move that to my Linux file system. You will see a significant improvement. You’ll actually see somewhere between three to six times for most projects, performance increase, even up to 20 times faster for really heavy things like unzipping a tar ball. And so that is huge. If you do app install, it goes from installing a package in a minute and a half to 12 seconds, which is something that is really noticeable. The other scenario that encapsulates that question is, let’s say if I’m running Windows Tools, accessing Windows Files and then I move it to Linux, that would depend on on the tooling of the project and how well it’s optimized in a windows context versus using Linux tools OK, there’s a question here on OpenGL Like real accessing OpenGL, -is that supported and how well? -So we’re still working on all the details for graphic apps, and OpenGL support is something that we’ll be talking about more in the future. So as of right now, we don’t really have any updates that we can give there, but we definitely have seen community interest in OpenGL support So it’s something that we are keeping in mind as we’re developing this OK, this question here’s saying, are there certain apps supported or what would make -something not run? -That’s a good question. Yes, so in general, we’re not supporting certain apps or anything like that. We’re actually using a Wayland server to do this. And so we power it with X Wayland. So you can use both Wayland apps and apps directly inside of this new GUI app support context, once it’s released. And if an app is supported or not, it comes down to what features we’ve enabled inside of our system and whether we’ve had any oversights. So really we hope to support every app that we can. And once the preview is released, we’ll be counting on our awesome community to say, “hey, this app has this different behavior Why is that?” And then we can look into fixing it. So really, the answer there is, the goal is we want every app to work as much as we can. And we’re probably going to start with a certain number of apps that we’ve identified from the community as high important apps of, “hi, I really want to run this.” Editors is a great example of why someone would want to run a GUI app in a Linux context. We’re going to start with supporting those apps that are like, “hey, these are the ones that we’ve tried and we really support.” But please try everything and let us know what isn’t working Is WSL following Windows releases, or are there any plans on more frequent releases? That’s a good question. Right now, WSL is tied to the Windows release. We ship with Windows. So any updates to the Windows Subsystem for Linux is shipped as a Windows update itself. So that’s why we’re trying to build numbers of windows Overall, we don’t have any updates there on any changes on making it more frequent, or anything like that. But that’s the current scenario. However, we have undocked the Linux kernel itself, and so the Linux kernel is shipped out of the end of that. It shipped with Microsoft Update. And so the distinction here is Windows update updates Windows itself Microsoft update updates things surrounding Windows, like graphics drivers, TouchPad drivers, et cetera. Windows Defender is part of Microsoft Update, for example And so we are now shipping the Linux kernel as part of Microsoft Update So your Linux Kernel will get more frequent releases than your actual WSL instance itself. And that’s so that we can keep you up to date. And you don’t have to worry about coupling your Windows version -with your Linux kernel version -OK, I hope you can still hear me I might be breaking up here There’s a question here that says, are you guys in touch with the Visual Studio team regarding integration between the C++ toolchain and WSL? Yes. I’d love to get a follow-up too. So yes, we are in touch with the Visual Studio team. Romain, I would love to know

what use case are you using that you would want to create Windows binaries from a Linux environment. The nice thing about WSL here, is that you do have access to both environments So in the case of using Windows binary, my question is why would you want to use a Linux environment to do that, when you have Windows right there? Ah a CI Built system. That’s very helpful That’s a really interesting use case So that’s one that we haven’t really talked to the Visual Studio team about, about this integration. But if you expand more on the use case and you ping on Twitter about it, I can definitely bring it up It’s one that I haven’t heard before But we are in constant communication with the Visual Studio Code team. And so, yes, that could be something that we can -represent -A final question here, does the WSL have -any special hardware requirements? -So the only hardware requirement for the Windows Subsystem for Linux 2, is that you need to have virtualization be able to be enabled inside of your BIOS settings So you need to have a virtualization-capable machine. Other than that, no. As long as you can run windows, you can run WSL OK, well, thank you very much for your presentation and your work on this As Romain put it, this is truly a game changer for developers, so excellent work -Thank you for joining us -Thank you all Thanks