Moving to a Linux distro for dev

I'm a long time Windows user who has experience with WSL. Last year, I needed a laptop for university, and out of laziness, opted for a Macbook since, although they're expensive as hell, are reasonably reliable.

Since using the mac, I've absolutely fallen in love with it over Windows. Note that I refer to the non-iOS specific aspects. After not touching my desktop for several months, I now see that I absolutely hate Windows even more. I would like to move my desktop to a Linux system some time in the future. However, my education is limited, and so I'm here to ask for help.

Currently, I'm a student in Mathematics and Computer Science. But outside that, I am, for the most part, a programmer. I rarely game, but I would like the option for the rare occasion that I have the time to do so.

I've grown comfortably with the command line, through my in-depth knowledge of lower level knowledge is limited. So, I feel I'm comfortable enough to extend the possible domain of my options.

I would love to hear recommendations and suggestions. I'm also open to other options such as NixOS, but that would require some research to learn more, which is fine. I'm not doing this soon.

If you could provide any links and resources that I can follow to continue learning, especially if relevant to your suggestions, I would be deeply appreciative!

My Mac is the most Linux-like thing I've used for so long, and it's been so, so much easier to work with compared to Windows (I hate Windows PATH limitations so much).

Thanks, all ❤ 🐧

possiblylinux127 ,
@possiblylinux127@lemmy.zip avatar

Fedora

some_guy ,

My driver is MacOS but I use Linux for things like servers and hobby projects, so I check these threads just to keep up on what's happening in the space. I think people often recommend Mint for people who like MacOS, but I'm sure someone will correct me if I got that wrong.

Welcome to the club. It's pretty great.

Nisaea ,
@Nisaea@lemmy.sdf.org avatar

The website https://linuxjourney.com/ is often recommended to new Linux users, for good reasons. Since you're already experienced in CS and WSL you'll find a lot of things you already know, but there's always things to learn for everyone in there. Cheers! ^^

unionagainstdhmo ,
@unionagainstdhmo@aussie.zone avatar

There's a lot of people here promoting whatever crazy niche distro they use and I'd caution against some of the options presented here. I'd recommend the following criteria when choosing a distro for development (depends on the development but I'll assume since you're study computer science something like Python, C/C++ where distro packages are important):

  1. Up-to-date packages: You don't want to come across some bug in a library that was fixed 2 years ago or miss out on the latest features or standards
  2. Stability: You likely don't want to rewrite your code to account for a major library update immediately because otherwise your code won't run - it also makes it easier to share with other people as you can target a specific OS
  3. QA: Possibly having maintainers that keep an eye on bugs and packaging mismatches to create a coherent system is one of the greatest features of the Linux desktop. For example I had an Arch update stuff me around for an update where the maintainer of the CUDA toolkit package did a major upgrade without any coordination with the maintainer of the proprietary nvidia driver package, making CUDA unusable.

Here's a quick list of how distros fit these criteria:

  • Arch: (1)
  • Debian 12: (2, 3)
  • Linux Mint: (2, 3)
  • Ubuntu LTS: (2, 3)
  • Ubuntu 24.04: (2, 3) - Some packages weren't updated to their latest versions like KDE Plasma
  • Fedora Workstation 40: (1, 2, 3)
  • Fedora Silverblue 40: (1, 2, 3+) - My personal choice however, it's a bit different from normal distros, see below
  • NixOS: (1, 2) - You can define specific package versions but with the large repos I doubt there is much QA going on
  • Debian Sid: (1) - This is the development branch of Debian
  • OpenSUSE Tumbleweed: (1, 2, 3+) - Very advanced automated testing
  • Void Linux: (1, 2, 3-) - Claim to be stable rolling release, updates come slowly after some testing

