Linux vs Windows (or MacOS)

⏱️Overview

Yes, there are many such comparisons on internet, example search.
This is my longer guide, basing on my experience of Windows and Linux, to which I moved and use daily.
In later sections I will be introducing some of Linux specifics and end with a quick guide for developing.

❔Who is this for?

I think this guide can be useful for many people, wanting to know more about other OSes and for those who want to move to Linux.

I’ll try to cover few main differences (which I experienced) from such perspectives, for various people types:

  1. Gamers or other users of some big commercial software.
  2. Users, who can install Linux, and anything else needed on it (or those who have friends which can do this).
  3. Developers, who will also develop software on it.
  4. Kids and older people, who can’t install or configure programs themself and do only simple things on PC.

You can jump or check ⏳Conclusions chapter for my answers.

❔Who am I?

Just as an early warning, because there are many people who will know more.

I am a professional software engineer (mainly C++). As a hobby I do develop a 3D game and few other projects since years.
I am not a system administrator or other person who manages various systems. Surely they have much more experience in this area.

Of course you can read more about me.

📜My history

I started long ago in DOS systems. Then for many years I was using Windows: 95, 98, XP and 7.

Since 2012 I tried Ubuntu and then Kubuntu, occasionally to check if our game Stunt Rally also works well on Linux.

In 2017 I did setup a VM in VirtualBox with Debian, at work, and have been using it with Eclipse IDE for developing an embedded Linux project written in C and using ash. I did learn a lot this way. And realized I could use only Debian for my daily development.

In 2019 I decided that I will not use Windows 10 at all on my PCs and stated using Debian 10 instead.
I’m glad to say that use only Debian (now 11) on my PC since 2019 and my other 2 PCs for my parents.

📝My motivation

What made me switch away from Windows after so many years of using it?
Well after I read windows7sins (never version also for 10 and 11), especially about their freaking telemetry (also on wiki), I had enough.
Windows 7 already pissed me off when my sound card suddenly couldn’t record “What you hear”, but having all that spying garbage in system was just beyond (any OS purpose). And I decided to simply not use Windows.

Obviously for me, Windows 10 looks cheap, basic and ugly (1 color) compared to Windows 7 (colorful icons etc.). It was that decision to support mobile devices, by making desktop PCs look worse, like an empty piece of paper.
Later I found the final killer flaw, with is this very annoying white flash bug, when some apps start or show. MS screwed up big time. Seems like they can’t or don’t care about fixing something so basic for years. I can’t even.
Well needles to say this one bug is enough for me to not use software (I saw it in Chrome before too) even whole OS.


⚖️Comparison

Shortest

Well, there was this image that funny enough sums it up really good.
It shows: “An Update is Available for Your Computer..”
and below the 3 main OS-es with reactions about updates on them:

  • Linux – Cool, more free stuff
  • Windows – Not again!
  • Mac – Oh only $99

So yeah, this goes along my own experience, which write next (OFC these are my opinions):

MacOS, briefly

My old impression is that Macs are just the worst (and thus using MacOS). They are way too expensive. There is likely big money spent on promotion, case, looks etc. My experience with Mac PCs was short (at work in 2011 or so) but from what I saw: hardware inside was poor, I could buy like 2 PCs for the same money with similar or 1 with much better performance. Plus that annoying HDD noise inside a monitor without a PC case was just ridiculous (yes I do mod my PC a lot). So yeah, I called it “shit in white packaging” and never even thought of using them again.

Nowadays we see that Apple criticism page has even longer list than Microsoft’s. Another great page with very long list.
I’d even put the planned obsolescence topic at top (followed by violation of our right to repair). I’d say it’s basically their 1st rule for making iPhones. Obviously it is extremely wrong for whole humanity, and best for their profits only.
Thus I recommend staying far away from IMO the worst company ever and any of their products or services.

🪟Windows, flaws

Windows is a product of another huge company, which does a lot of things against humanity too, see Microsoft criticism page.
Just like with any closed commercial software, you won’t have much control of it. Their freaking telemetry works even if you disable it, and who knows what else is their OS doing. It is still that ancient commercial approach relying on hiding how they created something and selling it.

