this post was submitted on 15 Apr 2024
172 points (96.7% liked)

Linux

47341 readers
1362 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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

top 50 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 5 months ago* (last edited 5 months ago)

You can try JetBrains Rider for .NET, but it's only natural that you won't be able to write Windows applications outside of Windows.

I'm personally impartial to JetBrains for my IDEs on Linux, they work really well and are well supported.

[–] [email protected] 1 points 5 months ago (1 children)
[–] [email protected] 2 points 5 months ago* (last edited 5 months ago)

This is Visual Studio Code which is a very different app to Visual Studio

[–] [email protected] 10 points 5 months ago (1 children)

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.

[–] [email protected] 3 points 5 months ago

Rider gang show up

[–] [email protected] 11 points 5 months ago

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.

[–] [email protected] 7 points 5 months ago* (last edited 5 months ago)

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.

[–] [email protected] 6 points 5 months ago

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.

[–] [email protected] 3 points 5 months ago

I ran a dual boot on my work laptop with Windows and Mint until I was fully ready to transition over to Linux. Might be worth doing the same? Recently got rid of the Windows boot and am now fully on Linux for work development. However, I'm not in the web development space so can't comment on that. I use CLion, Intellij, and PyCharm for work.

My home pc is fully Linux running Fedora which I use for gaming, no issues there running Proton through Steam. Have Lutris setup as well for League Of Legends, although that'll be disappearing once Vanguard is integrated.

[–] [email protected] 1 points 5 months ago

You could always just boot up a windows VM and set up a shared folder to code on Linux/test on windows if your application has issues running on Linux.

[–] [email protected] 16 points 5 months ago (1 children)

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

[–] [email protected] 8 points 5 months ago (1 children)

There's also JetBrains Rider for a .NET IDE that runs on Linux.

[–] [email protected] 4 points 5 months ago

True, not free though and I think IDEs like visual studio proper abstract things away that you should probably have some understanding of

[–] [email protected] 1 points 5 months ago

You can run a Windows VM for anything Windows.

[–] [email protected] 6 points 5 months ago (1 children)

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.

[–] [email protected] 2 points 5 months ago (1 children)

Better to use virtualization for privacy, stability and convenience

[–] [email protected] 1 points 5 months ago (1 children)

I ran Linux in VirtualBox for years but it's just not the same as running from bare metal. The step to bare metal is the key to actually starting to make the move to Linux for me

[–] [email protected] 2 points 5 months ago (1 children)
[–] [email protected] 1 points 5 months ago (1 children)

My kids plays Roblox, it doesn't run as well as it does bare metal

[–] [email protected] 1 points 5 months ago

Did you install the vfio drivers from the Fedora project?

[–] [email protected] 4 points 5 months ago

Fellow .NET dev here, switched to Linux for side-gigs recently.

In general, the experience is a lot better than Windows / WSL. Some general remarks on the setup (relevant mostly for Debian-based distros, so YMMV):

  • Rider / VSCode suggestion is spot on; go with the former if you have cash to spare and you're fine with snaps, otherwise - DevKit can do DevKit things (with the only problem here being lack of .dcproj support in VSCode; can be ignored with proper integration test setup).
  • Containerization of DBMS: by all means, go for it if you have the resources to spare.
  • Possible gotchas:
    • If you're going to use MS apt feed for .NET runtime / SDK, set up apt preferences to point to their feed for dotnet packages. Otherwise, you're in for a bad time when running updates.
    • Docker: personally, I recommend Rancher Desktop for this purpose, as Docker Desktop on Windows left a bad taste in my mouth. If you're fine with the latter, it's up to your own preferences then.
    • Test containers: if you do use it with anything else than standard, bare-bones Docker setup, you'll need a custom config; stumbled upon that the first time I tried running integration tests.
[–] [email protected] 4 points 5 months ago

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.

[–] [email protected] 16 points 5 months ago

VSCode or JetBrains Rider are good options for .net development, both available on Linux.

[–] [email protected] 30 points 5 months ago (4 children)

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.

[–] [email protected] 2 points 5 months ago (1 children)

Exactly what i did. Help also to not mix work and private life by having 2 distinct VM: one with ArchLinux for Gaming/Private apps, one with win10 for work

[–] [email protected] 1 points 5 months ago

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.

[–] [email protected] 2 points 5 months ago

Just wanted to add that no one should ever NOT be using a vm as their dev machine.

[–] [email protected] 10 points 5 months ago (1 children)