Note on atomic distros and toolboxes/distroboxes:

  • I personally use Fedora Silverblue with a few distroboxes (basically docker containers you can interact with) for development (Fedora) and Steam (bazzite-arch-gnome).
  • With an Atomic distro the root filesystem is not mutable - you don't generally install packages there but setup an aforementioned container and install you're environment in there.
  • toolboxes and distroboxes are usable on any distro so your desktop environment and any applications like Steam, Firefox, etc. are able to be updated to a different cycle/philosophy to your development tools.
  • The main advantages of an atomic distro are:
    • Fast updates that you download while the system is running and on next boot you will immediately be in the updated environment (no need to wait for updates to apply);
    • Everyone runs the same configuration (or very close to) which is why I gave Fedora Silverblue a + in the QA category. This means you are less likely to come across rare configuration issues which are difficult to test (i.e. there is less entropy in the system)
  • The main drawbacks however:
    • It's a relatively new paradigm on the Linux desktop (despite being basically what Android does) so there's not as many people using Fedora Silverblue as Fedora Workstation.

Desktop environments:

  • On MacOS and Windows you only get one choice as to how the desktop looks and feels, here we have a few choices:
    • GNOME - the most popular choice and is the default for most major distros, with strong backing from major players like Red Hat. It implements a completely new way to interact with your computer borrowing behaviour from both Windows and MacOS. While not terribly customisable (at least not through settings, extensions can do pretty much anything), it's generally not necessary if you just want to focus and get stuff done
    • KDE Plasma: probably the second most popular choice, while not the default for the major distros there are versions like Kubuntu (Ubuntu), Fedora KDE Spin (Fedora Workstation) and Fedora Kinoite (Fedora Silverblue) which implement it. By default Plasma has a Windows like behaviour however it is customisable to behave pretty much however you see fit.
    • Cinnamon: Not as popular - used by Linux Mint to provide a familiar experience to migrating Windows users.
    • XFCE: Also not as popular but is a good lightweight option
    • Tiling Window managers - not a full dekstop environment like you would expect from the other options but provide a unique keyboard-based workflow making use of virtual desktops/workspaces and window tiling rather than floating windows.

I hope this comment is helpful for you, and the choices are really overwhelming - but worth it, and I'd recommend playing around with whatever you've got time to do to find what works best for you. If you're planning on running on an Apple Silicon based device most of these distro options are unavailable, I'd recommend looking into Asahi Linux based distros - don't use Manjaro as they aren't endorsed by the Asahi project

Laser , (edited )

NixOS: (1, 2) - You can define specific package versions but with the large repos I doubt there is much QA going on

It depends on the nixpkgs channel you use (I'm also using the term for flakes here, though technically these are then called inputs). The main channels, those being NixOS-stable whatever the current version is at the time and NixOS-unstable have a rather big set of packages that must be built successfully before users get updates, including the tests defined in the build system plus sometimes distribution-specific tests, though these are often rather simple, like start program and see if its port is open. Even more, when a library gets updated, all programs and other libraries depending on it get rebuilt as well, including all tests.

Now what if a package outside of that scope breaks? Most likely, your new configuration won't build, so you're stuck on an older but working configuration, or it does build, but something doesn't work. But I'm the latter case, you can still choose to start the older working configuration.

Also the more complicated packages have very dedicated and capable maintainers from my experience, sure the smaller stuff is often updated mostly automatically with merge request created by bots and just the final merge approved by the maintainer, but the big infrastructure is usually tested quite well.

As a downside, this can sometimes lead to longer periods without updates when a lot of stuff has to get rebuilt and something doesn't work (multiple days, but not weeks). You can then switch to another set in case the problematic packages don't affect you, or just wait. However, saying there's little QA is unfair, in fact from my experience there's more QA in nixpkgs than in most distributions.

I don't recommend NixOS to new users because it abstracts a lot of stuff away and makes use of mechanics that are helpful to understand first. But if you're comfortable with Linux, NixOS is a great distribution that even on unstable works very well. Then again, it allows specific packages to depend on very specific versions of other packages, which is partially the reason you'd use a stable distribution.

unionagainstdhmo ,
@unionagainstdhmo@aussie.zone avatar

I've never actually used NixOS (I did use Nix once to save my ass on Arch because of the aforementioned CUDA thing which I will not let go), but my reasoning for it not having as good QA as Fedora Atomic Desktops is the large number of possible configurations to test for, as well as testing GUI programs. But I understand the way the project is being developed and designed with things like flakes there is certainly potential for much more stringent QA, however, it still feels a bit like an "in development" thing that's probably not at the stage where users can expect to use it without coming across things they can't do etc. (Not that Silverblue doesn't have that).