I already mentioned it looks poor. It also barely allows any theme look customization. And the oldest tiny (like for 640×480 VGA or so) non-resizable system settings windows are just ridiculous and still there, reminding it of that decades old codebase. I think here is a page with some similar opinion, and with more cursing.

But the new start menu edition is garbage. I always replaced it by Classic/OpenShell getting it close to what Windows XP had.
Additionally, the latest News display and the whole Windows Store are for me a huge nope. I’m guessing it was good for profit to make a damn TV with commercials out of PCs, or a shopping mall, the pinnacle of commercial stupidity.

Okay there is one good thing: usually old applications still work in newer versions, and some for years.
On the other hand: windows registry mess, COM and other standards, are just the worst, since 30 years. Oh and the ever growing damn WinSxS folder.

Windows included apps are basically garbage too, I mean Calculator, Paint (I use GIMP, earlier Paint.NET), Registry (I use Registry Finder) and lastly Image viewer (I used FastStone Image Viewer).

There are even applications needed to customize basic OS things: TClock, start menu OpenShell, 7+ Taskbar Tweaker, Winaero Tweaker etc. Well. that’s just MS being commercial, cheap and lazy. Many of those apps aren’t FOSS (another FOSS explanation), so you can’t see how they work or customize them yourself.

Commercial⛔

Well for me the worst thing is: if you pay them, you support all of this commercial evil too (from criticism pages).

There is also an old movie Pirates of Silicon Valley (1999) which I also recommend. It is somewhat shocking to see how Microsoft and Apple came to be and what they did (stealing, cheating, etc). Obviously it didn’t improve, and only got worse. But it did surprise me how bad it looked even at their start. I see both companies have issues with labor and employees abuse too.

My (brutal yet honest) opinion in one sentence for commercial OSes (and their companies):

They do crime against humanity and treat users as slaves, plus you’re paying for it, while Linux gives you freedom.

There was also an old documentary Revolution OS (2001), about the Open Source Movement. Starring key people like Linus Torvalds and Richard Stallman.

☠️Other issues

Commercial software like Windows (at least) bring also other possible wrong ways of OS use.

  • One is old not updated Windows versions still working. If you need to pay to update it seems like a better choice. They have support for long though, but after that no fixes.
  • Other is using cracked versions, without updates, which likely get infected with malware (and what not), and can become zombie PCs. Again, may seem like a better choice since you don’t pay.

Obviously best alternative is using a free OS, so cost is not a matter. But surely enough they are different so moving may take a while. And yes IMO OS should not cost. In other words, why should you pay for OS when there already are free ones running well since years.

🐧Linux, why

Linux is the best solution for OS, because it:

  • Doesn’t cost you money, and you can copy or install it freely. Possibly even on your router 😄.
  • Gives you Freedom. From above commercial garbage, and freedom to learn from it.
  • Can look way better (e.g. with KDE), or basic and use less resources.
  • Allows plenty of customizations.
  • Is really well documented. Which is great to learn it at start and later.
  • Is better made with packages, and with root user.
  • Is easier and more friendly for developers.

There are likely more reasons, and I guess many could have their own too.

Here is a website with many reasons why you should switch to Linux with some more info.


📊More differences

Here is a list of some key areas where systems will be different. All of which could affect your OS choice. And likely all will make an impact on how long we can adapt to different OS.

💰Cost

One extremely important aspect. Sure, it may not be important if:

  • You only have 1 PC. It may become a thing if you have few.
  • You don’t care about expenses. Certainly the worst approach (you’ll lose a lot of money, and won’t even know how much and on what).
  • You have a lot of (or too much) money. Well you could support those creators who don’t.
  • You’re running or working in a company.
    Which will go the commercial way and use the most popular system for their software, to maximize their profits.
    Not considering Linux if it only is on few % of all PCs.
    Also not caring about employees privacy or their preferences.

📃License

Obviously commercial software comes with its own license. It basically doesn’t allow you anything more than just use what you paid for. Commercial licenses can also be long and complicated, IMO making sure it brings profits for its creators, and to make sure only well paid lawyers understand it all. Well that’s the commercial way isn’t it. I’m glad we have Free Software for opposite.

