I really want to switch to Linux, up to this point there were two things keeping me on Windows, gaming and work.

Gaming nowadays is a lot easier than a couple of years ago thanks to Valve and Proton, so that’s not a problem anymore; with the other one I don’t know if I can make something work enough and that’s why I’m asking here.

I work as a fullstack software developer with windows products I don’t fear for the frontend part because typescript, angular, react, … those I know I can run on linux with no problem on VS Code; for backend thought: dot.net, visual studio, sql server, … I think there is no Visual Studio for Linux and I don’t know if I can run & debug .net 8 applications on a linux machine? I can use docker for things like databases. Does anybody else has a similar scenario and things that had to overcame? Tips, problems that I may not see now before making the switch, and solutions to my current problems are welcome

  •  Eugenia   ( @eugenia@lemmy.ml ) 
    link
    fedilink
    English
    471 month ago

    Instead of trying to run heavy and complex apps on an OS that were never designed for, use Windows for work, and then use gaming and your personal life on Linux. Another thing you can do is switch the kind of programming you do, so it’s more linux-related, so overtime, you can only have Linux machines. But for the time being, if you’re doing windows programming, use a windows machine for work.

    • This sounds like the most reasonable answer here in this thread. I couldn’t have said it better.

      Preferences don’t matter if you get paid for it. If your job demands working with software designed for Windows, then use Windows. If you don’t do that, you have to find workarounds that cost time and therefore money, both if you are self employed or have to work for a company.
      Either you, or your boss, won’t be happy long term.

      If you like Linux more, then use it in your free time, or maybe consider switching your orientation for development to that platform.

      Same for development for Apple stuff (e.g. iPhone apps). Then you’re stuck with MacOS too. Or if you have to use certain CAD or Adobe software, then you’re stuck on Windows/ Mac too.

      Software availability is great on Linux, and today, you can get most of the stuff working on it, even if it isn’t designed for that. But is it worth it that time and effort? For me, it wouldn’t.

  • For the work part in particular, you may find that a virtual machine will get the job done pretty well. With modern CPUs there’s basically no overhead, so it’s often easier to just run the OS you need in a VM.

    You can just run it in the background, run your .NET and SQL server and stuff, possibly VSCode remote into it. PowerShell over SSH. If you need to run a GUI application, you can just RDP into it. FreeRDP has a cool feature where it can RDP a single application so it pops up as any other app on the host. Works great when you just need the database’s GUI or whatever.

    With virtio drivers and everything, it will be essentially as fast as if native. GUI will be slow because of software rendering, but the point is to use it as a server and only use the GUI as necessary, and for server stuff RDP isn’t too bad given it’s basically localhost network.

    There’s also the fun but painful world of VFIO and passing through a real GPU into the VM and feeding back the video to the host with Looking Glass. It’s so good you can game on that (anticheat still won’t work though, they don’t like VMs), so if RDP bothers you that’s an option. Although in my experience, Visual Studio is just as slow and buggy natively, so I wouldn’t bother and just RDP.

    If you add virtiofs to the mix, in theory you can share the code folder and use VSCode on the host and compile on the guest, or even compile on the host and run on the guest. Or send compile commands to Windows over SSH from VSCode. I have my entire Steam library (and Proton containers) on virtiofs and it works perfectly, so I have to imagine a code project should work nicely as well.

    Virtual machines are an awesome tool. There’s also the benefit of keeping all the work stuff in a big isolated container. If you have multiple projects you can make multiple VMs and not worry about one project needing version X and the other version Y of whatever.

      • It’s even nice to subdivide some activities. I have a disposable one for running sketchy stuff, two for gaming (Arch and Windows), a few work ones, a few dev ones.

        They’re just so cheap to run these days, I always have one or two running at all times.

    • Has Virtiofs matured lately into something that can be used day-to-day? I ask because I think the virtio stuff will be better for Windows virtualisation in the long-term, especially when VMware’s future is not certain, but I heard folder-sharing on Windows guests was pretty bad from Lemmy recently, and a few years ago I tried it and yeah, I have to agree.

  • I am a dotnet dev using Linux as my primary OS. Dotnet core fully works on Linux now, there’s a native Linux dotnet cli that works almost identically to the windows one

    SQL server I think has been able to run on Linux for a while anyway

    You’ll have to learn to live without full fat visual studio but honestly you’re better without it anyway it just stops you from learning the stuff you really ought to know by doing it all for you

    VSCode is a pretty good replacement and actually nicer to use if you know what you’re doing, neovim if you want to end up spending all your time configuring it (said as a neovim user)

    Gaming is absolutely not an issue unless you play certain competitive games with weird anticheat (valorant for example)

    As others have mentioned, docker and VMs exist if you have a reasonably powerful machine so nothing should be completely inaccessible to you anyway, on the windows machine I have to use at work I ironically do most of my dotnet dev on a Linux VM anyway

  •  bruce965   ( @bruce965@lemmy.ml ) 
    link
    fedilink
    10
    edit-2
    1 month ago

    Yes, you can develop in .NET on VSCode and the debugger works on Linux too.

    There is a Docker version of SQL Server which funnily enough is equivalent to the enterprise version (rather than limited like SQL Express). You can use it for free as long as it’s for development purposes only.

    There is no SQL Management Studio though.

    One option would be to use PostgreSQL instead. Entity Framework makes it almost free to replace the database anyways (unless you are doing some db-specific things).

    There are some other minor annoyances or missing features, it might bother you; but depending on how you are used to work, you might not even notice. But, hey! you are on Linux now, you get all the benefits of a UNIX operating system, it will be worth it for sure, right? (Yes, imho)


    As for gaming, I only do light gaming so I probably don’t count. I use Heroic Launcher and it works wonderfully out of the box 50% of the time, the remaining 50% you can probably make it work as good as on Windows if you are persistent enough.

    Oh, and sometimes some games run better on Linux than on Windows, but I would say most of the time they run a bit worse.

  • I’m also a C# dev and I have been using Linux for years now.

    VS Code was pretty much unusable in the beginning when compared to VS. However, nowadays VS Code is very capable at syntax highlighting and debugging.

    There is no support for WPF and Forms applications on Linux, since I mostly write web and console applications I don’t mind running a Windows VM for those few exceptions. There is also no support for Maui applications but as things are going right now it seems to not be going anywhere anyway.

    Since we mostly deploy to Linux servers nowadays anyway it has actually made my job easier since I can run Docker without having to fiddle with it every day like I had to on Windows.

  • If you don’t play the latest game titles with DRM you should be good to go on Linux: Steam runs great in a flatpak sandbox.

    I don’t know how compatible mono is with dotnet. Interestingly, some game launchers need it and protontricks can handle many issues. Have look at protondb. Back to work: Someone needs to confirm whether MSSQL server can be run on Linux, but I am almost sure that you won’t be able to run the gui of it. But you can connect to it using DBeaver (Java-based) or a VSCode plugin. As for C# development on Linux, I don’t know.

    I wish I could switch to Linux at work, too, but standardization of work environments seems to be the problem. I would even consider Ubuntu 22.04 LTS if my employer woul allow it. Last time I asked, time was the real reason. Time savings in the long run, currently don’t matter. I will ask later and if they still tell me, it’s too risky, I will look elsewhere.

    Our dev setup doesn’t even have the constraints you have for your work. It is all docker-based with Ubuntu Linux containers. It would run faster on Linux even if we could switch to WSL2. And I would argue, that Linux is more standardized than Windows.

    I hope you get your stuff running on Linux; market share needs to go up so that all the managers don’t fear it. (:

    • A lot of times the DRM issues can be fixed by using a cracked version. The real problem is the games that force the rootkit based anti cheats that really just make the cheaters switch to hardware based cheats instead of stopping them.

  • I use Jetbrains Rider on Linux which runs just fine. It takes some setting up to install .NET but it didn’t take me too long. Except for pre-release versions, that might take more trial and error.

    Overall I’m pretty satisfied with the switch to Linux and I haven’t had any major issues. Not with video games, either. Protondb.com is a good website to see what games do and don’t work on Linux and you may need to add launch options to get specific games to work or switch to a specific version of Proton.

    It’s up to you to decide if it’s worth it for you or not. You could try a dual boot setup first.

  • Even if you can run your .net code on linux, it’s better for you to run on the actual platform you’ll be deploying to. You could dual boot just for work (that’s what I do) or try running in a VM, but I assume your work is hard enough without generating new friction.

  • I never thought I’d say this but… in your case, for work at least I would actually stick to Windows! It looks like most of your tools are from Microsoft and that the environment they will normally run on is Windows. It seems most pragmatic to stay there.

    For gaming though (as I’ve argue few times and can be seen from my history), Proton works well, even for AAA games, unsupported (officially) games and VR. ProtonDB helps you to quickly assess if that’s the case for your specific games.

    Anyway, what I would suggest though is step back, i.e WHY do you want to step away from Windows. If it’s technical then “just” dual boot and properly separating fun from work might be sufficient. If it’s more moral and ethical, then earning money from tools that are NOT from Microsoft to gradually decouple, remove the dependency on it, seems like the “right” thing to do.

  •  Swarfega   ( @Swarfega@lemm.ee ) 
    link
    fedilink
    English
    41 month ago

    Get a second drive and install Linux on it. You can then flick between the two on boot. I’ve done this and now booting into Arch more than Windows. I’ll still boot into Windows for reasons but Arch is my main OS now.

  • don’t know if I can run & debug .net 8 applications on a linux machine

    The .NET SDK is cross-platform. Try install it then run dotnet run in the same directory as your project file (.csproj).

    Most .NET APIs are cross-platform, but there’s a few that still only work on Windows, and it’s also possible to write code that only works on Windows, like using P/Invoke to call a Win32 API.

  • I don’t play games, but I do plenty of dev work including a lot in Visual Studio & SSMS. I always have a few Linux boxes running & try every few months to live on Linux rather than Windows.

    Visual Studio can be swapped out for Rider. Rider is quite different feeling than VS, but I guess a lot of devs use another Jetbrains IDE of some kind, in which case it’s a fairly easy switch.

    SQL Server runs happily on Linux. But SSMS is harder for me to do without. I have Aqua Data Studio & Jetbrains DataGrip, but they don’t feel as seamless as SSMS.

    In the end though, it’s hard to beat Windows + WSL2 now that Windows VSCode & Jetbrains IDEs seamlessly connect to Linux projects. And if you enable nested virtualization and MAC address spoofing then Hyper-V can run anything WSL can’t.

    Usually I end up moving back to Windows because of font rendering. I far prefer Windows cleartype font rendering on 2160p desktop screens. One day Linux fractional scaling will be perfected or 200+dpi desktop screens will become affordable. Then I might stay on Linux.

    • Usually I end up moving back to Windows because of font rendering. I far prefer Windows cleartype font rendering on 2160p desktop screens

      I’m surprised this is still an issue. I remember it being an issue when I used desktop Linux 15 years ago. At the time, Linux devs didn’t want to risk accidently infringing on Microsoft’s ClearType patents, so the text smoothing techniques had to be completely different.

      Those patents all expired in 2018.

      • Linux font rendering is generally very good now, so I think they’ve gotten past that. Apart from a System76 desktop, which was terrible, I haven’t hated the rendering for many years. It’s just that Microsoft’s font rendering (maximizing clarity at the expense of destroying the font metrics) is exactly what I want to look at all day if I’m staring at code. When I look at screenshots of vscode on Linux and Mac the code looks beautiful, because the font renderer hasn’t beaten the characters with a big stick to make them fit the pixel grid, but when I switch back to windows after using Linux/Mac then it feels like someone fixed the focus and de-blurred everything.

        And now that I can have as many Linux installs as I like running concurrently via WSL2, I get to use Linux all day without losing the stuff I like about Windows.

        • when I switch back to windows after using Linux/Mac then it feels like someone fixed the focus and de-blurred everything.

          I haven’t used desktop Linux in a while, but I feel the same about MacOS font smoothing. It’s way too blurry. I’m not sure why people like it.