So I agree it certainly has its uses.

LeFantome ,

It matters a lot if it is Apple silicon or Intel. If Apple, you want Asahi Linux for sure.

On Intel, you have a tonne of options. Pick the desktop environment you like and pick the distro after that. GNOME, KDE, and Cinnamon are your realistic DE choices.

COSMIC is looking really great but it is not quite ready.

I would personally stay away from both Ubuntu and Manjaro but most other choices are fine based on your preferences. Linux Mint is probably the best choice if you like Cinnamon.

I like EndeavourOS myself.

aspitzer Bot ,

dont start with nixos. it is not friendly. Ubuntu is probably the best/easiest starter distro. that or fedora. go with the most mainstream so you have the least friction. Later you will be trying all the distros for fun.

InternetCitizen2 ,

I was a physics student and going to have to say Ubuntu as well. I think looking at Mint and Pop are also nice picks. Besides Ubuntu being pretty good OOTB most online resources use it as an example; that is very valuable when still astudentt.

azvasKvklenko ,

If you want to learn Linux, Arch is the perfect balance between ease of use and DIY aspects. It now comes with an installer, but installing it manually will teach you the basics of how Linux systems are built and configured. It also comes with amazing documentation that makes it relatively easy to setup and once you do that, it doesn’t require much tinkering or changing stuff in order to use it.

Nix is pretty hardcore as for a new user. If you’re ready to learn entire functional language to manage it effectively then go for it, but I’d recommend something more traditional for first steps.

If you want to game casually, well in this day and age gaming on Linux is pretty good with most games running just fine. There’s problem with some popular online multiplayer games due to anti-cheat systems, but other than that mostly everything runs well with Proton or Wine.

Keep in mind that MacOS is also different than Linux despite also being UNIX-like. On Mac it’s all controlled by Apple, so things generally play nicely together due to tight integration and centralized development. On Linux many components are independent pieces of software that also quite often have replacements and you get different combinations of those depending on which distro you pick. Don’t worry, it’s also standardized to some extent, and while it’s not necessarily straightforward, once you feel comfortable (and you don’t face any issue with drivers/hw support), it’s really nice to use.

737 ,

Arch, OpenSUSE TW, and Debian Sid are pretty good. As a desktop/WM I'd recommend Hyprland, Plasma, or DWL. Hyprland and DWL take some time to set up and get used to though. GNOME is sort of a pain in the ass, so I wouldn't recommend it unless you use touch gestures a lot.

ichbinjasokreativ ,

Gnome is the best of the full DEs for productivity, because it just doesn't get in the way

HumanPerson ,

If it is a newer Mac (Apple silicon), asahi is your only option that I know of. It is good but idle and sleep power management leave something to be desired. If not, I would recommend debian. It is stable, so you don't have to worry about an update breaking it right before a class or anything like that.

Andromxda ,
@Andromxda@lemmy.dbzer0.com avatar

Aurora has a Developer Edition, it's a great system in general. It's based on Universal Blue, which is built on top of Fedora Atomic, giving you a very stable and reliable experience. It features the KDE Plasma desktop environment, but you can go with Bluefin, which is basically the exact same thing using GNOME.

lemmyreader ,

After not touching my desktop for several months, I now see that I absolutely hate Windows even more.

Welcome to the club :-)

Currently, I’m a student in Mathematics and Computer Science.