🔒Privacy

Well surely an important issue and goal. Since telemetry and such this is gone in Windows. I don’t know the situation on MacOS, it was already killed by cost, for me.

As for Linux, there are even few distros focused on security, and privacy, e.g. Kali, Tails, and other.

⚙️Drivers, GPU

Well, there is this topic. I think the situation improved. I mean you can download drivers for AMD or NVidia cards from them and they were working for me. But yeah such commercial GPU companies weren’t or aren’t giving much support for Linux which isn’t (yet?) the most popular choice.

One more thing worth noting here is the open source drivers that can be used instead of commercial ones, e.g. Mesa.

📂File systems, partitions, etc.

Naturally, this had to be different too. I mean these things are almost completely different in Linux and Windows.

Partitions

E.g. popular partition for Linux would be ext4 or btrfs. For Windows it is still NTFS. Some pen drives or memories use FAT32.
A wiki page about this is Disk_partitioning, also showing for Linux: GParted tool and Grub boot loader.

So on Windows you get drives like c:\, d:\, and so on, you can e.g. mount network drives to any other unused letters.
Windows uses \ for path separators but / works too.
It also had and has stupidly long paths like: c:\Programs Files, old c:\Documents and Settings, and for user settings: C:\Users\username\AppData\Roaming\, C:\Users\username\AppData\Local\Temp etc.

On Linux there is a well established file system also explained on wikipedia. It has top level folders like: /bin /dev /home /lib /usr and so on. Linux uses / for separators only.
And yeah there are many other websites describing the file system like this or that.
Drives on Linux are usually like: /dev/sda/, /dev/sdb/ etc. but others could be in /opt or /media/cdrom.

MacOS came out of UNIX which was also the base of Linux, so I think it is similar, but it has its own things too.

File Extensions

Another significant difference, on Windows there is .exe file extensions for binaries that can be started. On Linux there is a executable attribute (x) and such files usually don’t have any extension.
On Windows shared dynamic libraries have .dll and on Linux .so. Static libraries on Windows have .lib and on Linux .a.

Hidden

On Windows you could hide any file or folder, by setting Hidden attribute. On Linux there is no such thing, and it works so that if any file or folder starts with dot . then it will be hidden.

Admin vs Root user

On Windows there is this UAC (with annoying screen dimming rest, it can be disabled) asking to confirm (yes/no) if something critical is installed or done. It does actually tend to make people run more programs as admin already, e.g. to skip it.

On Linux there is root user. It is needed whenever you want to install something or access its files. And it requires typing password. I find this way better. But yeah, my keyboard types my passwords for me, so I don’t mind that.
There also are goups and attributes for root, group and user, explained e.g. here.

Updates

As for updates on Windows, like on that image, they are annoying. You cannot disable them, Windows can force some. Also usually restart is required. And what’s being updated is hidden. Well clearly they don’t want you to see they’re fixing another bug letting others total control of your system, am I right? Or what they changed in their telemetry, etc.

On Linux it’s different. You clearly see what will be updated, and you can chose what you want to update and when. And restart isn’t needed.

Installing software

This is also one key difference, but maybe not that visible for end user.

Sure, maybe the new Windows store looks different. And plagues like Steam (for games) also really hide this too. (Clearly I dislike both).
But the way I see it on Windows, basically any program has its own download and installer (and can have its own issues too). Which can do whatever (or nothing and just run if it’s portable) in file system, that stupidly huge registry etc. Even worse on top of that, many programs come with their own way for updating themself (another custom program). All of which is for me annoying at best and incoherent.

On Linux this is way better. I write about it in later chapter 📦Packages. And there are also software applications with catalogues, similar to store, except that all are free on Linux of course.

GUI, look

Like already described above, Windows 10 look is simply the cheapest, bare minimum with almost no customization.

