I just want to say right off the bat that I totally support you in this 100% and am happy to offer help and advice and all that whenver you want, you can message me anytime etc. I use the shell for everything and use proprietary software all-but-never—sometimes I play proprietary Windows games in Wine but that’s it I think. You can totally do it, and I actually think it’s really fun and a way nicer way to use the computer than what Windows or macOS provides (macOS at least has a POSIX shell but it’s not quite as friendly as the Linux one). Maybe I should write an article on here about getting into the Linux shell for beginners? There’s various tips and tricks and things it helps to know when you’re starting out.
Also, I don’t know if you code or have any interest in picking it up, but in case you do, it really allows you to get the most out of using FOSS. It’s truly awesome to be able to write patches for software when you hit a bug or there’s a feature you want it doesn’t have or anything like that—it’s so empowering! you’re not helpless anymore!—and you can even send the patches upstream and make the world a better place and it will give you warm fuzzy feeings. I’ve had patches accepted into Firefox, the Haskell SDL bindings, the Vim code completion and static analysis engine YouCompleteMe, etc. so it’s definitely not beyond the reach of a random person. Also, if you want to write a certain kind of program, reading the source code of similar existing programs is an excellent way to learn how. If you don’t code but are interested in getting into it I can definitely help out in that regard too.
If there’s a particular distro that makes running Windows applications easier I don’t know about it, but generally it’s not too hard in any distro. There’s Wine of course, and you can also run a full-blown Windows VM easily using QEMU. The one difficulty with VMs is that you can’t easily get native-like graphics acceleration without doing GPU passthrough, and you have to be able to give the passed-through graphics card totally over to the VM (meaning it can’t be the graphics card you’re using to display your Linux environment). If you have integrated graphics on your CPU, and a separate graphics card, you can use one of those for the VM and the other for Linux, but how well that will work out obviously depends on what you want to do with either one. The VM can still use your graphics card for accelerated graphics even without GPU passthrough, but the overhead imposed by the VM can mean that graphics-intensive applications run somewhat more sluggishly than they would on bare metal. Depends a lot on the application and the hardware and stuff of course.
Wine, on the other hand, can give really excellent, native-like accelerated graphics performance, because it’s a much thinner translation layer than a VM is. However, it sometimes takes a lot of mucking-about with Wine to get an application to run that well. Often things work fine right away, but when they don’t, it helps a lot if you’re comfortable, like, trying out different versions of Wine, using the stable vs. staging version, trying out third-party patch sets, etc. A distro where the package manager will help you build things from source, like Gentoo or to some extent Arch, can make that somewhat easier, especially if you want to try patching Wine.
Dual-booting means that you can run Windows applications on bare metal when you need to, but I find it to be something of a hassle. This is probably very personal. I tend to have like, hundreds of windows open and all sorts of stuff going on all over the computer (I use a tiling WM—I think otherwise it would end up being an unmanageable mess, and it almost is anyway). Because of that I don’t like to have to close everything and shut the computer down more often than absolutely necessary, and I never look forward to having to use Windows in any circumstance, so in practice this means that if I have a Windows partition it just ends up gathering dust, even though in theory it might be useful. You may find it easier to manage.
Yeah VirtualBox is great for that! It’s extremely easy to test drive Linux distros with it. I sometimes encourage Windows or macOS users who are curious about Linux but not sure how far they really want to go with it to try out using it in VirtualBox, also, since you can kind of ease yourself into it that way. If I recall I used it in VirtualBox for a year or two before making a dedicated partition; I decided to make the partition when I realized I was spending almost all my time in the VM and was getting tired of having to pass files back and forth and things.
I use Gentoo, and have for I think about four or five years now. Before that it was Arch. (I run Debian Stable on my web server, also.) I started out using Linux on like a 2010ish MacBook and that wasn’t too bad—the main thing I remember being awkward was WiFi and Bluetooth, because it has a Broadcom chipset for that and at least back then Broadcom had kind of terrible Linux support. That’s probably still something to consider when getting a laptop I’d guess—WiFi cards can really vary in how Linux-friendly they are and it’s worth doing a bit of research up-front to check about that. I use a desktop tower these days with a wired connection to the router so I don’t have to worry about that now.
I’ve thought of writing an article about picking a Linux distro, too, because which one is best for you really depends a lot on your preferences and desires and things. If you’re interested that would definitely motivate me. I think just about every distro is right for someone.
If you’re curious about why I like Gentoo, it’s a source-based distro, meaning that you receive packages from the Gentoo servers as source code and compile them locally on your own machine. Its package manager, Portage, takes care of this for you by and large, and is awesomely configurable. It has a cool feature called “USE flags” where you can specify keywords for features you want enabled in packages generally in a system-wide config file, like Ruby bindings or X11 support or FluidSynth integration or whatever else, and it will automatically enable those features at build time in packages that support them. In binary distros, where you download packages as already-compiled binaries, sometimes the distro maintainers won’t have enabled certain features you might want (FFmpeg comes to mind as a common sticking point because it has a huge number of optional dependencies—Gentoo lets you build the FFmpeg you want just by flipping switches on and off). My Gentoo environment is amazingly stable, also, because everything is built with an awareness of the other packages on the system and what their build configurations are, and even the underlying hardware on my system and my kernel build config and all that. The Gentoo maintainers are also very professional and responsible and all that (which I can’t exactly say I feel about the Arch team to be honest, at least at the time I switched away—not that Arch isn’t a great distro on the whole, it’s very cool too).
Anyway! I wish you the very best on your Linux journey and please feel free to ask me if you have any questions at any point. ^^
i did fedora on one of the ryzen thinkpads for a month or so. all the hardware worked out of the box and it was noticeably snappier than windows on the same hardware. the dealbreaker turned out to be jank fractional scaling
i do! i’ve been makin games mostly by myself for like 8 years now, but because i’ve never programmed outside of a videogame context i’m completely unfamiliar with “actual” software development; like idk nuthin abt compiling from source or patching or making pull requests or w/e… but i’d love to!
gentoo has the best logo by far~! but it does sound kinda scary.
cos stuff like this sounds good but in practical terms i don’t know what it means, like the actual steps involved in something like this, and the knowledge required to interface with it safely.
i’ve downloaded ISOs for… debian, mint (i appreciate that mint forced me to learn that 7zip has a hashing function), fedora, gentoo, and ubuntu, but so far i’ve only looked at plain old ubuntu (on the basis that it has some of the highest general support) and uh yeah it sure is a pretty normal OS. its “welcome to ubuntu” program had some serious visual problems and then crashed, but once that happened it was perfectly responsive and functional hahaha.
i’ll go through these distros and see how i feel about them, and then if one of them particularly stands out i’ll make a bootable flash drive and see how it feels when it has access to the integrated GPU.
Awesome honestly I’d say that probably makes it much easier to pick up the other stuff—it’s not that hard to learn tools like Git or Make or whatnot compared to how hard it is to learn to program in a general sense. I’m maybe a rare example of someone who started out doing more beige software development and got into game-making years later which is the main reason why I’m familiar with things like that.
The impression I’ve gotten in the game dev world is that many (most?) game programmers learned programming expressly to make games and haven’t pursued it much outside of that context, which I think has resulted in a kind of strange circumstance where there’s almost like “parallel cultures” with their own traditions and ways of doing things etc. even though it’s kind of the same activity both ways. On that basis some of the commonplace practices in the more “utilitarian” development world are really helpful even for game development, and I think sometimes the separate sphere situation results in people reinventing the wheel needlessly and so on which is obviously kind of nice if you can avoid. Maybe if I’m going to write an article on anything along these lines I should start with like, “The tools of the other ones.”
Awww yeah!! I don’t know if you mean the magatama-esque G or Larry the Cow but I like them both for sure.
Um, it’s…kinda scary in a way I guess…it requires more getting-used-to and regular maintenance than some other distros. I kind of think of it as like, if you enjoy spending some of your free time playing around with your computer and tinkering with things and such anyway, and especially if you have really specific desires for how you want your computer to work, Gentoo will cooperate with you, try to make things as easy as it can on you without boxing you in, and give you a lot for your efforts. Someone who says, “I don’t want to tinker with my computer, I just want it to work so I can do things,” might find Gentoo to be a hassle, though, because you can’t really just use it on autopilot. I don’t feel like I actually have to spend that much time each month on system maintenance, but that’s partially because I have a set of scripts I’ve gradually honed over the years to automate a lot of the regular work in the way I like, which maybe suggests something about what it’s like—because of its emphasis on flexibility and user choice it ends up being kinda DIY in a lot of ways.
Also, it helps if you know both C and C++ (in an idiomatic sense) and are familiar with the various ways software in those languages is commonly structured and built on UNIX platforms. Normally, installing a package is no more difficult than it is on a binary distro—you can do like, emerge PACKAGE_NAME and it will download the source for the package and build and install it without you having to do anything else. If the package fails to build, though, which occasionally happens, you’ll probably be mucking around in its build directory and looking at the compiler output and things, and if you don’t have any idea how to approach things like that you’ll have a hard time figuring out the problem. The majority of the commonplace packages in any Linux environment are written in C or C++ (partially because those languages have a deep historical connection to the UNIX platform—C is an integral part of what makes UNIX what it is, in fact) so that’s usually what you need to be familiar with to troubleshoot problematized packages. That said, if you don’t know C or C++ but you want to learn both, Gentoo is an excellent way to train yourself up quickly—it can be a bit sink or swim in fact , but also you get to see what a lot of mature, widely-used packages in those languages look like on the inside, which is very educational.
I don’t think you really have to worry too much about safety—like, the worst thing that can realistically happen in a Gentoo desktop environment that I can think of is if the package manager just can’t figure out the chain of dependencies during a system update and won’t proceed, which can happen if you go a really long time without updating (like half a year or something). In that case, though, you can just rebuild all the packages on the system from the top, which you probably have to do anyway more-or-less if you wait that long to update. That can take a while to finish but it’s not any more trouble than a normal update is.
Using Ubuntu does have the advantage that a lot of like, “relatively clueless about Linux” software that still provides Linux builds will work on it without issue, whereas on other distros it may assume too much about the environment to work properly. (Developers accustomed to Windows have a tendency to underestimate how much different Linux environments can vary from each other…although if you use SDL and avoid platform-specific code, your program will actually work well on both Windows and basically any Linux desktop system, just sayin’. ) I don’t feel like I have too much trouble with that since I generally use more “Linux-oriented” software anyway, but your case may vary. One thing I will say is that if you want to use the Unity editor, they insist that you run it on Ubuntu 20.04, Ubuntu 22.04, or CentOS 7, and in my experience it’s unlikely to function well on other distros unless they’re very similar to those (and they won’t give you support on other distros either). I don’t like Unity very much anyway for various reasons, but if you’re a big fan of it, that almost makes Ubuntu the only option for you if you want to use Linux, since CentOS has been discontinued. Of course, if you want to move away from proprietary software, that rules out Unity (the fact that it’s proprietary is probably the most significant thing I don’t like about it, considering all that that implies).
I’ve also found Ubuntu’s installer to be kind of shockingly buggy (I once saw it glitch out with a nonspecific error message and corrupt an entire hard disk during a routine install—usually it’s not like that, but I definitely recommend backing up your drive before installing it to a partition just to be safe). Once you get it running, though, it’s generally quite stable and usable as long as you don’t try to sway too far away from the default setup (like, if you stick with the default window manager, install things from the official repos as much as possible, don’t muck about too much with the system settings, etc. etc.). In a way it’s almost like the opposite of Gentoo in that regard—if you try to move your system away from the most typical use case, you’ll feel like you’re fighting the OS more and more, but if you just stick with the defaults and install some popular software and get going or w/e, you’ll probably find it very easy to use, as long as you like all of its conventions and things.
As long as you’re test-driving distros, two others you might consider experimenting with are Arch and Slackware. Arch is kind of like Gentoo in that it’s very flexible and doesn’t assume much about how you want to set up the environment, but it’s a binary distro instead of a source-based one, which makes it a bit simpler to use day-to-day and also means it’s faster to install packages. Slackware is one of the most BSD-like of Linux distros, both in that it tries to present a “complete system” of packages instead of having the user install them piecemeal, and in that it tries to stay very true to traditional UNIX principles. It generally provides software without any special distro-specific patches. You can also check out DistroWatch for other things to try—I’d take the “popularity rankings” there with a grain of salt but it can be a neat way to find out about newer distros you might not have heard of. There seem to be lot of distros out there these days that are built on top of Arch and provide a more streamlined user experience for instance, kind of like what Ubuntu or Mint do for Debian, and although I don’t really have experience with them I think some other users on this forum use distros like that.
i don’t have a problem with conforming to the conventions of a particular piece of software (unless they’re extremely obtuse and strict) so learning to use a new OS the way it wants to be used is fine by me. my issue with the contemporary mac/windows OSs is that they’re slow, precious black boxes full of cruft that i’m not allowed to uninstall.
kinda sucks but that one software dependency is probably going to make my decision for me.
Well, on the bright side, Ubuntu is totally still Linux—it’s got the same kernel, core utilities, shell, etc., and that’s the essence of what makes Linux what it is in a sense. I would way rather use it than macOS or Windows for sure. Like I said also, I use Debian Stable on my web server and I think it’s quite nice—it’s definitely one of the more user-friendly distros. If you like Ubuntu’s window manager I think you’ll probably have a good time with it.
I’ve been using EndeavourOS on a Thinkpad T460 for around 2 years now, recently picked up Renoise and it works on linux so hell yeah. I like endeavour because it’s arch without the hard stuff. I use Gnome with it