In that case I would certainly toy (but maybe not daily drive) with Nix or NixOS. Its concept is stunning.
For daily driving Linux it depends on your hardware (x86 or arm).
Debian is rock solid as daily driver on x86. If you need some newer software you can use Flatpak or the Nix package manager, or use distrobox or toolbox though beware of its drawbacks.
Another good choice is Arch Linux. Since a while the install iso comes with an installer so that you no longer have to read documentation. The Arch Linux wiki is very often a superb source of information.
But depending on your hardware there's Asahi Linux : https://asahilinux.org

Shareni , (edited )

It's not clear what device you want to install Linux on.

If it's an apple arm you're pretty much limited to what Asahi is doing (Fedora now afaik).

If it's a regular amd64, I'd suggest something more stable like MX, Mint, Suse leap, etc. You can use an alternative package manager to keep what you need fresh, but your base system won't change for years.

I'd maybe suggest starting first with nix and home-manager while you're still on macos. Do note that I haven't used it on mac, but the idea is for it to be cross platform. You can start adding your packages to the list, and have everything you need immediately when you start using Linux. That's going to be your best option for programming, but it's more difficult. This should help you out to get started

As for gaming, I wouldn't have high hopes on arm. You can use lutris to run windows games for example, but if your device also needs to emulate a different CPU architecture, it wont be happy. Docker had serious performance issues before they introduced arm base images.

bigmclargehuge ,
@bigmclargehuge@lemmy.world avatar

Debian might at least be worth a look. It's been around for ages and is incredibly stable. No, it's not bleeding edge, but there's always Debian Sid (unstable).

kbal ,
@kbal@fedia.io avatar

Even if you are going to do a little bleeding edge development Debian stable can be a good solid base to start from.

rotopenguin ,
@rotopenguin@infosec.pub avatar

Use Trixie instead of Sid. With Sid you're getting new packages right as they come out of the oven. If Sid users don't get burned too badly, the packages go into Trixie two weeks later.

2xsaiko ,
@2xsaiko@discuss.tchncs.de avatar

Take something with KDE Plasma. I have mine set up to work as close to Mac as possible (command key as the main modifier, all the Mac shortcuts for the window manager and KDE applications, top menu bar, dock, probably more). Took a bit to set up but now it doesn’t nearly throw me off as much anymore when switching between the two.

eugenia , (edited )
@eugenia@lemmy.ml avatar

For your desktop, I suggest you install Linux Mint (Edge edition, to make sure the newer kernel included there supports your hardware better). After installing it, right click on the panel, and install the 'Cinnamenu' applet (it's available for download from the window that opens when you click Applets). Then, place it where you want after enabling "panel editing", and then right click the new menu to customize it as you like. Cinnamenu is a more modern-looking menu than the default Mint, with larger icons. Please note that in June or July, there's going to be a brand new, major version of Mint. Think of Mint as how Windows should have been, a better version of it. This is my Linux Mint laptop: https://files.mastodon.social/media_attachments/files/112/253/256/932/509/491/original/6183bb790dcb8365.jpg

Now, if you want something that is closer to MacOS' look and feel, then you would need to install Gnome, and use Gnome extensions to enable the dock to stick to the main desktop. For a Gnome distro, there's Fedora 40, the new Ubuntu, or Debian (IMHO, the most stable of the lot, but slightly older software version). This is my Gnome desktop: https://files.mastodon.social/media_attachments/files/112/349/393/342/603/119/original/3c3c5c7e35ac726e.png

And if you have a large hard drive, feel free to install 3 of these (e.g. Mint, Debian or Ubuntu with Gnome, Fedora KDE), to test drive them all. They can all happily live next to each other in separate partitions. Just make sure you create a /boot partition (this holds the bootloader for all OSes), and then 3 large ones to put the / (root) partitions of each distro (these will hold the actual OS for each).

  • All
  • Subscribed
  • Moderated
  • Favorites
  • linux@lemmy.ml
  • random
  • All magazines