Now I will say that KDE is the clear winner for me. When it comes to how a modern GUI for OS should look like on modern PCs. And the amount of customizations you can make is just simply right (no, not to much, it’s nicely big). I mean usually you can change a theme for program and should for OS too, but with KDE you can change theme of any component (like: windows, taskbar, GUI controls, colors, icons, mouse pointers, fancy effects, etc.) and you can browse and install new themes for these directly in settings.

Sure, there is one downside, an inconsistency that happens between looks of some programs. So we got default Qt look in KDE, but some use GTK, GTK2 or GTK3 and each of these GUIs have their own themes to choose, likely looking different. Not a big issue and there could be a solution too.

⏳Conclusions

So going back to different types of people (or their situations), my thoughts are like so:

1. Games and commercial software

Which don’t support Linux.
Well this is the hopeless situation, that will most likely not change and make you stick with Windows or MacOS, if you critically need to use some specific software (program or game). But yeah, I’d say it’s at least worth trying to find alternative(s).

Sure, gaming is getting more popular in Linux since years, but still it’s not like (most or) all games could be played there too.
I think Linux is likely not mainly for games because that’s the most commercial use, for yeah gaming consoles, where you play and won’t do much more intelligent stuff. Then followed by probably Windows.

But gaming on Linux definitely exists. Few big AAA games can work on Linux. The most popular big engines Unreal Engine and Unity work on and support Linux.
And there are even gaming Linux distributions having many old PC and console emulators or gaming variants like SteamOS, Garuda gaming, probably more.

There are lists of games running (natively) on Linux too, e.g. on wikipedia, sites like freegamer (with FOSS games), and naturally lots of random .com websites, and lastly on Steam too (mostly paid, and IMO garbage, except maybe 1 in 100 to 1000).

There is also Wine, which emulates Windows on Linux. It may not always work.

Some more info about Gaming On Linux.

2. Users who can install

For those who can install Linux, and anything else needed on it. That’s the best situation.
I’d say if you’re young e.g. in college, you’re likely able to try Linux and move to it too. Especially if technical or computer knowledge is not difficult for you.

3. Developers

