never ever trust shortened links, 99 of 100 are a virus, so use a sponsor that is a little less cringey, a squarespace or wordpress account is like 15 bucks a month so zero excuses for a shit ass bitly hacker link
@@CommanderBeefDevHow is it a "bitly hacker link"? And you suggest using "squarespace or wordpress"? Those are way too complex for a link shortener. Just type the URL followed by a plus sign to get a preview of the link, offered by bitly themselves.
You forgot docker, which is widely used by developers. Docker runs natively on Linux, whereas it's virtualized or even emulated, thus slower, on others OS.
@@tschorschYup. I was shocked when my coworker said he needs 32 GiB of RAM to develop frontend app with docker, while I was running 4 docker compose projects at once with barely any RAM usage.
But to be honest, that comes with some annoyances when the app doesn't behave the same in Docker Engine and Docker Desktop, that's why they launched it for Linux, and it's virtualized there even on Linux
That and on other OSes like Windows or macOS, you run into other issues because of that virtualization/emulation such as not being able to pass the --network flag to share the network with the container which is useful in certain scenarios. Docker for Linux is simply better.
@@aprile1710 Maybe for you but in my company the admins use active directory, Exchange and the whole Office 365 eco system. I don't like it but have to tolerate it.
@@aprile1710It's never been my primary reason, I always end up using Windows or Macos because of corporate decisions, not technical reasons and the Linux experience has always been better for me. Only if you develop directly for Windows or Mac do you need those operating systems.
I've been using Linux to develop dotnet and it's really good. Nobody else runs Linux in my company and we deploy to a windows server. So far I've had 2, both solvable in a couple of hours and one inconvenience (no edit and continue on Rider).
Important to me: Unlike Windows, Linux is not fighting me. Its not forcing me into any cloud services, online accounts, what search engine or browser i use, where so store my files and what tools i prefer. Its also not changing the GUI behind my back or installs "Apps" I neither want nor need.
It's not that for me, Windows sucks battery life out of all modern laptops. If you install Linux, you will get driver issues but better battery life. And Windows UI and performance overhead is all over the place. If you try to resize the window on most Windows apps, you can see horrible lag in the UI. Like wtf are we living in 2023 or 2000s? If you want to see an example, open the 'Services' app from start menu and resize the columns and you will see what I meant (or resize columns in File Explorer, then resize the window and see the difference). This is all across the board. MacOS on the other hand is smooth as hell somehow and it always was. With the new Macbooks the UI is even more smoother thanks to 120hz display and Apple silicon. It's even better when I connect to my 144hz gaming monitor. Also, not to mention the 6 most important command line commands you can't use on Windows: cd, ls, grep, mkdir, touch, nano (yes nano is the best, fight me). If you are a developer this is your bread and butter. It saves you a lot of time depending on your workflow.
At the end of the day, most companies prefer giving you Macs of Windows PCs due to ease of applying restrictions (like denying you sudo/admin rights) and installing their spyware :(
@@Watchandlearn91 Yeah, I'm the same problem. We were initially a smaller company, which allowed Linux. Then we got bought by a bigger company, now no more Linux. FML.
Yes but it's mostly because Macs and Windows have defined industry standards for security like Touchid, TPM keys, Windows hello, Bitlocker etc. which Linux doesn't have. The only way to encrypt Linux is using a password which encrypts the whole drive like Bitlocker, but it's not integrated to use biometrics, so ease of use is thrown out the window, not to mention migration to a new laptop/setup can be a pain in the a** too. And then there is the non-existent driver support. I tried installing 3 different Linux distros on my personal Lenovo Yoga Carbon laptop which has a 90hz screen. Either I could only use 60hz, or I could use 90hz but there were issues with the scheduler somehow (on pretty much any workloads it would freeze up the UI and would hang completely after some time).
Something to add is the fact that if you want to work on a specific framework, there are high chances that you can start without downloading the said framework because it is already there on your system as dependency for other programs. That is usually not the case for Windows and MacOS because apps are shipped as standalone (apps don't share dependencies more like an appimage for Linux) Moreover compile time is smaller in comparison to other OS.
I really want to get started with linux, but I'm not sure of which distribution to use, I'm familiar with Ubuntu, but the one in the video is very appealing. What is it called? debian? Gnom?
@@abigalebrawl9956looks like he used multiple distros but all had gnome as desktop environment. I saw fedora, Debian and Ubuntu. It doesn't really matter what distro you choose. Linux is linux and it's customizable and can be whatever you want it to be. If you're new, I'd stick to ubuntu, mint or fedora. Depending on what kind of use you expect. My issue with ubuntu is that it comes with snap which in my experience with Firefox was just inferior to the non snap version. Even flatpaks aren't that great but they have their use.
Linux, like a lot of open source software, has been built by developers for themselves, which is why it's so good for developing. At the same time however this is also a downside since it means it mostly wasn't made with "normal" users in mind.
Normal users cannot administer their own systems. When Microsoft tried to let them do that (Win XP) they had crapware and toolbars and viruses galore--bad experiences. That's when Mac OSX and iOS really got a foothold into homes. Apple made people's lives easier by administering their systems for them. Android copied this model and did so so that Google could harvest everyone's data. Microsoft has made every new version of Windows more like this. They remove user autonomy and make the system more and more managed, slow boiling their users. GNU/Linux just doesn't try to copy this model. It's designed so that developers can tool it out however they want. Distros are put together so non-developers can outsource that effort. But it still requires self-administration. It's not just "not the answer to a normal user's problems", it's asking a completely different question.
@@heretolevitateme you're not wrong but the windows xp had a lot of viruses because the lack of updates, internet was slow and iirc there's not built in update system, i remember formatting my windows xp every week, it was a standard procedure for normal users
It's true that "normal" users cannot install or administer Linux. However, they can certainly *use* it just fine. My late Mom's PC ran Linux because I refused to support Windows, and she had no issues with it. My non-technical sister's PC also runs Linux for the same reason, and she has no problem using it.
Depends on what you consider a "normal" user, and what you're willing to believe that they can do. As a developer myself, the largest barrier to "normal" users using developer tools has been other developers who insist that such "normal" users will never be able to use those tools and we have to spend massive amounts of time writing less powerful GUI stuff. Yet I had a co-worker who couldn't even use a spreadsheet doing HTML updates and committing them to a revision control system in just a week or so. "Normal" users just need appropriate support, and developers that are willing to help them use the tools, rather than do everything they can to prevent them from using the tools.
Just slightly related but personally I think it's a very nice trend. Since Oracle decided to make some licensing changes for Java we receive a lot more deliveries from vendors with Open JDK based JREs.
Where can I read about the Oracle Java license changes? Isn't that decades ago? OpenJDK is the Oracle Java reference implementation, since they took it over from Sun Microsystems. You sound like OpenJDK is independent of Oracle, it is not. When the license changed in the past, our company moved away from Java. We still use Java, but it's more a burden. Old complex code, difficult to maintain or to replace.
@@cameronbosch1213 But more money will be asked for those Cloud-based applications. Monthly subscriptions suck ass. For the games, it's just a different story.
Definitely one of the best advantages of developing on Linux is that many bleeding edge technologies are available first on Linux - recently I remember GraalVM and Docker for example. However I recently really fell in love with Powershell for setting up my dev environment and automating tasks.
@@tschorsch it does, and works really well most of the time, but you can encounter issues running commands made for shell like when using the input redirection operator ( < ) that Powershell weirdly doesn't support
As someone who isn’t a developer, just someone curious about technology, I’ve always heard Linux is better for programming, but with little explanation except for “because”. Thanks for this video for a better explanation than “because”. Keep up the good work, Nick!
For me, Linux is better for coding because, as mentioned in the video, they are flexible. Flexible and primitive, I would add. You have command line, which works for every software that will ever exist and you want to make. Flexible also applies to user interface, you can also customize your coding experience (important, because you are going to do a lot of work with that computer, it is your working environment). All of this comes at the cost of user-friendliness.
It's not really better at all. They're just different. Linux is better at hosting servers because you can make it as barebones and minimal as possible so that it can spin up and down on the drop of a hat. The only reason people think linux is better than windows is because you can run and code with linux on a literal potato from 15 years ago, while windows is "Bloated" (see: fully featured). Poorly configured linux distros by less than experienced linux users has been the cause of tremendous amounts of hassle and pain when things would 'just work' on windows.
As a computer science student who has used Linux for 2 years I might want to add that most of the reasons he mentioned don't really matter. The only thing that differs is availability of some Linux only tools like pyenv. But with WSL, even that problem is solved.
Regular Visual Studio (not Code) is not available on Linux unfortunately, its a great IDE and really difficult to switch from since it has all the essential tools integrated in a single package. I personally dont use it anymore but that was something I really had struggles stepping away from
Highly recommend JetBrains Rider, I switched to Rider after moving away from Windows and haven't really found a need to look back. The IntelliJ tooling itself with type-ahead and language support is very high quality, it has a huge plugin ecosystem since there are a whole ton of well-supported plugins (since they're usually cross compatible with the other IntelliJ editors), and it also has configurable keyboard shortcuts/themes (including a fully Visual Studio-compatible keymap) which make it super easy to transition.
Actually one big IDE, that is not available on Linux, is Microsoft Visual Studio (not to be confused with the text editor, that is named Visual Studio Code).
Precisely but Linux fanboys always come up with their alternates which never really cut it. I've been using VS since 1996 and I still love it for C++ development.
I'll mention the compile speed advantage as well. When compiling software, you will usually spawn hundreds to thousands, possibly tens of thousands of processes during the full run. The Linux kernel is just much more efficient at spawning and managing processes or threads, IIRC that sometimes results in better game performance as well.
Linux and MacOS both have better schedulers than the dogshit Windows. I have already switched to MacOS as my personal project machine completely, and I am using an M2 Max 64GB MBP for my job and I am loving every second of using Macs. Earlier the cost just wasn't justified but with ARM, battery life and the smoothness, seamlessness of it, Macs are the best for development.
Probably the only downside to Linux is that some programs don't work on Linux. For example, if you want to code in C# on Windows or MacOS, you can rely on regular Visual Studio (not Code, mind you). Meanwhile, regular Visual Studio doesn't have a Linux version, so you have to rely on alternatives, like Rider.
i am actually in this scenario, i want to code in c# but do not want to go to windows. That being said, i heard people say that Rider is amazing, it is more lightweight and even has integrated database manager, unlike vs.
Been a linux fan for long. But, TBH, I think I am more productive on windows. I don't spend time searching solutions for why my WiFi stopped, or no sound coming or why something isn't working well. I still prefer linux servers.
2:55 While it's an advantage to get started, after a while you normally transition to language specific package managers because they have advantages over system package managers (e.g. it helps to avoid the "it works on my machine"-syndrome).
@@kuhluhOG Well nowadays you have docker and env which are better than using something like pip. Although pip is not universal and it will not install everything under the sun. pip is mostly useful for projects like the guy above said, but not all languages or frameworks have something like pip.
I know your audience is heavily Linux biased but in my 6 years as a dev I’ve only encountered a few devs that choose to use Linux. They seem to run into issues more frequently, which may be due to their own doing. Most devs I’ve worked with choose MacOS. I’ve been able to choose my laptop and OS at all but one job. I develop .NET mostly and I choose MacOS for my primary machine. A lot of that is due to how efficient their silicon is.
@@hero3616 mostly has to do with driver issues, migration (upgrading to a better machine), integrated security (like Bitlocker, Windows hello, Filevault, Touchid). If you know how to setup Linux correctly and know how to migrate correctly, it might be good, but companies still can't let you do that since it's not integrated.
I use it because POSIX is a remarkably stable AND RICH set of interfaces. Porting jdupes to Windows wasn't too hard thanks to MinGW but getting Unicode working was a horror show. I actually wrote a lot of porting helper stuff that's would eventually become a separate library called libjodycode. Things like converting the Windows epoch time to the UNIX epoch time, converting UTF-8 to UTF-16 which is what Windows NT kernels have used internally since NT was created, and so on. Porting to macOS is often just a matter of writing around missing or slightly different features or interfaces.
Some IDE's only come as a flatpak and unfortunately flatpaks for IDE's are troublesome for now, because you need access to your OS runtime. Also another big IDE that is loved by many and is missing from Linux is the Visual Studio (not to be confused with Visual Studio Code).
Containerization is great on servers, and absolutely dogsit for desktops. Flatpak, snap, doesn't matter what it is, it's going to make you pay in time and frustration.
I use a headless vm on my machine and all development happens on that vm, which has regular ubuntu on it, host system is fedora silverblue and basically has nothing except libvirt and ide, there is 0 system rot this way
I think many 'advantages' you mention in this vid are shared across macOS as well, the bash script, built-in, different terminal (I use fish on my Macbook) etc. Basically I'd see those as some common good things of having a UNIX-based OS, I still am not convinced to switch at this point as a developer.
If only macOS had a decent package manager. Homebrew fills the gap, but the packages provided leave a lot to be desired. It was a pain getting emacs working with homebrew for some reason.
It's difficult to say what specifically makes Linux more developer friendly. I had to use OSX for a year at work - fortunately not for development. You'd need to pay me very much to use it for development. I find it even worse than Windows with WSL. In some way, I felt like the fancy UI was constantly getting in the way. OTOH, I once did an experiment of setting up KDE so it resembles OSX as good as possible. I got quite close to replicating a OSX desktop completely, if that's your cup of tea. That, coupled with the way better package management and wealth of available packages make me doubt that there's any development scenario in which OSX is objectively more convenient for development than Linux set up the way you like it.
Yeah guy in the video probably has never tried Mac os, he doesn’t know what he’s talking about, I switched from Linux to Mac os and I’m not going back !mac os is better overall and superior to Linux and windows
I like VisualStudio (not Code) for allowing easy creation of GUIs. I'm terrible as a programer thus I didn't bother to spend much more time on it but when I had someone guiding me, VS made it very easy due to how coding in that IDE works. Wish Linux had that tbh.
Win32API is pretty bad for uis, if you run gnome you can use builder or generally glade for GTK based apps, as gtk is a lot better than win32 api is for ui
And the worst thing about Windows is missing the package managers 👽 (Yes, I know, there is the chocolatey (or how is it spelled?) and something else, but one have to install it first.)
@@1234567qwerification the cringiest thing about Windows is the shell/environment. That's why developers use Mac. For this single fact alone, not even mentioning the security, performance, efficiency etc. Unfortunately developers are stuck to a life long subscription of buying the next Mac but at least Apple doesn't squander the money we shower them with. That's not a consolation of any sort. I cringe when I think about the $3,700 MBP my company got for me. I know it is kind of necessary given the size of our project and well... Android studio being Android studio and browsers eating up RAM like black holes. It is what it is I guess. I am hoping for ARM/RISC-V based Linux laptops which are efficient, performant, light and have things like security and migration all sorted out. Not sure if that can happen in my lifetime but one can hope.
The biggest advantage of Linux is: 1. run any dev tool on local machine by copy pasting basic command straight from docs. While in windows things can be tricky to run. 2. All the tools becomes available in Linux or Mac first. Then windows package is released later. 3. All the devs are either using Linux or Mac so problems get addressed and replicated easily
Server side : Linux only daily life Development: Windows has ( Linux, docker, games, Best UI, most stable multiple screen displays, advanced mature control panel out of the box )
Since I started working professionally, I've never encountered a single engineer that uses anything other than a MacBook Pro (it's also the default laptop they send you at every company I've worked at). Linux always runs on the prod servers and such, but ain't nobody installing Ubuntu on their laptops.
It is nice of linux to include gcc & python. I did have issue compiling something for windows, from wsl & linux native. Had to use msys2. QT is a fine UI framework if that whats stopping migration.
Okay so I'm in the "no choice, company wants windows" camp and between chocolatey, wsl, docker, vms, and powershell there is a bunch of ways to make yourself feel more at home. I'd still prefer to stay on Linux, but as long as my company provides the computer and actually takes responsibility for keeping it running I will survive. Plus, our product is mostly used on windows, so we have to know our way around it anyways. The reason my company insists on using Windows has actually more to do with MS Teams (and all its plugins) and Outlook being our primary ways of communicating and organizing. We are not just a software development company, we have loads of other departments and while I think it would be possible to switch them to Libre Office, I dont think there is a a replacement for Teams that wouldnt require a massive retraining of 50+ people with little to no functional gain. When it is "maxxed" out on licenses and plugins, Teams is pretty impressive (minus the classic annoyances like not being able to mute someone just for yourself because MS didnt future-proof their audio-stream mixing...) Yes this is a cry for help. If you have used Teams professionally for a while and switched to something better in the OS space, please let me know! :D
We're heavily invested into the Microsoft ecosystem for communication etc. and I'm just using Chromiums PWAs. Outlook, Office, etc. nowaday run pretty well in a browser. I'm rarely using Teams, but whenever I do so, using chromium works fine. We've been using teams a few years ago and switched to Slack. I find it much more intuitive and comfortable. It seems to offer way more integrations as well. I'd never want to go back. But I guess you already know that one and have reasons, why you're still looking for alternatives.
@@LA-MJyeah, its by no means perfect, but I wouldnt call it dreadful either. It's possible to create tabs for every Team, that can be used as shared data storage, or for (slimmed down) versions of Excel, ToDo (Kanban style) and OneNote inside of Teams, or to create smaller automations, plus a bunch of other things. None of this stuff is particularly impressive on its own, but the fact that they can all be used within the Teams-app and be equally accessible for everyone who is part of the Team is something I was positively surprised by. The integration actually works reasonably well and if you need to do more dedicated work, a lot of it can be exported to any of the dedicated apps with a single click... So, the use-case is pretty extensive: an app that can be a Kanban-board, a shared storage, a spreadsheet, a notebook, a messenger and an alright video-call app at once. And you can use the account for authentication on many other platforms. Plus, when considering this you cant forget that Microsoft does this need little trick where they lock you in with incremental charges: You already use Windows, well Office wont cost you that much more, and if you got office, Teams plugins wont be much more. And since you need MS accounts anyways, why dont you use our authentication tools as well? And by the way: Azure... there is no real line to draw, where the use-case ends because you can tag on so so much, all controlled through a single hub and with a single support hotline. Every product individually is not that great but together they cover a lot of ground and everyone is familiar with parts of it, so the hurdles for integrating more are relatively small and I think a lot of companies go for that. (This is not an endorsement, I would be fine without any of that, just trying to describe the reasoning)
@@katrinabryceYes, very fair point actually, although I have to admit that I dont know how far LibreCalc has come, because I'm not a power-user of either!
I used Linux exclusively as a professional for 12 years. I did like it and I still do like it when I come back to it. There are quite a few things I miss. But yet, I now prefer to use MacOS and have done for 8 years. The experience of using it day to day, for hours on end I find more pleasant. Mainly because the trackpad is amazing. I don’t like using a mouse because they need space and can’t be used well away from a desk and trackpads that aren’t Apple I’ve never found to work anywhere near as well.
Exactly right. Mac is a thoughtful mix of casual features on top of a solid Unix environment with tons of community support, potent offering for devs of all kinds, be it web dev or systems dev or ML, even gamedev with Godot and the like getting traction on Mac. I have a strong suspicion this creator isn’t really a developer, and is just stoking the fire of OS tribalism for engagement, as half of the comments here are folks politely disagreeing with his points in the video.
It's even easier than a script to share the same Linux development environment. With devcontainers you can describe the whole environment directly in your source repo, even with additional services like local database servers that may be convenient for development.
A lot of good points - in addition I would perhaps add the number of tools and the ease of debugging, perhaps not even debugging but being able to have access to how the system is working /proc for example, or seeing code execute using something like radare (which I guess can be done on windows, but with paid for tools). Also when you introduce someone to the range of Linux command line tools it provides a good example of just how much power there is in computers sed, awk, grep and many many others. (Something I love on both Windows and Linux is when you show someone that scary black terminal, you get the blank stare, frightened the wrong command will erase the world....and then in 10 minutes they are piping commands together and they've forgotten where their mouse is.)
This is a very helpful video. Anecdotally, in 2002, I took a six-year-old Toshiba Windows laptop that my spouse, and on which the hard disk was failing. I took a chance of a new solid state hard disk and installed Lubuntu, a light-weight Linux distro. An old computer that had slowed down to a crawl using Windows just flew with speed and responsiveness using Linux. I manage a number of WordPress sites, and now had a machine that manages WordPress better than Windows. I also am self-taught as a developer. Using PHP is just better in Linux than in Windows. I know C# in Windows, and have always wanted to learn C. Linux has terrific (and free) tools to do so. I've been a Microsoft MVP for ten years in the past, and know the Microsoft environment thoroughly. To speak well of Linux and remain a big fan of how Microsoft does things tells you that Linux definitely has something going for it from a developer's perspective. My current Linux machine will definitely not be my last.
I started using Ubuntu around 2010-2011. Although while I was in the Army, I was introduced to a Linux OS as it was what the AFATADS computer used back when I was computing firing data for artillery. That was around 2000-2001. But I decided to go all in around 2014 by stripping out the windows OS out of my HP laptop and installed Bionic Beaver 18.04 LTS. I have since upgraded to Jammin Jellyfish 22.04 LTS. For me, the best way to learn was to just do it. I am still learning and still consider myself a noob however in the small hick north Texas rural town i live in, I am like one of maybe a few people who uses a Linux OS in the whole county. The command line hasn't intimidated me like it use to when I first started. And I am still using the same HP laptop (its like 15 years old). When I do fine a suitable replacement for my laptop, I will use this old one as a server and home cloud storage and fumble my way through that experience.
One another thing where Linux is usually worse is debugger GUIs. Windows has a bunch of debuggers with GUIs, while the Linux ones I find for Linux are near useless. I need debuggers to do simple things easily, and I don't think my usecase for them needs massive script files for debugging.
Linux makes a lot of development things easier! The one problem I run into is that I need to at least test on non-dev OSes, and in some cases, do platform-specific stuff I can't do outside that platform (biggest case: macOS code signing).
Linux is better for software development because the activity of building software is about flexibility and transformation. No other system embodies that better than Linux not just on a technological level but on a legal and philosophical level as well. I thank you for bringing this topic and this insight to the forefront that others may see it in the accessible and highly relatable way that you’re able to convey.
Thanks for the video. Well done. It's good to recognize Linux's strength in the area. By the way, I don't understand the numbers in the opening slide. Should they equal 100%?
Fun fact: PowerShell now has a fair amount of Linux command aliases (e.g. 'ls' is aliased to its PowerShell equivalent). Also, ssh now comes pre-installed on Windows 11 and later versions of 10.
Those aliases are one of my biggest annoyances with PowerShell. C:\Users\user> rm -rf foo {insert long error message} C:\Users\user> rmdir /s /q foo {insert long error message} C:\Users\user> help rm {insert long help message} C:\Users\user> rm -Rec foo I suppose they are helpful when transitioning because you can _help rm_ to get the help page for Remove-Item, but they also mean you need to learn to do things differently, and the pre-existing aliases give a false sense of "I can do this with the commands i already know."
@@epsi god yes. this is so damn annoying. "rm a.txt b.txt" ... "Remove-Item: A positional parameter cannot be found that accepts argument 'b.txt'." Oh, cause the idiots couldn't make their alias handle multiple positional args ffs.
I use macOS as my daily driver is because it's Unix base makes it both stable and I automatically have a set of Unix tools and then Homebrew lets me install the few tools that aren't installed by default.
Why? Microsoft were losing massive numbers of developers who were switching from Windows to macOS or Linux for Cloud development. Things were rather painful before WSL/WSL2, the updated Windows Terminal, and native OpenSSH, etc. Personally, it's still not quite perfect but it's a vast improvement over the situation before these improvements to Windows.
on neckbeards actually code on a Mac. You'll get a lot of front enders who wouldn't know an algorithm from an elephant, but it's not that popular really.
@@MiningForPies not sure what you mean. It all boils down to three things: 1. Don't use Windows, it's a literal dumpster fire 2. Linux is great but it's messy as hell 3. MacOS is a version of Linux with some benefits on top, and it's not messy With the advent of Apple silicon, I am loving my time developing on my M2 Max 64GB work MBP lol. If there was one word to describe it: sublime.
@@SahilP2648in 25 years of developing I’ve only ever worked with front enders who use mac for coding. I’ve worked with developers that bootstrapped windows onto macs to do their backend coding. I love my M2 MacBook Air and do code on it myself, but I’m the only one I know, and when a Linux distro supports apple silicon then I’ll probably put that on the machine itself
@@MiningForPies that's not likely to happen. I don't know what was required for Windows to work with Bootcamp but maybe Microsoft had to work directly with Apple to enable that. I at least am not aware if Linux was installable on Macs pre-apple silicon, but that kind of defeats the purpose of owning a Mac where everything works seamlessly. There will be a myriad of driver issues if Linux is somehow installable and runnable on Apple silicon and it won't have as much security as MacOS. Also one of the things I love about MacOS is the custom file system. Probably the best out of all. The speed of copying files, even small ones is the best I have seen (not the best at deleting stuff though, which could be one of the side effects of the inner workings of it).
As an embedded dev, I am constantly debugging strange hardware targets over serial ports, USB devices, various debug adapters, and I need to talk to instruments like multimeters and oscilloscopes. This can all be done on Windows but the driver hassle is endless. On osx, it's hit and miss. On Linux, I can always get what I need to work.
A couple of these are exclusive to Linux, but most of these things apply to MacOS as well if you take 3 minutes to install homebrew. MacOS even uses zsh by default now, and has broader support for commercial software than Linux. You can do a lot with MacOS if you are willing to put in the effort. I find a lot of Linux users try MacOS stock, then complain it is missing too many important features. Like, you use Linux, you are used to manually configuring things. Apply that philosophy to MacOS. Homebrew, yabai for window management, iterm2 or a good rust based terminal, skhd, vim, tmux, etc. There's so much flexibility, and you can still use those commercial apps when needed. Yabai will solve the flaws with window and space workflows, and homebrew is all you really need for a development package manager. If you put in the effort, it's the best of both worlds (other than not being FOSS, which is a big deal to some).
Wrong data, linux usage is around 18% by developers and windows 60%. Some of the reasons are game developers can't use anything other than windows and mobile app developers have to use macos. Also mature OS like windows and mac providies enterprise management tools which let's companies apply their policies while giving admin access to developers.
@@macethorns1168Window manager. Things like Qtile, i3, dwm. It's a lightweight way to use Linux desktop without using full desktop environments. But it's for advanced users and might take a lot of effort to learn how to set one up and use it.
@@macethorns1168the main different is that the average WM is "tiling", meaning per default your windows tile automatically and are side by side. A huge advantage is separating windows into workspaces you can access with a single hotkey. Allows you to hypertask without the overhead needed to figure out where to click to switch to what you want
you missed the most important argument why people prefer using macOS instead of linux. All UI engines in linux suck in one way or another, they either are laggy, not configurable or don't support multiple monitors with high resolutions well, this is very important if you work with multiple monitors.
I personally think it entirely depends on the environment. I used to be a computer science major, and I really liked using Linux for the predominantly Python-centric environment that my classes were at the time. Now I am working in and studying natural resources and we use R. I tried using it with Linux in Ubuntu, Ubuntu-based distros, and Fedora, and all of the made installing package dependencies much more tiring than I have been experiencing in Windows. Don't get me wrong, I have enjoyed my time with Linux. I will be returning to it in some capacity after I finish Ecology this semester. I was just simply struggling with dependency loops more than I would have liked when I was supposed to be focused on assignments.
how have I been watching your channel for a few years now, and only *just now* noticed the 40k Start Collecting boxes in your background?! Also, you're a man of taste I see - Drukhari :)
It really depends on what you are developing. Most of the code that I write doesn't depend on the OS, but it depends on the database engine. So depending on which database I am writing code for, I use the OS it is installed on. Also, if your writing web apps then you can use any OS, but if you are writing apps targeting a particular OS, it's better to use that OS to develop the app since you can test it with that OS in mind. Since most of the programming I do is maintaining legacy systems for programs written decades ago, I have to develop on the OS the app was written for whether that's Windows or Unix.
Linux absolutely does a lot of things better than Windows, but as a professional who spends a lot of time developing on Windows, I couldn't help but notice some glaring inaccuracies and a general lack of understanding of how developers normally operate on Windows. 2:20 Windows already has an ecosystem of package managers, and you even brought up winget yourself, which is already installed by default in Windows. Package managers aren't really needed for developing on Windows though since it's better to just build from source regardless of OS. Windows lets you use whatever compiler toolchains you want with very loose coupling to the OS, and package managers generally don't have binaries for all these options. Trying to use a different compiler toolchain on Linux is a much more painful experience. Projects that aim to be cross platform work just fine by building from source as well, so there's no need to tell people to go figure out how to acquire software or packages on their OS, no need to run random commands or unsigned scripts to configure or set up a development environment etc - on Windows you just install the compiler toolchain and IDE of your choice and build the project. The idea that you have to share configuration data or even replicate an entire OS just to be able to develop for a project sounds to me like an admission of poor development practices. If your project is multiplatform and expected to be used by a wide variety of people, and you can't even get it running in the debugger without making drastic changes to your development environment to match some uniform configuration, that's a failure from the start. It's much better to have every developer working on a different platform with different development environments because it makes it much more likely that portability issues and happenstance code will be caught and fixed early on in the development cycle. Naturally, building from source dramatically reduces the friction here, and bypasses any need for package management. Just checkout dependencies as git submodules and you can get security patches right away, and you still have full ability to choose between static and dynamic linking. This approach also makes you ready for packaging into the various packaging formats Linux supports, with no need to worry about what's installed on the host OS, as well as porting to console platforms if you're developing a game. 6:05 Windows Terminal also lets you add custom command prompts and even set them as default, so you don't have to work with cmd or PowerShell at all on Windows. Linux is better for letting you entirely replace the default terminal app itself, but it's inaccurate to imply that Windows doesn't have the next best option. 6:50 Windows already has built-in SSH as well, installed by default, with a full guide on how to use it available online from Microsoft. Seriously, open a terminal on any Windows 10 or 11 device and type ssh and hit enter. It's there. Even curl comes installed by default on Windows. Implying that you have to install these manually is outdated information. It's fair to say that Linux distros tend to preinstall a wider array of tools that are useful for development, just be careful about which tools you pick specifically, since you may be surprised to find they're already preinstalled on Windows too. 7:57 you forgot to mention Visual Studio is missing from Linux, it's entirely different from VS Code. This is absolutely Microsoft's fault though and I'm not happy about it being missing. I guess Visual Studio is the Xcode of Windows, except Xcode is significantly worse. 8:40 Windows is also available as free virtual machines, pre-configured to run properly as a virtual machine without you having to manually bypass anything, with development software preinstalled as well. Installing Windows manually is a waste of time. The rest of the video is fine since it's just usual non-development Windows vs Linux stuff that is easily agreeable. I mainly just take issue with the lack of research on how Windows developers actually develop.
This used to be the case but WSL2 is damn good. It's the best of both. I have linux terminal and professional software as well as good battery life and drivers and games of Windows.
I prefer dual booting between the two tbh, WSL2 is very nice if you're building something for windows but Linux provides a better experience otherwise unless you have really incompatible hardware. If you're not writing to the windows partition from linux you can also use hibernation to make the switching pretty painless.
It's so confusing to have so many shells in Windows nowadays. cmd, PS, WSL, Git bash, did I miss something? Sometimes node works better in one of them, git in another, and the constant juggling is so frustrating. And don't get me started with Python on Win xd I avoid using Windows at work at all cost
easier because you are mostly writing console based application as opposed to a GUI based OS means you do not have to learn Win32 or MFC assuming you are using c++
I switched to Linux (Fedora) on my personal/work laptop and I can't express how wonderful this change has been. Of course, there were a few drawbacks mostly because of the proprietary software I need but Wine and VMs solve most of these problems, especially Wine because you can set it up in a way that's almost unnoticeable that you're running incompatible software. And the developer experience is great, its super easy and quick to get started developing almost fresh out of the box in most distros, managing different development environments is also much better than on Windows, and all of the terminal utilities and functions are just so much better and convenient (yes, you can use WSL on windows but it's not the same) Even the performance and battery life of my laptop has greatly improved, and on top of that, I can customize anything on my computer to create a unique layout. I really love it, and recommend anyone to try switching
I'm with ya buddy. Switched to Fedora from Mint a few years back and I'm absolutely in love with Gnome now. Best desktop experience I've had in any OS.
the main reason i love linux is: when i had very old pc, had ram 1gb i installed older versions (64bit) of linux mint and learn to code. it took me 6 or 7 hour(honestly) because i couldnt make proper setup since i had no idea of os. i begin to use 16.x and upgraded upto 18.x grdually😆. although it was scary for me i enjoyed it. i reinstalled linux multiple time because i couldnt solve some issues😂
I don't agree with the language support section. I use different version of languages and I always avoid installing it from the distro's repo since it comes with mostly outdated versions! Same for the web development section, again the last thing I want to run is to have the same version of Apache/nginx which is available on my Ubuntu LTS Also my linux machine distro most of the time is different compare to what runs on servers. I do like the fact that Docker/podman runs on the host linux kernel as oppose to running on a VM in Mac/Windows. It means slightly better performance running containers for development.
Being a Linux guy lately I do look forward to winget getting more software. Hopefully the days of searching the web manually when setting up a new windows machine will be a thing of the past soon.
He says it has all the IDE's and then conveniently does not even mention Visual Studio. I have been a dev for close to 20 years now and never been employed by a company that did not use Visual Studio. This omission really invalidates this video for me.
@14:58 Current .NET (5,6,7,8) and .net core (1,2,3) are fully multiplaform, if some one writes in old .NET Framework 4.8 or older are binded to Windows
One unfortunate thing to consider: if you use Linux, you might be on your own. For example, the company VPN is so shoddily set up that I have to jump through an increasing number of hoops to simply use it as intended, and since Linux is not officially supported, I can't even really make a fuss about it. This might be a skill issue, I am pretty clueless about networking in general, but I don't think that I am the only one.
My client devops use Linux and Mac, I connect to dev cluster with Pritunl Client, Perimeter 81. Year ago Perimeter 81 mysteriously failed to reconnect under Arch, resolved after its update. No other issues.
@@sergeykishI mean more like having to manually change the DNS server order in /etc/resolv.conf each time after connecting, the proxy script not working like on Windows, not getting Teams messages sometimes while on VPN, cheeky things like that.
Linux guys: I like Linux because I can set up every little thing just the way I want with no bloat Also Linux Guys: Linux installs everything for every programming language and in Windows you have to set it up
I'm all about WSL 2 on Windows. I'm the chief (really only) engineer on a few OpenText information retrieval SDKs used by corporations worldwide, and I have to support Windows, Linux, and FreeBSD. I do all of my coding, and almost all of my Linux debugging and performance gauging, in Visual Studio. WSL 2 is a godsend.
I am also a developer, I have tried different destro like Ubuntu, Kubuntu, ZorinOS, Linux Mint but none of them were stable for my laptop, my laptop heats too much with linux destros So I always had to comeback to windows
Those are essentially all the same OSes, they're all based on Ubuntu which is quite bloated. Try Debian or Arch, they're both a lot more streamlined than Ubuntu.
I need to write scripts, command lines use foreign package manager... on Windows i download the visual studio installer and in 3 clicks i have all my environment up and running. The only text i write it's when i write actual code... Sorry man, this doesn't work for me and the "most" in your title is misleading
I think you glossed over the differences between the distros. If you have a complex deployment, trying to maintain that in nixos, Ubuntu, Fedora and Arch is going to be a real pain as they have different package managers, and the packages might have different names. Faced with this challenge, I'd specify my development environment as a docker-compose file, which should run the same under Ubuntu, Fedora and Arch (don't know about nixos support) and connect into it using ssh.
Nix is a package manager and the nix language (especially flakes) are well used in deployments. NixOS is just nix package manager on steroids, where the container also manages the desktop environment. Nix develop and containers are amazing, if only they were documented thoroughly.
I don't know why people don't know this lmao but docker compose is not how you should use docker by default. You can commit an image after installing thousand packages or whatever, then upload it to your private hub and then you don't have to setup anything after running the downloaded image. It's just like uploading and downloading a VM image. Compose should be used for only some very specific scenarios as compose still installs everything from scratch (unlike the committed image like I mentioned) which takes time.
Main reason - it's free, customizeable, android & SOCs run it, old computers get security updates, the moral reasons, docker and "any" compute clusters (not just "that" one we let you use), telemetry and privacy, better IT service when you choose to pay for it, multi-booting operating systems, there are TONNES of great reasons.
I first got a taste of linux when my Microsoft Surface Go 3, which unsurprisingly runs Windows 11 by default despite just scraping by with the system requirements, was getting significant slow down, at which point I decided to set aside a few days to play around with different distros and to see what works. After landing on Debian with the surface kernel and doing some extra config to properly integrate touch controls, it now runs better than Windows ever did, has tripled my battery life time and feels a lot more natural to use on a tablet with GNOME. Shortly after I set up dual booting Windows and Manjaro on my main laptop, keeping windows around for things that I can't do on Manjaro, such as Visual Studio for .NET/C/C++ development. Certainly helps that all the JetBrains IDEs are entirely functional on linux, made the transition a lot easier.
Who said the keys under 1€ are not allowed? But yeah, businesses with "cyber" police need to have all of their software licensed if their product is commercial.
I prefer macOS and it’s so good, I have moved so far away from Windows, I don’t even play PC games that much anymore. I’ve played more console games instead. Linux is good but for me it’s macOS > Linux >>>>>>>>>>>> Windows.
Hey Nick I totally get where you're coming from! Windows has come a long way with features like "winget" to simplify software management, improved battery life optimization, a polished user interface, and fantastic game support. Plus, Windows Subsystem for Linux (WSL) is a game-changer, allowing you to run Ubuntu seamlessly within Windows. Apps Like Adobe, Office, Teams, WhatsApp, Phone sync is phenomenal on mac and windows. It's impressive how Microsoft has addressed many of the reasons why people used Linux in the past. For those who rely on a longer battery life and a more user-friendly experience, Windows is becoming a compelling choice. Of course, Linux still has its unique strengths, especially for open-source enthusiasts and developers, but it's great to see Windows evolving to cater to a wider audience. It's all about choosing the right tool for your needs! Keep enjoying your Linux experience, I will enjoy my switch to Windows years later and thanks for sharing your thoughts! 💻🎮👍
as a developer who don't like remembering things and don't like typing a lot of command, is there any tools to help structuring command on terminal like when you typing code in vs code or using command palette? something with quick documentation of each command that I typed in and offer suggestion? Having to look for documentation manually is the only thing that keep making me back to windows
I've been thinking this a lot too. There's too many commands and their arguments to remember, especially for less commonly used things. That just doesn't tend to be an issue in windows. I don't memorize everything about every program I use, I just see the options and decide.
I'm a dev, and I totally agree. And I really wanna emphasize the freedom Linux gives. You can, and it's easy to do whatever you want with your system. No annoying "safety nets", that's usually just in the way.
This is exactly why I swapped over, you have no idea how many hoops you have to jump through through to display Japanese text in Windows (C++) whereas with Linux if you've got a font with Japanese installed it literally just works.
How the hell i haven't subscribed to your channel? I have been watching your videos for a while now but somehow i missed the sub button, sorry for that. I meant to say that i like your honesty in these videos and like how you are not taking anyone's side than your own. Keep up the good work!!!!!
Work for a small company that's provided me with a mac laptop, but used to let me use my own linux desktop as well, which was the best of both worlds. Did most of my work on the linux desktop, but when I was mobile (visiting HQ...) I'd use the mac, which was great because they're great at just being a portable device (and being genuinely unix-based, are "close enough"). Just recently, however, we've been "strengthening" our processes, and I'm no longer allowed to use my linux desktop. A friend there is emulating linux on his mac, and they're fine with that (for whatever reason). I'm just dealing with it for now, but hoping I can get some linux laptop option in the future...
I'm retired from tech now, but I have refused jobs that required me to use Windows. There are plenty of employers out there who are fine with letting people use Linux, so go work for them.
@@dfs-comedy yes, unfortunately the Windows developers at Microsoft are monkeys in a zoo. Windows is the worst OS I have laid my eyes on. I use Windows now only for gaming. I cannot use it for development. Linux unfortunately has driver issues and of course, app support is non-existent thanks to companies and developers not developing anything for Linux. That, and setting it up securely (with password and encryption, migration) is nowhere near as straightforward as in MacOS. I got a $1,600 USD M2 24GB MBA for my personal use, and for my work I have M2 Max 64GB MBP (good thing company bears the $3700 price tag lmao). New Apple macs are a godsend for portability and development in general. Also helps the fact that I work for an EV company and we many times have to build and test directly in the car to test out your new code and for that the ARM architecture provides amazing battery life. I got one battery pack and I am all set for building throughout the day in the car.
Powershell is powerful and nice but one thing I can't comprehend is why is it when I press tab to autocomplete, powershell always takes about 0.5 - 1 second to do that. And it also always adds "\." to the filename which sometimes breaks the command itself and says that the file doesn't exist. Drives me nuts.
You already mentioned containers. Let me extend a little bit. I am not a pro dev but a system admin. Using docker or podman is immensly important for modern development. And it is built in in many distros or is easily installable. I can define all the containers with runtimes and apps I need locally and simply deploy them wherever I want to, be it kubernetes cluster on a cloud, vm or bare metal. Updating and testing is easy as well because I can be sure that the container environment I develop on is the same as in production. There is podman for MacOS but since containerization is dependent on the system architecture you can run into compatibility issues. If you're using Windows you can't use docker or podman natively, just on WSL.
Let's be real here though, most home computers are windows so most people in IT has to know windows well, a lot of us have to know linux well too. Windows has the Chocolatey package manager, which works quite well, much better than winget. So users can just use chocolatey to get packages no problem, you can also use powershell to make it automatic just as you say you would use bash. And no, most people use windows10 or 11 which the commands are basically all the same so they do not differ, they differ more in the linux space lol with all their different package managers you need 20 different commends for each of them to install packages lmao. For windows it's just one for chocolatey. nixOS is cool tho, it is something really interesting they have got going on there. I'll definitely be keeping an eye on it. For now i'll be booting openSUSE tumbleweed and windows. Most IT professional have to know both anyway, not knowing or refusing to learn either system you will just shoot yourself in the foot.
Linux is a non-starter for most PC game developers. PS5/XBOX Series SDKs for development are also Windows only WSL allows to run anything Linux from Windows, but reverse is cumbersome as you noted. Developing on the same system as the your application runs is a good point but even if you run the same distro you should be using Docker anyway. So effectively Windows IS more flexibility as it does everything Linux can plus everything it can't. The ideal setup would be for WSL to get so good with GUI and hardware so that you would be able to boot straight to WSL and use it as Linux desktop without performance penalties. And be able switch between Windows and Linux desktops in the same way we can switch between desktops today. We're not there yet unfortunately.
Non developer power user here. Been using Linux solely for almost 20 years. I got tired with spending so much time keeping my windows desktop clean and having so many automatic updates and changes made. I set-up my desktops for maximum productivity and efficiency and use.
What about Graphic design software for Linux? Adobe Ilustrator - not available. Affinity Designer - not available etc. I'd switch to linux if at least Affinity suit were available.
Download your free issue of Admin magazine thanks to Tuxcare: bit.ly/43XnjhT
never ever trust shortened links, 99 of 100 are a virus, so use a sponsor that is a little less cringey, a squarespace or wordpress account is like 15 bucks a month so zero excuses for a shit ass bitly hacker link
Hi, Nick! Could you do a video focused on windows tiling software for Linux?
srly.. you neglect to talk about the terminal?
@@CommanderBeefDevHow is it a "bitly hacker link"? And you suggest using "squarespace or wordpress"? Those are way too complex for a link shortener. Just type the URL followed by a plus sign to get a preview of the link, offered by bitly themselves.
Aww, this link is b0rken :/
You forgot docker, which is widely used by developers. Docker runs natively on Linux, whereas it's virtualized or even emulated, thus slower, on others OS.
True!
Docker is at best a mediocre experience under non Linux systems. It forces the waste of tons of resources when not used in Linux.
@@tschorschYup. I was shocked when my coworker said he needs 32 GiB of RAM to develop frontend app with docker, while I was running 4 docker compose projects at once with barely any RAM usage.
But to be honest, that comes with some annoyances when the app doesn't behave the same in Docker Engine and Docker Desktop, that's why they launched it for Linux, and it's virtualized there even on Linux
That and on other OSes like Windows or macOS, you run into other issues because of that virtualization/emulation such as not being able to pass the --network flag to share the network with the container which is useful in certain scenarios. Docker for Linux is simply better.
As a developer i totally agree with this statements. Only reason We use windows is that companies use pre-installed in pc systems 😂
Exactly... But I have started WSL and when it gives issues.. then I will use my phone and termux to connect from laptop
Yup.. and you just have to tolerate it...
@@aprile1710 Maybe for you but in my company the admins use active directory, Exchange and the whole Office 365 eco system. I don't like it but have to tolerate it.
@@aprile1710It's never been my primary reason, I always end up using Windows or Macos because of corporate decisions, not technical reasons and the Linux experience has always been better for me. Only if you develop directly for Windows or Mac do you need those operating systems.
I've been using Linux to develop dotnet and it's really good. Nobody else runs Linux in my company and we deploy to a windows server. So far I've had 2, both solvable in a couple of hours and one inconvenience (no edit and continue on Rider).
Important to me: Unlike Windows, Linux is not fighting me. Its not forcing me into any cloud services, online accounts, what search engine or browser i use, where so store my files and what tools i prefer. Its also not changing the GUI behind my back or installs "Apps" I neither want nor need.
It's not that for me, Windows sucks battery life out of all modern laptops. If you install Linux, you will get driver issues but better battery life. And Windows UI and performance overhead is all over the place. If you try to resize the window on most Windows apps, you can see horrible lag in the UI. Like wtf are we living in 2023 or 2000s? If you want to see an example, open the 'Services' app from start menu and resize the columns and you will see what I meant (or resize columns in File Explorer, then resize the window and see the difference). This is all across the board. MacOS on the other hand is smooth as hell somehow and it always was. With the new Macbooks the UI is even more smoother thanks to 120hz display and Apple silicon. It's even better when I connect to my 144hz gaming monitor. Also, not to mention the 6 most important command line commands you can't use on Windows: cd, ls, grep, mkdir, touch, nano (yes nano is the best, fight me). If you are a developer this is your bread and butter. It saves you a lot of time depending on your workflow.
@@SahilP2648 Windows does have cd and uses dir instead of ls?
@@blazingblast dir sucks compared to ls and this is just one example. There are a ton of things which are better in a Unix environment than DOS.
*nods along in MacOS struggler*
💯 about Nano
At the end of the day, most companies prefer giving you Macs of Windows PCs due to ease of applying restrictions (like denying you sudo/admin rights) and installing their spyware :(
Restrictions aren't inherently bad or security reasons. But I agree. Active directory and Exchange are easier for admins to handle.
@@QDSGames true
Yep that's why my company only gives us a choice between Windows and macOS. So they can install their corporate malware on the laptop.
@@Watchandlearn91 Yeah, I'm the same problem. We were initially a smaller company, which allowed Linux. Then we got bought by a bigger company, now no more Linux. FML.
Yes but it's mostly because Macs and Windows have defined industry standards for security like Touchid, TPM keys, Windows hello, Bitlocker etc. which Linux doesn't have. The only way to encrypt Linux is using a password which encrypts the whole drive like Bitlocker, but it's not integrated to use biometrics, so ease of use is thrown out the window, not to mention migration to a new laptop/setup can be a pain in the a** too. And then there is the non-existent driver support. I tried installing 3 different Linux distros on my personal Lenovo Yoga Carbon laptop which has a 90hz screen. Either I could only use 60hz, or I could use 90hz but there were issues with the scheduler somehow (on pretty much any workloads it would freeze up the UI and would hang completely after some time).
Something to add is the fact that if you want to work on a specific framework, there are high chances that you can start without downloading the said framework because it is already there on your system as dependency for other programs. That is usually not the case for Windows and MacOS because apps are shipped as standalone (apps don't share dependencies more like an appimage for Linux)
Moreover compile time is smaller in comparison to other OS.
True!
I really want to get started with linux, but I'm not sure of which distribution to use, I'm familiar with Ubuntu, but the one in the video is very appealing. What is it called? debian? Gnom?
@@abigalebrawl9956looks like he used multiple distros but all had gnome as desktop environment. I saw fedora, Debian and Ubuntu. It doesn't really matter what distro you choose. Linux is linux and it's customizable and can be whatever you want it to be. If you're new, I'd stick to ubuntu, mint or fedora. Depending on what kind of use you expect. My issue with ubuntu is that it comes with snap which in my experience with Firefox was just inferior to the non snap version. Even flatpaks aren't that great but they have their use.
@@geordan6740 thank you very much, really apreciate It 😁😁😁
I love how apps are standalone one macos, so much less headache
I hope more apps are packaged with deps in them
Linux, like a lot of open source software, has been built by developers for themselves, which is why it's so good for developing. At the same time however this is also a downside since it means it mostly wasn't made with "normal" users in mind.
Normal users cannot administer their own systems. When Microsoft tried to let them do that (Win XP) they had crapware and toolbars and viruses galore--bad experiences. That's when Mac OSX and iOS really got a foothold into homes. Apple made people's lives easier by administering their systems for them. Android copied this model and did so so that Google could harvest everyone's data. Microsoft has made every new version of Windows more like this. They remove user autonomy and make the system more and more managed, slow boiling their users.
GNU/Linux just doesn't try to copy this model. It's designed so that developers can tool it out however they want. Distros are put together so non-developers can outsource that effort. But it still requires self-administration. It's not just "not the answer to a normal user's problems", it's asking a completely different question.
@@heretolevitateme you're not wrong but the windows xp had a lot of viruses because the lack of updates, internet was slow and iirc there's not built in update system, i remember formatting my windows xp every week, it was a standard procedure for normal users
It's true that "normal" users cannot install or administer Linux. However, they can certainly *use* it just fine. My late Mom's PC ran Linux because I refused to support Windows, and she had no issues with it. My non-technical sister's PC also runs Linux for the same reason, and she has no problem using it.
There are distros made for beginners, like LM
Depends on what you consider a "normal" user, and what you're willing to believe that they can do. As a developer myself, the largest barrier to "normal" users using developer tools has been other developers who insist that such "normal" users will never be able to use those tools and we have to spend massive amounts of time writing less powerful GUI stuff.
Yet I had a co-worker who couldn't even use a spreadsheet doing HTML updates and committing them to a revision control system in just a week or so.
"Normal" users just need appropriate support, and developers that are willing to help them use the tools, rather than do everything they can to prevent them from using the tools.
Just slightly related but personally I think it's a very nice trend. Since Oracle decided to make some licensing changes for Java we receive a lot more deliveries from vendors with Open JDK based JREs.
Where can I read about the Oracle Java license changes? Isn't that decades ago? OpenJDK is the Oracle Java reference implementation, since they took it over from Sun Microsystems. You sound like OpenJDK is independent of Oracle, it is not.
When the license changed in the past, our company moved away from Java. We still use Java, but it's more a burden. Old complex code, difficult to maintain or to replace.
@@wWvwvV i know Oracle, amongst other companies are involved in OpenJDK but it's free and open-source
The only reason why people are stuck with windows is it's software support
My theory is that the more things move to the cloud based app model, the less apps will be dependent on Windows.
@@cameronbosch1213 But more money will be asked for those Cloud-based applications. Monthly subscriptions suck ass. For the games, it's just a different story.
That‘s a very good reason, don‘t you think?
It's not that Windows supports the software, but that the software was developed targeting Windows.
@@ordinaryhuman5645 that's what I meant btw
Definitely one of the best advantages of developing on Linux is that many bleeding edge technologies are available first on Linux - recently I remember GraalVM and Docker for example. However I recently really fell in love with Powershell for setting up my dev environment and automating tasks.
microsoft offers powershell for linux, google it if you want
Powershell in Linux? I installed it but never used it. How is the experience? Does it mesh well?
@@tschorsch it does, and works really well most of the time, but you can encounter issues running commands made for shell like when using the input redirection operator ( < ) that Powershell weirdly doesn't support
@@tschorsch works like in windows, i don't use it but the software is there
I personally use ansible to setup my environment even on my machine and most in my team also take my playbooks to setup their environments up
As someone who isn’t a developer, just someone curious about technology, I’ve always heard Linux is better for programming, but with little explanation except for “because”. Thanks for this video for a better explanation than “because”. Keep up the good work, Nick!
yeah same thing for me, never really knew why
For me, Linux is better for coding because, as mentioned in the video, they are flexible. Flexible and primitive, I would add. You have command line, which works for every software that will ever exist and you want to make. Flexible also applies to user interface, you can also customize your coding experience (important, because you are going to do a lot of work with that computer, it is your working environment). All of this comes at the cost of user-friendliness.
It's not really better at all. They're just different.
Linux is better at hosting servers because you can make it as barebones and minimal as possible so that it can spin up and down on the drop of a hat.
The only reason people think linux is better than windows is because you can run and code with linux on a literal potato from 15 years ago, while windows is "Bloated" (see: fully featured). Poorly configured linux distros by less than experienced linux users has been the cause of tremendous amounts of hassle and pain when things would 'just work' on windows.
@@Sammysapphira I confirm (and feel 😟) your last sentence.
As a computer science student who has used Linux for 2 years I might want to add that most of the reasons he mentioned don't really matter. The only thing that differs is availability of some Linux only tools like pyenv. But with WSL, even that problem is solved.
Regular Visual Studio (not Code) is not available on Linux unfortunately, its a great IDE and really difficult to switch from since it has all the essential tools integrated in a single package. I personally dont use it anymore but that was something I really had struggles stepping away from
Rider does the job pretty well!
@@TheLinuxEXP it's just a shame they don't offer a free tier like VS Community Edition, but I agree it's a great IDE!
jetbrains ide's are a good alternative
Highly recommend JetBrains Rider, I switched to Rider after moving away from Windows and haven't really found a need to look back. The IntelliJ tooling itself with type-ahead and language support is very high quality, it has a huge plugin ecosystem since there are a whole ton of well-supported plugins (since they're usually cross compatible with the other IntelliJ editors), and it also has configurable keyboard shortcuts/themes (including a fully Visual Studio-compatible keymap) which make it super easy to transition.
I am .NET dev and I am facing the same problem so still using Windows due to that, for other case Linux goes very well.
Actually one big IDE, that is not available on Linux, is Microsoft Visual Studio (not to be confused with the text editor, that is named Visual Studio Code).
Precisely but Linux fanboys always come up with their alternates which never really cut it. I've been using VS since 1996 and I still love it for C++ development.
@@toby9999 Same. Nothing compares to VS.
Kdevelop is inarguably better
@@toby9999 CLion at least let's you debug the RAM on embedded devices
I'll mention the compile speed advantage as well. When compiling software, you will usually spawn hundreds to thousands, possibly tens of thousands of processes during the full run. The Linux kernel is just much more efficient at spawning and managing processes or threads, IIRC that sometimes results in better game performance as well.
Linux and MacOS both have better schedulers than the dogshit Windows. I have already switched to MacOS as my personal project machine completely, and I am using an M2 Max 64GB MBP for my job and I am loving every second of using Macs. Earlier the cost just wasn't justified but with ARM, battery life and the smoothness, seamlessness of it, Macs are the best for development.
20+ years of development on Linux. Hope for 20 more :)
How old are you ? 🙂
Will stay alive to 35 for that
Probably the only downside to Linux is that some programs don't work on Linux.
For example, if you want to code in C# on Windows or MacOS, you can rely on regular Visual Studio (not Code, mind you). Meanwhile, regular Visual Studio doesn't have a Linux version, so you have to rely on alternatives, like Rider.
Visual Studio on mac is completely different program than VS on windows
i am actually in this scenario, i want to code in c# but do not want to go to windows. That being said, i heard people say that Rider is amazing, it is more lightweight and even has integrated database manager, unlike vs.
@@gorudonuvisual studio on mac is dead
@@hero3616 guess I have outdated knowledge then but that's even better
Real men code on notepad
Been a linux fan for long. But, TBH, I think I am more productive on windows. I don't spend time searching solutions for why my WiFi stopped, or no sound coming or why something isn't working well. I still prefer linux servers.
Really?, I have been using arch since Last year, and everithing is OK. Everithing is plug n play.
@@bryandelomejor Linux on a laptop is a pain in the ass to get it all going.
@@miloradowicz its not. I have been using Arch on my laptop since 2 years and it works much better than it does on Windows.
@@miloradowicz Don't think this is true in 2024. Linux mint and many other distros offer a complete experience
Plug n play? Arch? 😂
2:55 While it's an advantage to get started, after a while you normally transition to language specific package managers because they have advantages over system package managers (e.g. it helps to avoid the "it works on my machine"-syndrome).
That depends on what you try to install. Those language specific managers tend to be only used for managing a project's dependencies.
@@Gramini Yes, obviously, and we are talking about development.
@@kuhluhOG Well nowadays you have docker and env which are better than using something like pip. Although pip is not universal and it will not install everything under the sun. pip is mostly useful for projects like the guy above said, but not all languages or frameworks have something like pip.
I know your audience is heavily Linux biased but in my 6 years as a dev I’ve only encountered a few devs that choose to use Linux. They seem to run into issues more frequently, which may be due to their own doing. Most devs I’ve worked with choose MacOS. I’ve been able to choose my laptop and OS at all but one job. I develop .NET mostly and I choose MacOS for my primary machine. A lot of that is due to how efficient their silicon is.
I never met a dev that would prefer using Windows if they weren’t forced to do it in 12 years
In 23 yrs of professional development I haven’t seen one dev using GNU/ Linux tho. I’d say I’ve met at least 500 devs.
@@hero3616 mostly has to do with driver issues, migration (upgrading to a better machine), integrated security (like Bitlocker, Windows hello, Filevault, Touchid). If you know how to setup Linux correctly and know how to migrate correctly, it might be good, but companies still can't let you do that since it's not integrated.
Exactly this.
@@hero3616 One of my previous companies had a reasonable cohort vim on linux devs.
That said they all migrated from the same company.
I use it because POSIX is a remarkably stable AND RICH set of interfaces. Porting jdupes to Windows wasn't too hard thanks to MinGW but getting Unicode working was a horror show. I actually wrote a lot of porting helper stuff that's would eventually become a separate library called libjodycode. Things like converting the Windows epoch time to the UNIX epoch time, converting UTF-8 to UTF-16 which is what Windows NT kernels have used internally since NT was created, and so on. Porting to macOS is often just a matter of writing around missing or slightly different features or interfaces.
Some IDE's only come as a flatpak and unfortunately flatpaks for IDE's are troublesome for now, because you need access to your OS runtime. Also another big IDE that is loved by many and is missing from Linux is the Visual Studio (not to be confused with Visual Studio Code).
I suggest you to use snaps for IDEs
Containerization is great on servers, and absolutely dogsit for desktops. Flatpak, snap, doesn't matter what it is, it's going to make you pay in time and frustration.
I use a headless vm on my machine and all development happens on that vm, which has regular ubuntu on it, host system is fedora silverblue and basically has nothing except libvirt and ide, there is 0 system rot this way
I think many 'advantages' you mention in this vid are shared across macOS as well, the bash script, built-in, different terminal (I use fish on my Macbook) etc. Basically I'd see those as some common good things of having a UNIX-based OS, I still am not convinced to switch at this point as a developer.
If only macOS had a decent package manager. Homebrew fills the gap, but the packages provided leave a lot to be desired. It was a pain getting emacs working with homebrew for some reason.
fish isn't a terminal,it is a shell
It's difficult to say what specifically makes Linux more developer friendly. I had to use OSX for a year at work - fortunately not for development. You'd need to pay me very much to use it for development. I find it even worse than Windows with WSL. In some way, I felt like the fancy UI was constantly getting in the way.
OTOH, I once did an experiment of setting up KDE so it resembles OSX as good as possible. I got quite close to replicating a OSX desktop completely, if that's your cup of tea. That, coupled with the way better package management and wealth of available packages make me doubt that there's any development scenario in which OSX is objectively more convenient for development than Linux set up the way you like it.
Yeah guy in the video probably has never tried Mac os, he doesn’t know what he’s talking about, I switched from Linux to Mac os and I’m not going back !mac os is better overall and superior to Linux and windows
Development on Mac os is fine , I’m a developer too and I use Mac os.Whats wrong with it ?
I like VisualStudio (not Code) for allowing easy creation of GUIs.
I'm terrible as a programer thus I didn't bother to spend much more time on it but when I had someone guiding me, VS made it very easy due to how coding in that IDE works.
Wish Linux had that tbh.
Win32API is pretty bad for uis, if you run gnome you can use builder or generally glade for GTK based apps, as gtk is a lot better than win32 api is for ui
@@abanoub7002 Does that IDE have a drag&drop UI generator tho?
@@abanoub7002 when was the last time you made a UI on Windows? Ever heard about Uno, WPF, MAUI ?
Ah, yes! The best thing about working in Linux is the package manager. Also, the worst thing about Linux are all the package managers.
apt install -y everything
And the worst thing about Windows is missing the package managers 👽
(Yes, I know, there is the chocolatey (or how is it spelled?) and something else, but one have to install it first.)
@@1234567qwerification the cringiest thing about Windows is the shell/environment. That's why developers use Mac. For this single fact alone, not even mentioning the security, performance, efficiency etc. Unfortunately developers are stuck to a life long subscription of buying the next Mac but at least Apple doesn't squander the money we shower them with. That's not a consolation of any sort. I cringe when I think about the $3,700 MBP my company got for me. I know it is kind of necessary given the size of our project and well... Android studio being Android studio and browsers eating up RAM like black holes. It is what it is I guess. I am hoping for ARM/RISC-V based Linux laptops which are efficient, performant, light and have things like security and migration all sorted out. Not sure if that can happen in my lifetime but one can hope.
The biggest advantage of Linux is:
1. run any dev tool on local machine by copy pasting basic command straight from docs.
While in windows things can be tricky to run.
2. All the tools becomes available in Linux or Mac first. Then windows package is released later.
3. All the devs are either using Linux or Mac so problems get addressed and replicated easily
I think macOS is a good compromise since if you want to develop for iOS using a Mac is almost mandatory and homebrew is very good
Server side : Linux only
daily life Development: Windows has ( Linux, docker, games, Best UI, most stable multiple screen displays, advanced mature control panel out of the box )
Just started to watch the video, but 100% agreed
Do you really need to see the video to agree?
@@st0rmrider nope)
Since I started working professionally, I've never encountered a single engineer that uses anything other than a MacBook Pro (it's also the default laptop they send you at every company I've worked at). Linux always runs on the prod servers and such, but ain't nobody installing Ubuntu on their laptops.
Native Docker support is paramount to a vast number of developers also and that is only achieved on Linux.
This is the first time I heard somebody say PowerShell syntax is more natural than bash xD
They’ve really improved it over the years!
These days, I just use an AI to write my shell code. If it's of any complexity, I would rather use JS or python.
It is nice of linux to include gcc & python. I did have issue compiling something for windows, from wsl & linux native. Had to use msys2. QT is a fine UI framework if that whats stopping migration.
Okay so I'm in the "no choice, company wants windows" camp and between chocolatey, wsl, docker, vms, and powershell there is a bunch of ways to make yourself feel more at home. I'd still prefer to stay on Linux, but as long as my company provides the computer and actually takes responsibility for keeping it running I will survive. Plus, our product is mostly used on windows, so we have to know our way around it anyways.
The reason my company insists on using Windows has actually more to do with MS Teams (and all its plugins) and Outlook being our primary ways of communicating and organizing. We are not just a software development company, we have loads of other departments and while I think it would be possible to switch them to Libre Office, I dont think there is a a replacement for Teams that wouldnt require a massive retraining of 50+ people with little to no functional gain. When it is "maxxed" out on licenses and plugins, Teams is pretty impressive (minus the classic annoyances like not being able to mute someone just for yourself because MS didnt future-proof their audio-stream mixing...)
Yes this is a cry for help. If you have used Teams professionally for a while and switched to something better in the OS space, please let me know! :D
What?! Every minute I spend on Teams is dreadful. There is like a billion alternatives depending on your usecase, so describe it
I'm pretty sure the accounting department would struggle to switch from Excel + PowerQuery etc to LibreCalc.
We're heavily invested into the Microsoft ecosystem for communication etc. and I'm just using Chromiums PWAs. Outlook, Office, etc. nowaday run pretty well in a browser. I'm rarely using Teams, but whenever I do so, using chromium works fine.
We've been using teams a few years ago and switched to Slack. I find it much more intuitive and comfortable. It seems to offer way more integrations as well. I'd never want to go back. But I guess you already know that one and have reasons, why you're still looking for alternatives.
@@LA-MJyeah, its by no means perfect, but I wouldnt call it dreadful either. It's possible to create tabs for every Team, that can be used as shared data storage, or for (slimmed down) versions of Excel, ToDo (Kanban style) and OneNote inside of Teams, or to create smaller automations, plus a bunch of other things. None of this stuff is particularly impressive on its own, but the fact that they can all be used within the Teams-app and be equally accessible for everyone who is part of the Team is something I was positively surprised by. The integration actually works reasonably well and if you need to do more dedicated work, a lot of it can be exported to any of the dedicated apps with a single click... So, the use-case is pretty extensive: an app that can be a Kanban-board, a shared storage, a spreadsheet, a notebook, a messenger and an alright video-call app at once. And you can use the account for authentication on many other platforms. Plus, when considering this you cant forget that Microsoft does this need little trick where they lock you in with incremental charges: You already use Windows, well Office wont cost you that much more, and if you got office, Teams plugins wont be much more. And since you need MS accounts anyways, why dont you use our authentication tools as well? And by the way: Azure... there is no real line to draw, where the use-case ends because you can tag on so so much, all controlled through a single hub and with a single support hotline.
Every product individually is not that great but together they cover a lot of ground and everyone is familiar with parts of it, so the hurdles for integrating more are relatively small and I think a lot of companies go for that.
(This is not an endorsement, I would be fine without any of that, just trying to describe the reasoning)
@@katrinabryceYes, very fair point actually, although I have to admit that I dont know how far LibreCalc has come, because I'm not a power-user of either!
I used Linux exclusively as a professional for 12 years. I did like it and I still do like it when I come back to it. There are quite a few things I miss. But yet, I now prefer to use MacOS and have done for 8 years. The experience of using it day to day, for hours on end I find more pleasant. Mainly because the trackpad is amazing. I don’t like using a mouse because they need space and can’t be used well away from a desk and trackpads that aren’t Apple I’ve never found to work anywhere near as well.
no cap for the trackpad
@@laptoprelaks no cap?
Exactly right. Mac is a thoughtful mix of casual features on top of a solid Unix environment with tons of community support, potent offering for devs of all kinds, be it web dev or systems dev or ML, even gamedev with Godot and the like getting traction on Mac. I have a strong suspicion this creator isn’t really a developer, and is just stoking the fire of OS tribalism for engagement, as half of the comments here are folks politely disagreeing with his points in the video.
@@oliverpoldenno cap on a stack sheesh
@@nyan4xreally helpful, thanks.
Package managers is my favorite part of Linux as a whole.
So much safer than clicking on risky web links for some new software
0:04 Which distro is he using?
I could be wrong but that looks like Ubuntu. It’s easier to know what DE he’s using, and this looks like GNOME
@@davidsantana4276 I think he uses Elementry OS
It's even easier than a script to share the same Linux development environment. With devcontainers you can describe the whole environment directly in your source repo, even with additional services like local database servers that may be convenient for development.
Been developing for 25 years. Of all the developers I’ve worked with (hundreds and hundreds) only one other used Linux 😕
23 yrs here I haven’t seen one 😆
Because you find most good Support for Dev only for Windows and MacOS but not for Linux itself.
A lot of good points - in addition I would perhaps add the number of tools and the ease of debugging, perhaps not even debugging but being able to have access to how the system is working /proc for example, or seeing code execute using something like radare (which I guess can be done on windows, but with paid for tools).
Also when you introduce someone to the range of Linux command line tools it provides a good example of just how much power there is in computers sed, awk, grep and many many others.
(Something I love on both Windows and Linux is when you show someone that scary black terminal, you get the blank stare, frightened the wrong command will erase the world....and then in 10 minutes they are piping commands together and they've forgotten where their mouse is.)
This is a very helpful video. Anecdotally, in 2002, I took a six-year-old Toshiba Windows laptop that my spouse, and on which the hard disk was failing. I took a chance of a new solid state hard disk and installed Lubuntu, a light-weight Linux distro. An old computer that had slowed down to a crawl using Windows just flew with speed and responsiveness using Linux. I manage a number of WordPress sites, and now had a machine that manages WordPress better than Windows. I also am self-taught as a developer. Using PHP is just better in Linux than in Windows. I know C# in Windows, and have always wanted to learn C. Linux has terrific (and free) tools to do so. I've been a Microsoft MVP for ten years in the past, and know the Microsoft environment thoroughly. To speak well of Linux and remain a big fan of how Microsoft does things tells you that Linux definitely has something going for it from a developer's perspective. My current Linux machine will definitely not be my last.
I started using Ubuntu around 2010-2011. Although while I was in the Army, I was introduced to a Linux OS as it was what the AFATADS computer used back when I was computing firing data for artillery. That was around 2000-2001. But I decided to go all in around 2014 by stripping out the windows OS out of my HP laptop and installed Bionic Beaver 18.04 LTS. I have since upgraded to Jammin Jellyfish 22.04 LTS. For me, the best way to learn was to just do it. I am still learning and still consider myself a noob however in the small hick north Texas rural town i live in, I am like one of maybe a few people who uses a Linux OS in the whole county. The command line hasn't intimidated me like it use to when I first started. And I am still using the same HP laptop (its like 15 years old). When I do fine a suitable replacement for my laptop, I will use this old one as a server and home cloud storage and fumble my way through that experience.
One another thing where Linux is usually worse is debugger GUIs. Windows has a bunch of debuggers with GUIs, while the Linux ones I find for Linux are near useless. I need debuggers to do simple things easily, and I don't think my usecase for them needs massive script files for debugging.
Linux makes a lot of development things easier! The one problem I run into is that I need to at least test on non-dev OSes, and in some cases, do platform-specific stuff I can't do outside that platform (biggest case: macOS code signing).
Linux is better for software development because the activity of building software is about flexibility and transformation.
No other system embodies that better than Linux not just on a technological level but on a legal and philosophical level as well.
I thank you for bringing this topic and this insight to the forefront that others may see it in the accessible and highly relatable way that you’re able to convey.
True! Thanks for the kind words, I appreciate it !
Thanks for the video. Well done. It's good to recognize Linux's strength in the area. By the way, I don't understand the numbers in the opening slide. Should they equal 100%?
Except for those who make software for Windows. And there are a lot of such…
I use Windows because I also need to work on MS Office documentations and mapping SharePoint to local Windows folder makes life easier for me
Visual Studio, THE IDE on Windows, is missing on linux unfortunately
I'm a Linux fan, but it needs to be said that PowerShell's use of objects over raw text like the classic Unix utilities is an advantage.
Fun fact: PowerShell now has a fair amount of Linux command aliases (e.g. 'ls' is aliased to its PowerShell equivalent). Also, ssh now comes pre-installed on Windows 11 and later versions of 10.
Those aliases are one of my biggest annoyances with PowerShell.
C:\Users\user> rm -rf foo
{insert long error message}
C:\Users\user> rmdir /s /q foo
{insert long error message}
C:\Users\user> help rm
{insert long help message}
C:\Users\user> rm -Rec foo
I suppose they are helpful when transitioning because you can _help rm_ to get the help page for Remove-Item, but they also mean you need to learn to do things differently, and the pre-existing aliases give a false sense of "I can do this with the commands i already know."
@@epsi god yes. this is so damn annoying. "rm a.txt b.txt" ... "Remove-Item: A positional parameter cannot be found that accepts argument 'b.txt'." Oh, cause the idiots couldn't make their alias handle multiple positional args ffs.
I use macOS as my daily driver is because it's Unix base makes it both stable and I automatically have a set of Unix tools and then Homebrew lets me install the few tools that aren't installed by default.
Why? Microsoft were losing massive numbers of developers who were switching from Windows to macOS or Linux for Cloud development. Things were rather painful before WSL/WSL2, the updated Windows Terminal, and native OpenSSH, etc. Personally, it's still not quite perfect but it's a vast improvement over the situation before these improvements to Windows.
on neckbeards actually code on a Mac. You'll get a lot of front enders who wouldn't know an algorithm from an elephant, but it's not that popular really.
@@MiningForPies not sure what you mean. It all boils down to three things:
1. Don't use Windows, it's a literal dumpster fire
2. Linux is great but it's messy as hell
3. MacOS is a version of Linux with some benefits on top, and it's not messy
With the advent of Apple silicon, I am loving my time developing on my M2 Max 64GB work MBP lol. If there was one word to describe it: sublime.
@@SahilP2648in 25 years of developing I’ve only ever worked with front enders who use mac for coding.
I’ve worked with developers that bootstrapped windows onto macs to do their backend coding.
I love my M2 MacBook Air and do code on it myself, but I’m the only one I know, and when a Linux distro supports apple silicon then I’ll probably put that on the machine itself
@@MiningForPies that's not likely to happen. I don't know what was required for Windows to work with Bootcamp but maybe Microsoft had to work directly with Apple to enable that. I at least am not aware if Linux was installable on Macs pre-apple silicon, but that kind of defeats the purpose of owning a Mac where everything works seamlessly. There will be a myriad of driver issues if Linux is somehow installable and runnable on Apple silicon and it won't have as much security as MacOS. Also one of the things I love about MacOS is the custom file system. Probably the best out of all. The speed of copying files, even small ones is the best I have seen (not the best at deleting stuff though, which could be one of the side effects of the inner workings of it).
@@SahilP2648 it was dead easy installing windows on the intel Mac.
If we don’t get Linux I can live with Mac OS
As an embedded dev, I am constantly debugging strange hardware targets over serial ports, USB devices, various debug adapters, and I need to talk to instruments like multimeters and oscilloscopes.
This can all be done on Windows but the driver hassle is endless. On osx, it's hit and miss. On Linux, I can always get what I need to work.
A couple of these are exclusive to Linux, but most of these things apply to MacOS as well if you take 3 minutes to install homebrew. MacOS even uses zsh by default now, and has broader support for commercial software than Linux. You can do a lot with MacOS if you are willing to put in the effort. I find a lot of Linux users try MacOS stock, then complain it is missing too many important features. Like, you use Linux, you are used to manually configuring things. Apply that philosophy to MacOS. Homebrew, yabai for window management, iterm2 or a good rust based terminal, skhd, vim, tmux, etc. There's so much flexibility, and you can still use those commercial apps when needed. Yabai will solve the flaws with window and space workflows, and homebrew is all you really need for a development package manager. If you put in the effort, it's the best of both worlds (other than not being FOSS, which is a big deal to some).
Wrong data, linux usage is around 18% by developers and windows 60%. Some of the reasons are game developers can't use anything other than windows and mobile app developers have to use macos. Also mature OS like windows and mac providies enterprise management tools which let's companies apply their policies while giving admin access to developers.
Lets not forget about WMs, they have doubled my general productivity, heck I might even throw my mouse outside the window
What's a WM?
@@macethorns1168Window manager. Things like Qtile, i3, dwm. It's a lightweight way to use Linux desktop without using full desktop environments. But it's for advanced users and might take a lot of effort to learn how to set one up and use it.
@@macethorns1168the main different is that the average WM is "tiling", meaning per default your windows tile automatically and are side by side. A huge advantage is separating windows into workspaces you can access with a single hotkey. Allows you to hypertask without the overhead needed to figure out where to click to switch to what you want
you missed the most important argument why people prefer using macOS instead of linux. All UI engines in linux suck in one way or another, they either are laggy, not configurable or don't support multiple monitors with high resolutions well, this is very important if you work with multiple monitors.
I personally think it entirely depends on the environment. I used to be a computer science major, and I really liked using Linux for the predominantly Python-centric environment that my classes were at the time. Now I am working in and studying natural resources and we use R. I tried using it with Linux in Ubuntu, Ubuntu-based distros, and Fedora, and all of the made installing package dependencies much more tiring than I have been experiencing in Windows.
Don't get me wrong, I have enjoyed my time with Linux. I will be returning to it in some capacity after I finish Ecology this semester. I was just simply struggling with dependency loops more than I would have liked when I was supposed to be focused on assignments.
Same here
how have I been watching your channel for a few years now, and only *just now* noticed the 40k Start Collecting boxes in your background?!
Also, you're a man of taste I see - Drukhari :)
It really depends on what you are developing. Most of the code that I write doesn't depend on the OS, but it depends on the database engine. So depending on which database I am writing code for, I use the OS it is installed on. Also, if your writing web apps then you can use any OS, but if you are writing apps targeting a particular OS, it's better to use that OS to develop the app since you can test it with that OS in mind. Since most of the programming I do is maintaining legacy systems for programs written decades ago, I have to develop on the OS the app was written for whether that's Windows or Unix.
Linux absolutely does a lot of things better than Windows, but as a professional who spends a lot of time developing on Windows, I couldn't help but notice some glaring inaccuracies and a general lack of understanding of how developers normally operate on Windows.
2:20 Windows already has an ecosystem of package managers, and you even brought up winget yourself, which is already installed by default in Windows. Package managers aren't really needed for developing on Windows though since it's better to just build from source regardless of OS. Windows lets you use whatever compiler toolchains you want with very loose coupling to the OS, and package managers generally don't have binaries for all these options. Trying to use a different compiler toolchain on Linux is a much more painful experience. Projects that aim to be cross platform work just fine by building from source as well, so there's no need to tell people to go figure out how to acquire software or packages on their OS, no need to run random commands or unsigned scripts to configure or set up a development environment etc - on Windows you just install the compiler toolchain and IDE of your choice and build the project. The idea that you have to share configuration data or even replicate an entire OS just to be able to develop for a project sounds to me like an admission of poor development practices. If your project is multiplatform and expected to be used by a wide variety of people, and you can't even get it running in the debugger without making drastic changes to your development environment to match some uniform configuration, that's a failure from the start. It's much better to have every developer working on a different platform with different development environments because it makes it much more likely that portability issues and happenstance code will be caught and fixed early on in the development cycle. Naturally, building from source dramatically reduces the friction here, and bypasses any need for package management. Just checkout dependencies as git submodules and you can get security patches right away, and you still have full ability to choose between static and dynamic linking. This approach also makes you ready for packaging into the various packaging formats Linux supports, with no need to worry about what's installed on the host OS, as well as porting to console platforms if you're developing a game.
6:05 Windows Terminal also lets you add custom command prompts and even set them as default, so you don't have to work with cmd or PowerShell at all on Windows. Linux is better for letting you entirely replace the default terminal app itself, but it's inaccurate to imply that Windows doesn't have the next best option.
6:50 Windows already has built-in SSH as well, installed by default, with a full guide on how to use it available online from Microsoft. Seriously, open a terminal on any Windows 10 or 11 device and type ssh and hit enter. It's there. Even curl comes installed by default on Windows. Implying that you have to install these manually is outdated information. It's fair to say that Linux distros tend to preinstall a wider array of tools that are useful for development, just be careful about which tools you pick specifically, since you may be surprised to find they're already preinstalled on Windows too.
7:57 you forgot to mention Visual Studio is missing from Linux, it's entirely different from VS Code. This is absolutely Microsoft's fault though and I'm not happy about it being missing. I guess Visual Studio is the Xcode of Windows, except Xcode is significantly worse.
8:40 Windows is also available as free virtual machines, pre-configured to run properly as a virtual machine without you having to manually bypass anything, with development software preinstalled as well. Installing Windows manually is a waste of time.
The rest of the video is fine since it's just usual non-development Windows vs Linux stuff that is easily agreeable. I mainly just take issue with the lack of research on how Windows developers actually develop.
This used to be the case but WSL2 is damn good. It's the best of both. I have linux terminal and professional software as well as good battery life and drivers and games of Windows.
That’s still Linux ;)
I prefer dual booting between the two tbh, WSL2 is very nice if you're building something for windows but Linux provides a better experience otherwise unless you have really incompatible hardware. If you're not writing to the windows partition from linux you can also use hibernation to make the switching pretty painless.
It's so confusing to have so many shells in Windows nowadays. cmd, PS, WSL, Git bash, did I miss something? Sometimes node works better in one of them, git in another, and the constant juggling is so frustrating. And don't get me started with Python on Win xd
I avoid using Windows at work at all cost
What's the problem with Python on Windows? I had not a single problem 🤔.
@@TheLinuxEXPBut it‘s Linux on a piece of hardware that‘s completely supported by the main OS.
easier because you are mostly writing console based application as opposed to a GUI based OS means you do not have to learn Win32 or MFC assuming you are using c++
CLI on Linux is MUCH better, but the flexibility is the key for me. And portability. And workspaces. And updates....
I switched to Linux (Fedora) on my personal/work laptop and I can't express how wonderful this change has been. Of course, there were a few drawbacks mostly because of the proprietary software I need but Wine and VMs solve most of these problems, especially Wine because you can set it up in a way that's almost unnoticeable that you're running incompatible software.
And the developer experience is great, its super easy and quick to get started developing almost fresh out of the box in most distros, managing different development environments is also much better than on Windows, and all of the terminal utilities and functions are just so much better and convenient (yes, you can use WSL on windows but it's not the same)
Even the performance and battery life of my laptop has greatly improved, and on top of that, I can customize anything on my computer to create a unique layout. I really love it, and recommend anyone to try switching
I'm with ya buddy. Switched to Fedora from Mint a few years back and I'm absolutely in love with Gnome now. Best desktop experience I've had in any OS.
Ubuntu + LinuxBrew + Neovim is the killer dev environment.
the main reason i love linux is: when i had very old pc, had ram 1gb i installed older versions (64bit) of linux mint and learn to code. it took me 6 or 7 hour(honestly) because i couldnt make proper setup since i had no idea of os. i begin to use 16.x and upgraded upto 18.x grdually😆. although it was scary for me i enjoyed it. i reinstalled linux multiple time because i couldnt solve some issues😂
I don't agree with the language support section. I use different version of languages and I always avoid installing it from the distro's repo since it comes with mostly outdated versions!
Same for the web development section, again the last thing I want to run is to have the same version of Apache/nginx which is available on my Ubuntu LTS
Also my linux machine distro most of the time is different compare to what runs on servers.
I do like the fact that Docker/podman runs on the host linux kernel as oppose to running on a VM in Mac/Windows. It means slightly better performance running containers for development.
Being a Linux guy lately I do look forward to winget getting more software. Hopefully the days of searching the web manually when setting up a new windows machine will be a thing of the past soon.
He says it has all the IDE's and then conveniently does not even mention Visual Studio. I have been a dev for close to 20 years now and never been employed by a company that did not use Visual Studio. This omission really invalidates this video for me.
Ok, lol
@14:58 Current .NET (5,6,7,8) and .net core (1,2,3) are fully multiplaform, if some one writes in old .NET Framework 4.8 or older are binded to Windows
One unfortunate thing to consider: if you use Linux, you might be on your own. For example, the company VPN is so shoddily set up that I have to jump through an increasing number of hoops to simply use it as intended, and since Linux is not officially supported, I can't even really make a fuss about it.
This might be a skill issue, I am pretty clueless about networking in general, but I don't think that I am the only one.
My client devops use Linux and Mac, I connect to dev cluster with Pritunl Client, Perimeter 81.
Year ago Perimeter 81 mysteriously failed to reconnect under Arch, resolved after its update. No other issues.
@@sergeykishI mean more like having to manually change the DNS server order in /etc/resolv.conf each time after connecting, the proxy script not working like on Windows, not getting Teams messages sometimes while on VPN, cheeky things like that.
Linux guys: I like Linux because I can set up every little thing just the way I want with no bloat
Also Linux Guys: Linux installs everything for every programming language and in Windows you have to set it up
You can both have good customizability and good default settings, its not mutually exclusive
Visual Studio (not VSCode) isn't available on Linux, and it's kind of a big deal.
I'm all about WSL 2 on Windows. I'm the chief (really only) engineer on a few OpenText information retrieval SDKs used by corporations worldwide, and I have to support Windows, Linux, and FreeBSD. I do all of my coding, and almost all of my Linux debugging and performance gauging, in Visual Studio. WSL 2 is a godsend.
I am also a developer, I have tried different destro like Ubuntu, Kubuntu, ZorinOS, Linux Mint but none of them were stable for my laptop, my laptop heats too much with linux destros
So I always had to comeback to windows
Those are essentially all the same OSes, they're all based on Ubuntu which is quite bloated. Try Debian or Arch, they're both a lot more streamlined than Ubuntu.
I need to write scripts, command lines use foreign package manager... on Windows i download the visual studio installer and in 3 clicks i have all my environment up and running.
The only text i write it's when i write actual code... Sorry man, this doesn't work for me and the "most" in your title is misleading
I think you glossed over the differences between the distros. If you have a complex deployment, trying to maintain that in nixos, Ubuntu, Fedora and Arch is going to be a real pain as they have different package managers, and the packages might have different names.
Faced with this challenge, I'd specify my development environment as a docker-compose file, which should run the same under Ubuntu, Fedora and Arch (don't know about nixos support) and connect into it using ssh.
Nix is a package manager and the nix language (especially flakes) are well used in deployments. NixOS is just nix package manager on steroids, where the container also manages the desktop environment. Nix develop and containers are amazing, if only they were documented thoroughly.
I specify development docker-compose for quickstart but most developers including myself configure their own systems.
I don't know why people don't know this lmao but docker compose is not how you should use docker by default. You can commit an image after installing thousand packages or whatever, then upload it to your private hub and then you don't have to setup anything after running the downloaded image. It's just like uploading and downloading a VM image. Compose should be used for only some very specific scenarios as compose still installs everything from scratch (unlike the committed image like I mentioned) which takes time.
@@sergeykish read my above comment, don't use compose
@@SahilP2648 docker compose defines runtime dependencies, configures env, volumes. Ability to rebuild is useful for developers.
Main reason - it's free, customizeable, android & SOCs run it, old computers get security updates, the moral reasons, docker and "any" compute clusters (not just "that" one we let you use), telemetry and privacy, better IT service when you choose to pay for it, multi-booting operating systems, there are TONNES of great reasons.
it's better for me bc I'm broke :3
Haha that’s one of the advantages, yeah!
I first got a taste of linux when my Microsoft Surface Go 3, which unsurprisingly runs Windows 11 by default despite just scraping by with the system requirements, was getting significant slow down, at which point I decided to set aside a few days to play around with different distros and to see what works. After landing on Debian with the surface kernel and doing some extra config to properly integrate touch controls, it now runs better than Windows ever did, has tripled my battery life time and feels a lot more natural to use on a tablet with GNOME. Shortly after I set up dual booting Windows and Manjaro on my main laptop, keeping windows around for things that I can't do on Manjaro, such as Visual Studio for .NET/C/C++ development. Certainly helps that all the JetBrains IDEs are entirely functional on linux, made the transition a lot easier.
Windows spyware collects everything you do, sells the information, gets billions for this and you have to pay 139$ for this. PHUCK MICROSOFT!!!
Who said the keys under 1€ are not allowed? But yeah, businesses with "cyber" police need to have all of their software licensed if their product is commercial.
I prefer macOS and it’s so good, I have moved so far away from Windows, I don’t even play PC games that much anymore. I’ve played more console games instead. Linux is good but for me it’s macOS > Linux >>>>>>>>>>>> Windows.
Hey Nick
I totally get where you're coming from! Windows has come a long way with features like "winget" to simplify software management, improved battery life optimization, a polished user interface, and fantastic game support. Plus, Windows Subsystem for Linux (WSL) is a game-changer, allowing you to run Ubuntu seamlessly within Windows.
Apps Like Adobe, Office, Teams, WhatsApp, Phone sync is phenomenal on mac and windows.
It's impressive how Microsoft has addressed many of the reasons why people used Linux in the past. For those who rely on a longer battery life and a more user-friendly experience, Windows is becoming a compelling choice.
Of course, Linux still has its unique strengths, especially for open-source enthusiasts and developers, but it's great to see Windows evolving to cater to a wider audience. It's all about choosing the right tool for your needs!
Keep enjoying your Linux experience, I will enjoy my switch to Windows years later and thanks for sharing your thoughts! 💻🎮👍
as a developer who don't like remembering things and don't like typing a lot of command, is there any tools to help structuring command on terminal like when you typing code in vs code or using command palette? something with quick documentation of each command that I typed in and offer suggestion? Having to look for documentation manually is the only thing that keep making me back to windows
Tldr maybe?
I've been thinking this a lot too. There's too many commands and their arguments to remember, especially for less commonly used things. That just doesn't tend to be an issue in windows. I don't memorize everything about every program I use, I just see the options and decide.
I'm a dev, and I totally agree. And I really wanna emphasize the freedom Linux gives. You can, and it's easy to do whatever you want with your system. No annoying "safety nets", that's usually just in the way.
Thankfully most companies seem kind enough to give their dev/creative staff Macs, and Xcode is definitely an S tier IDE.
Linux since late 90's for me.
I've never seen windows as a serious tool for developers. I just can't get the productivity out of it like I can Linux.
This is exactly why I swapped over, you have no idea how many hoops you have to jump through through to display Japanese text in Windows (C++) whereas with Linux if you've got a font with Japanese installed it literally just works.
How the hell i haven't subscribed to your channel? I have been watching your videos for a while now but somehow i missed the sub button, sorry for that. I meant to say that i like your honesty in these videos and like how you are not taking anyone's side than your own. Keep up the good work!!!!!
You talk about Homebrew on Mac like installing it is an onerous step. It's a simple one-time install early in the setup process.
Work for a small company that's provided me with a mac laptop, but used to let me use my own linux desktop as well, which was the best of both worlds. Did most of my work on the linux desktop, but when I was mobile (visiting HQ...) I'd use the mac, which was great because they're great at just being a portable device (and being genuinely unix-based, are "close enough"). Just recently, however, we've been "strengthening" our processes, and I'm no longer allowed to use my linux desktop. A friend there is emulating linux on his mac, and they're fine with that (for whatever reason). I'm just dealing with it for now, but hoping I can get some linux laptop option in the future...
I'm retired from tech now, but I have refused jobs that required me to use Windows. There are plenty of employers out there who are fine with letting people use Linux, so go work for them.
@@dfs-comedy yes, unfortunately the Windows developers at Microsoft are monkeys in a zoo. Windows is the worst OS I have laid my eyes on. I use Windows now only for gaming. I cannot use it for development. Linux unfortunately has driver issues and of course, app support is non-existent thanks to companies and developers not developing anything for Linux. That, and setting it up securely (with password and encryption, migration) is nowhere near as straightforward as in MacOS. I got a $1,600 USD M2 24GB MBA for my personal use, and for my work I have M2 Max 64GB MBP (good thing company bears the $3700 price tag lmao). New Apple macs are a godsend for portability and development in general. Also helps the fact that I work for an EV company and we many times have to build and test directly in the car to test out your new code and for that the ARM architecture provides amazing battery life. I got one battery pack and I am all set for building throughout the day in the car.
Powershell is powerful and nice but one thing I can't comprehend is why is it when I press tab to autocomplete, powershell always takes about 0.5 - 1 second to do that. And it also always adds "\." to the filename which sometimes breaks the command itself and says that the file doesn't exist. Drives me nuts.
You already mentioned containers. Let me extend a little bit. I am not a pro dev but a system admin.
Using docker or podman is immensly important for modern development. And it is built in in many distros or is easily installable. I can define all the containers with runtimes and apps I need locally and simply deploy them wherever I want to, be it kubernetes cluster on a cloud, vm or bare metal. Updating and testing is easy as well because I can be sure that the container environment I develop on is the same as in production.
There is podman for MacOS but since containerization is dependent on the system architecture you can run into compatibility issues. If you're using Windows you can't use docker or podman natively, just on WSL.
Let's be real here though, most home computers are windows so most people in IT has to know windows well, a lot of us have to know linux well too. Windows has the Chocolatey package manager, which works quite well, much better than winget. So users can just use chocolatey to get packages no problem, you can also use powershell to make it automatic just as you say you would use bash. And no, most people use windows10 or 11 which the commands are basically all the same so they do not differ, they differ more in the linux space lol with all their different package managers you need 20 different commends for each of them to install packages lmao. For windows it's just one for chocolatey.
nixOS is cool tho, it is something really interesting they have got going on there. I'll definitely be keeping an eye on it. For now i'll be booting openSUSE tumbleweed and windows. Most IT professional have to know both anyway, not knowing or refusing to learn either system you will just shoot yourself in the foot.
Linux is a non-starter for most PC game developers.
PS5/XBOX Series SDKs for development are also Windows only
WSL allows to run anything Linux from Windows, but reverse is cumbersome as you noted.
Developing on the same system as the your application runs is a good point but even if you run the same distro you should be using Docker anyway.
So effectively Windows IS more flexibility as it does everything Linux can plus everything it can't.
The ideal setup would be for WSL to get so good with GUI and hardware so that you would be able to boot straight to WSL and use it as Linux desktop without performance penalties. And be able switch between Windows and Linux desktops in the same way we can switch between desktops today. We're not there yet unfortunately.
Non developer power user here. Been using Linux solely for almost 20 years. I got tired with spending so much time keeping my windows desktop clean and having so many automatic updates and changes made. I set-up my desktops for maximum productivity and efficiency and use.
What about Graphic design software for Linux?
Adobe Ilustrator - not available. Affinity Designer - not available etc.
I'd switch to linux if at least Affinity suit were available.
I'm using Windows + Linux Mint with dual boot. Linux Mint is a good Linux operating system 🎉. I have used Cinnamon and Mate version of that.
C and C++ development is just amazing on Linux