And this is why I didn't comment. I knew someone had already suggested the VM way. This is the best way to keep your stuff separate from work related.

[–] [email protected] 3 points 5 months ago* (last edited 5 months ago) (1 children)

I don't like VMs because I need to allocate memory upfront for it, and considering it's a Windows VM and depending on the dev work you're doing on it you might need to give it 10Gb+.

If it's at all possible for OP I'd recommend getting a separate physical workstation and then just remoting into it with your Linux machine, if you use VSCode the process is pretty much seamless, you use VSCode from your Linux machine normally while all the work is being done on the remote machine.

[–] [email protected] 1 points 5 months ago (1 children)

That's a great idea, can I use the 2 screens of my PC doing that?

[–] [email protected] 1 points 5 months ago

Not sure what you mean exactly. The Windows workstation machine could be accessed remotely from anywhere. I mean sure you're gonna have to hook it up to a monitor to set it up but after that you shouldn't have to access it directly, at least not often.

[–] [email protected] 3 points 5 months ago

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.

[–] [email protected] 2 points 5 months ago (1 children)

You can do .net on Linux but Windows is much better for that. I recommend using Windows for work and Linux for everything else.

[–] [email protected] 1 points 5 months ago

Or just run Windows VMs

[–] [email protected] 3 points 5 months ago (1 children)

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.

[–] [email protected] 1 points 5 months ago (1 children)

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.

[–] [email protected] 1 points 5 months ago* (last edited 5 months ago) (1 children)

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.

[–] [email protected] 2 points 5 months ago

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.

[–] [email protected] 4 points 5 months ago (2 children)

Tips for switching to linux:

  1. Determine if your hardware will play nice with linux. If you have Broadcom or Realtek wifi/bluetooth be aware that linux doesn't always have great drivers for those. Nvidia gpus don't always play nice with wayland.

  2. Certain anti-cheats for games just don't work on linux.

  3. (might not apply to you since you're in IT) Try to avoid using obscure linux distros or bleeding edge distros like Arch. You'll run into issues and not many people will be able to help. Debian, Fedora, and Ubuntu seem to be the popular distros rn for most people.

[–] [email protected] 2 points 5 months ago* (last edited 5 months ago) (1 children)

You'll run into issues and not many people will be able to help. Debian, Fedora, and Ubuntu seem to be the popular distros rn for most people.

Agree with the broader conclusion that a first time linux user should probably avoid gentoo, arch, whatever, but its not because nobody will be able to help you, more just that the expected level of polish is a bit less.

It isn't considered a huge inconvenience to have to use the CLI or edit a config file by arch users, but for ubuntu especially they are more bent on building something that "just works" for most people (with the tradeoff being it's a commercially exploited product, and the innards of GNOME and the like tend to be more of a black box and less tweakable than say, a tiling WM)

But if you do want to dive in and learn how more of the internals work and how to configure things at a lower level, you will find a lot of help with issues, and very detailed documentation for a lot more things in Arch, vs Ubuntu. I find the ubuntu community online to be sort of a middle ground between the detailed technical help I've gotten from Arch communities, and the "here's some magic steps that worked for me, no idea why" type of thing that is prevalent on windows support communities.

Which isn't to say ubuntu people aren't helpful, but the critical mass of users isn't the only thing that matters, it also helps if the users are knowledgeable, and friendly (some arch people fail at this, though I've lucked out and really not had any bad experiences)

[–] [email protected] 2 points 5 months ago

I meant more that, when it comes to newer bleeding edge software, some of the bugs introduced won't be as well recorded and people won't know exactly how to remedy your specific problem. Whereas with debian/ubuntu or fedora, often its as simple as typing whatever problem you're having into a search engine, plugging some junk into the terminal, and it fixing the problem 90% of the time.

But I agree with your comment overall so have my upvote! :)

[–] [email protected] 5 points 5 months ago (1 children)

I don't agree with the 3rd take. I used both Debian and Arch based systems. Both break equally often (quite rarely), but when smth breaks in a Debian based system there's little support or help, while on Arch everyone is willing to help you and you have Arch wiki, which is in a league of its own. Also thanks to AUR, there so much more software available out of the box on Arch

[–] [email protected] 1 points 5 months ago

I'm actually switching my mom over to Manjaro today specifically because of the AUR. The reason she hadn't switched before was a very niche embroidery program that we were both convinced would be a Windows exclusive, then two days ago I found out that someone had packaged it earlier this year!

load more comments
view more: next ›