Who will also develop software on Linux.
This probably depends. Because if you develop for Windows (and e.g. use C# WPF or other Windows only software), also if you got used to Visual Studio IDE too much and won’t want to change that, then obviously that’s hard to change.But if you develop as hobby like me, and want to move, then you can. I also believe it is much easier to develop on Linux (thanks to its packages for dependencies). Well at least in C++ like I do, I imagine with Python there won’t be much difference.
I’ll say it took me a while though, because I wanted my favorite programs to work on Linux too.

4. Older people and kids

Who can’t install or configure programs themself and do only simple things on PC
In this situation it likely that they won’t notice the difference. E.g. if all they do is anyway in web browser. And they’re not gamers, still wanting some Windows-only game to run.

For kids it’s nearly the same, except they play more games I guess. So it’d be up to their parents (or teachers) to show a better way and install Linux, which makes it easier to learn e.g. programming.

E.g. for my parents it was possible to move, and it was up to me to update their PC and get rid of that Windows virus. I’m glad to say both my parents are now also using Debian 11. They mainly use Firefox, play few KDE board games and watch our pictures.


👉Starting with Linux☑️

How to try

Of course it’s better to try before moving to a different OS.
There are few possibilities:

  • Bootable USB drive with live version.
    If BIOS / motherboard can boot it (I guess all new can).
    Many main distros have info about their Live USB version. Some website with tools.
    Probably the cheapest way.
  • Burn a DVD with a live version (wiki: Live CD, Debian info).
    If such drive or recorder is available. It depends of course, you may not even have a DVD drive. I see laptops without them. I also stopped using such, and don’t have one in my PC.
  • Create VM in e.g. VirtualBox.
    • It will be slower and use host PC resources. Could have some issues (or crash). Depends on how well it is supported, since most hardware is emulated or redirected to host PC.
    • If it works, then it could be a faster way to try more Linux distributions just from .iso images, without rebooting etc.
    • Somewhat more advanced topic, since you’ll need to properly set up VM settings. I usually set up VM for Linux like so: 4 GB RAM, 4 CPUs (of 8 available), 256 GB drive, 3D acceleration: enabled, clipboard: bidirectional, VT-x seems already enabled by default.
    • To have shared folder, it needs to install GuestAdditions. But I think this isn’t always needed to make the screen bigger (for sure Debian needed it, but few others I tested worked fine without) and have 3D acceleration.
  • Get a separate (SSD) drive and install there.
    Seriously, having two OSes on one drive can end very badly. I’ve heard a few times and experienced it too. E.g. repairing Windows will simply destroy any Linux on same drive.
    This is the final way, to see full performance and have all settings as Live version or VM may be limited or have own issues.

How I moved

My move to Linux actually took longer than just installing and using it.

At first I started using open source software alternatives:
E.g. Firefox or Chrome (instead of IE, Edge or Safari), LibreOffice (not MS Office), Double Commander (not Total Commander), GIMP (not Photoshop), Blender (for 3D modeling), VSCodium or QtCreator (not VisualStudio) etc.

I’d recommend this website for finding alternatives of programs. There are other ways like even searching on internet.

Then I even wrote a program to help me move and manage my coloring list to Double Commander.

Also if I had other programs or bat scripts I would just replace them with new Python scripts (and I recommend this, instead of using .bat or .bash scripts since Python can replace both).

I think I also built my fork of Double Commander since I’ve been using that, not the official version.

I started rewriting my old Windows only audio player (still using DirectX and WinAPI learned at time of college) to use SFML and work on any Linux (or Windows if I needed). Thus I highly recommend writing your programs as cross platform, from start.

Well at least I didn’t have to do anything with Stunt Rally because it was already working on Linux, thanks to 2 amazing contributors.

That was then the moment I installed Debian and started configuring its look and any default behavior I didn’t like.


📚Which distribution

General info

One thing that stands out with Linux for sure, is the multitude of its variants (distributions).

  • It has become great for desktop PC usage. Installers have GUI and are friendly.
  • Linux is the most popular for servers – i.e. PCs that don’t have a LCD monitor attached and run stuff all the time for other PCs in network.
  • Secondly it is also viable for embedded uses – so for a microcomputer with little power and memory. E.g. in OpenWrt.
  • And there is a special subgroup with Light-weight distributions, with small hardware requirements, and some minimal even work on old 486 CPUs.

Wikipedia has some very good pages with not just history, but also useful information for general Linux knowledge.
E.g. Linux distribution with general groups and info and lastly Linux and Linux kernel (quite technical).

📄Distros lists

For lists of distros:

📑My list

My quick list of just a few main popular ones:

  • Debian, with a strong commitment to free software principles, lets you chose which GUI. It is still my favorite.
    • Kubuntu based on Debian, with KDE (with lots of customizations), can look similar to Windows start menu, etc. I actually had couple of times serious issues with Apper not working. So I don’t see the point, when Debian with KDE is working.
    • Ubuntu, based on Debian, using GNOME,
      Is very easy to start. Seems to have lots of various software to install, but some have comments that don’t work or start.
      Definitely not for me because it is quite simplified and GUI is similar to Android or typical smartphone.
    • Linux Mint, based on Ubuntu.
  • openSUSE, has good GUI package manager YaST and some more tools too.
  • Fedora Linux, I don’t like the default GNOME. But rest seems okay for me.
  • Endeavour seems quite recent, popular and is based on Arch Linux. I didn’t see any GUI for packages, so I needed to use commands. But it has a nice menu helping with setup after install. But I did see few errors when getting some packages so I’m not sure.
  • There are (probably many) distros targeted at experienced Linux users, which require a guide and typing commands to install each component, like Arch Linux, or Gentoo where source code is compiled locally first.

Why I chose Debian

  • I really like their philosophy, goals, and commitment.
    It is definitely something great for whole humanity (Linux and FOSS in general too).
  • It is one of the oldest, so it won’t disappear, or end suddenly.
  • It had the highest number of available packages.
    Well this isn’t the best factor, since there are many variants etc.
    And it doesn’t tell how often they are updated. Seems not so often.
  • It has a longer release cycle (2 years). But for me this is good. I don’t want to reinstall my OS often.
  • It allows few GUIs to choose from at install and supports many more.
  • It has many architecture variants (desktop x64 being just one of them), and can be used for embedded too. But surely others allow this too.
  • I used Ubuntu and Kubuntu before which are based on Debian and also used it at work for a year before moving to it.

📈Which GUI aka Desktop Environment

Well, going from Windows or MacOS, this is something new, right? Might be a bit shocking to be able to choose the whole GUI environment in same operating system to a different one (and other components too).
A good wiki page for desktop environment with a small gallery.

Examples can be split to 2 groups:

And there are more, of course.

✨Why I chose KDE

I chose KDE for the best look (for my desktop PC) and lots of customization.
There is a KDE store website with gallery of various themes and look related.
Here is a long video showing most of KDE theming options and another with extra features.
I especially like that you can pick theme for various parts independently (like window borders, taskbar, icons, GUI controls inside windows etc.).

There is also KDE app website – with apps that will be available, e.g. kdenlive for video editing.

📦Packages

ℹ️General

This is something that Linux does IMO way better and is way ahead. I think it may have some cost of backward compatibility.

Here is very good informational wiki page for package manager.

It also has a section “Comparison of commands”, showing differences between:
apt (Debian), dnf (yum) (Fedora), pacman (Arch), zypper (openSUSE), and more.
Another such quick command help is on distrowatch.

Because each major Linux (base) distro uses different package manager.

GUI

Usually Linux with GUI has some browsing applications with catalogues too.

Depending on distro, one could be available like Synaptic, GNOME Software, YaST, etc.

On my setup Debian with KDE it has even two:

  • Apper – has groups and then a big list of packages with some short info only. For example there are like 200 packages starting with lib, which are usually dependecies for other programs, and can be used in own programs too.
  • Discover – with more of a gallery type of applications and groups.

Alternatives

Well there is flatpak (flathub website with apps) and snapcraft, and these are different approaches for getting software working on Linux. Need some setup first for themself but after can get you needed software. I didn’t use them much yet, so I can’t write more.

🔍Search

There are websites for searching packages across many Linux versions (distros):
pkgs.org and repology.org.

Here is an example Debian packages page with contents and dependencies e.g. for doublecmd-qt and here is a list of all distros and their version of Ogre package.

This way we can search for what is available on various distros. I find it useful for checking which package version is available and what it’s name is.


⌨️Useful commands

Pages with lists

There are very good pages, listing many commands and uses.
For example:
debian manual (seems quite old but very good), not too big
ref card – pretty short reference
kernel – full grouped list, very long
man – another very long list
busybox – a good list, it is specific to busybox subset of commands.

Tab key does commands and files completion.

My list

Here is a helpful page about redirection and one for file/dir permissions.

I’ve put here a short list of what I needed to use:

man, info, help - for manual, and help, about commands
cmd -h - command help for cmd

pwd - show present working dir (folder)
cd - change directory
ls - list files (or devices), e.g. ls -l, ls -lA

cp [source] [target/dir] - to copy
mv - to move/rename

rm - remove/delete, rm -r - recursive folder/
mkdir, rmdir - create, remove folder

chmod attr - change attributes e.g. 775
chown username - change owner
chgrp groupname - change group
for all need to be owner or root

cat - show contents, cat > file - type text to file
more - with paging, less, q quit
clear - clears terminal
cat file | wc -c - size in Bytes

wget http://file.. - download file from url

tar xf file - unpack
tar czf pack.tgz * - to pack all into tgz
gunzip unpack file.gz

cmd1 && cmd2 - runs cmd2 if cmd1 was okay
cmd1 || cmd2 - runs cmd2 if cmd1 failed
cmd1 | cmd2 - cmd1 output as input to cmd2

>/dev/null - redirect to nofile
2>&1 - forward std err into std out
& at end - run in background

echo test - write text
sleep 1 - delay 1 sec

find . -name *.html - search recursively for html files
grep - match pattern, also: sed, awk

uname -a - name, OS type 
dmesg | grep tty - list serial devices 
passwd - change

su - become superuser (root), leave with: exit
sudo - do as root, ctrl-D or exit
who - for all users, id - you, whois

lsof - list open files
ps - list processes
top - task manager, q quit

ln - create link file
type - show alias
whereis - locate system files
nano, vi - text based editors

apt-cache search name - search for package name e.g. doublecmd
apt-get install name - install package

Ctrl+Alt+F1..F12 virtual terminal
Ctrl+Alt+F7 exit

🛠️Development

In this chapter I have put some advice for those wanting to develop on Linux with C++.

📜My history

Long ago in 2003 I got this great IDE called Visual Studio at college and started developing with it in C++, I didn’t know any other and maybe saw few C++ IDE alternatives, which were less advanced. And before I was using Delphi 5 I think.

After some time I was creating some of my first Windows programs and demos, using DirectX.

So what’s wrong in this approach?
Obviously VS is a MS product and they will show you their freaking technologies and promote their products only. It’s MS after all, that’s what they do, and also are known for monopolistic practices and all else.

⚖️Differences

I describe here shortly the difference in my C++ development experience on Windows compared to Linux.

On Windows there is vcpkg for C++ and only for C# there is nuget. I haven’t used them much.
But for C++ if you don’t use vcpkg, or it doesn’t have the version you need, or it doesn’t work, then you are left to building all from sources. Okay, some big common libraries can be downloaded as SDK, or prebuilt binaries, has to be for your Visual Studio version specifically.
But building from sources, especially every dependency too is a nightmarish, tedious, long process, with potential surprises that can cost even more time. As I described on Stunt Rally’s Windows build guide, aka the longest page there.
Also there is MinGW and other ways that I didn’t try.

On Linux, things are way easier. Most times you can just get needed dependencies as dev packages. The dev come with headers and libs that you use for building projects. And if some version is not recent, then you can build from sources.
But building from sources is a pleasure on Linux. In most cases it likely means just entering some commands and waiting a bit until it ends. Sure, this is just my experience, nothing is perfect.

Lately we started using Conan which is multi platform.

⚙️Common

Regardless of IDE or not, there are some common things you’ll need to get for building projects from sources.

It depends on project, because e.g. Python usually is already installed and you can start .py scripts already.

But for C++ you will need a compiler like g++ (or clang, or other).

So for example, on my Debian setup I usually start with:

sudo apt-get install g++ binutils gdb git make cmake

But there are also other alternatives or extras like: clang ninja-build clangd etc.

No IDE

Definitely possible and surprisingly common. Some key topics:

And popular text editors:

🖥️IDEs

Here is a list of most popular IDEs. Some may be already present as packages. Others would need unpacking.

  • VSCodium
    Instead of VS Code which has telemetry etc.
    Pretty awesome (despite being MS). Looks great and is fast, searching is like almost instant in all files.
    Since it is an editor at start, it does need extra add-ons and possibly some setup to get it working as IDE for a language like C++, Python, or more. But I’d say in the end it is worth it since editing, comparing files and git integration are superb in it.
    My current list of extensions on C++ guide page.
  • Qt Creator
    This was my next choice and I still recommend it.
    Is a Qt product so best for their framework. But can be used not for Qt too. It’s a quite good IDE, fast, has CMake support already. Doesn’t have very many options or extensions. But it is easier to start with it for C++ with CMake, no extra steps needed (like for above one).
  • KDevelop
    I quickly looked at this IDE and it seems quite decent. Has features that every IDE should have. I just don’t see any IDE theme to turn it black fast after installing.
  • Eclipse IDE
    With CDT for C++ support. So at first I was using that, but I don’t recommend it. It is quite slow, uses Java, is very universal so needs extra steps for C++.

⌨️Shortest Samples

🐍Python

On Linux, Python is usually already installed.
Here is a very simple script file simple.py


import os

print('Hello')

It could be started by ./simple.py command in terminal.

Developing in VSCodium / VS Code needs Python plugin, it will add commands like:
Python: Run Python file in terminal
Which can be bound to a key and will quickly open terminal and start current file.
Debugging also works after adding a launch.json file.

For my purposes this is enough, although help isn’t available.
There are more advanced IDEs for Python like: PyCharm Community edition.

➕C++ with CMake

This has moved to my C++ guide.