DEV Community

Cover image for Is linux good enough for everyday programming?
Marwane
Marwane

Posted on • Updated on

Is linux good enough for everyday programming?

Disclaimer: I’m writing about my experience with major OS (Windows 10, macOs High/Sierra, Ubuntu/Manjaro) using a Solid State Drive. It has a huge impact in term of speed and it could be different from your own experience.

Hello there. To begin with, this post isn’t about what’s the best OS for everyday programming, it could depend on the stack used, Misc programs and specially YOU, so i’ll try to describe all the good/bad things that happened during my everyday workflows.

But before that I should let you know my programming stack so you won't get confused later. I mainly use:

  1. PHP frameworks and CMS
  2. nodejs frameworks for frontend
  3. react native/ionic for mobile dev
  4. Photoshop (with CssHat) for HTML Integration, banner for mobile apps.
  5. ms office due to my current job.[1]

Ubuntu (Unity/Gnome):

By the end of 2015 and after a good run with Windows 7 and using Ubuntu just occasionally in virtual machines I thought I would give it a shot with a daily usage so I installed the 15.10 version. back then i was programming in PHP, Java and C# (because of my Software engineering Studies), php and apache had great performances locally, same for java but used a windows 7 VM for Visual Studio, Ms Office and Adobe Photoshop, because all the alternatives (Darkable/Gimp, Open office) weren't at the same levels. I tried but the more you use them the more you notice their weak points such as ease of use, backward compatibility.

I had a good (exactly 2 years) run switching between Unity and Gnome DE (I was the n°1 hater for KDE btw), but over time and even with SSD it felt a kinda slow (I was always stuck with 16.04 LTS) and honestly, I wasn’t fan of the Ubuntu’s PPAs either and then I discovered the Hackintosh community.

macOs (10.12/10.14)

So after a hell of an installation process I managed to run macOs Sierra smoothly on a laptop that has hardware near to macbook pro late 2012 (HP elitebook 840 G1). Apps installed with one simple drag n’ drop (applies to android studio too). It run the Android Virtual Device smoother than windows 7 and ubuntu with the same laptop, i was very surprised, the memory management, the apps integration and the overall stability was so great. At that time I finished my studies so no more Java or .Net programming, and the adobe/ms office suite was a strong point compared to Linux in general so every program ran natively without the need of any VM, with our beloved Unix cli.

The only drawback I had with mac, or with hackintosh, is the system updates/upgrades it was so painful to do it breaks your system every time, I was backing up the whole bootable system image whenever I attempted to update. Because the Kexts (Kernel extensions or “drivers”) weren’t always backward compatible.

So in the end i was thinking to go back to linux again but not sure which distribution i will stick with again, I wanted a stable distro that i forgot completely about something called upgrades of “big updates”. In the meantime I give Windows 10 another shot after hearing it got better and better in the last years.

And again, after 2 years with no workflow complaints I backed up my hackintosh installation and installed the last build of windows 10.

Windows 10.

I’ll resume my experience with one line: “not great, not terrible”
Compared, again, to mac os the system was very smooth in every way, snapping windows, switching virtual desktops, programs and files search in the start menu, no problem but! I already missed the unix cli. Yeah I know there’s cmder and other tools. The overall performance was okay but there was some latency when compiling node js apps. My workflow didn’t change. I used Laragon for all my php projects with phpstorm and it was perfect honestly. On the other hand Android Emulator was terrible even with 8gb or ram and ssd, mac os was handling it way better.

In the meantime I played with some linux distros in VMs and made the choice: Manjaro, KDE flavor.

Manjaro:

“You said you hated KDE right?” well yes but for a cause, one I didn’t want to bring back the Gnome memories i had with Ubuntu and second, I disliked is because its similarity in UI compared to Windows in general, 10 specially then I found how very customizable was and again i’ll resume it with one line: “everything is a widget”. So in term of UI I made my simple comfortable setup.

Now in term of programs and workflow I still use PhpStorm for my php and nodejs projects, npm and yarn installed globally and surprisingly npm run very fast compared to windows and mac; git already installed, but for my php projects I migrate all of them to docker with docker compose, majority of projects were based on Laravel, Prestashop, Wordpress and old native php apps. I managed to dockerize some of them from scratch, some with Laradock.

Java/.Net: RIP.

For mobile development there were some struggles during configuring ionic and react native’s first run but done with them quickly, no problem with android studio but the emulator “again” wasn’t that good as mac os, but not that bad like windows. And I discovered a helpful package that cast my connected android device to my screen and it’s shown as a virtual device but a physical one, called scrcpy from the genymotion team!

And finally these are just some of the benefits why I picked manjaro:

  1. No big breaking updates.
  2. A rolling release distro.
  3. Fast security patches.
  4. The Great Arch User Repository (AUR)
  5. Snap and Flatpak support (but why?)
  6. Very stable.

But still there are some drawback, linux’s ones in general:

  1. Still needing photoshop and lightroom.
  2. Ms Office for work purpose (Managed to use Web version since we have ms365 but still miss Excel for heavy use)

Conclusion:

Finally and personally I’ll stick with linux for these main two reasons: native support for docker (future projects could be deployed with it) and the unix environment similarity to production servers (cli, ssh and packages’ configuration).
I understand many of you will disagree for many things said in the post but that’s okay! because, finally, we choose what will help us to give the most of us in terms of productivity.

Thank you all for reading the most boring post ever made on Dev.to platform! I would gladly hear from you some of your thoughts and experiences as well. Thanks again! [1]

[1]: edit. added used stack and a conclusion.

Latest comments (142)

Collapse
 
sswam profile image
Sam Watkins

The title of this post offends me a little! "Is linux good enough for everyday programming?" I think that Linux is extremely better for programming and ops than Windows or Mac, there is no comparison. It is an open-source system created largely by programmers, for programmers.

Personally I do dual boot with Windows 10, which I only need for games and the odd random application. I am not too big on the graphic design, and GIMP suffices for my needs together with command-line tools such as imagemagick and ffmpeg.

You could also explore VirtualBox or similar if you don't like to dual-boot. If some applications that you need don't run on Linux, and don't have suitable equivalents on Linux, and don't run adequately under emulation (such as Wine), and don't work well enough in VirtualBox, please petition the vendors to support Linux in future releases.

Collapse
 
rahxuls profile image
Rahul

Agreed with that.

Collapse
 
syeikhanugrah profile image
Syeikh Anugrah

I'm on your side, i totally agree!

Collapse
 
jimmymcbride profile image
Jimmy McBride • Edited

Manjaro -> Gnome is love. Imo Manjaro has best Gnome setup out of the box then any distro I've tried. It's been my daily driver for almost a year now.

I use GIMP and ShotCut and all the other FOS software and it does me just fine. It takes some time to adjust, but I just love the Linux ecosystem and what it stands for.

Collapse
 
louislow profile image
Louis Low

Absolutely.

Collapse
 
joelbonetr profile image
JoelBonetR 🥇 • Edited

Yes of course. I'm using linux as web developer. I only can figure out 3 scenarios on which Linux can't fit for our job:

1- Outdated workarounds (by 10+ years for being precise) and/or bad use of tools, such as needing photoshop for coding (dude WTF? There are tones of tools like Abstract out there to share designs with developers on a friendly way (with version control for designs, inspect tools, available from any device with a browser, and so).

Moreover, if you want to rely on using PS for integrating psds into your html by stubbornness instead on moving to something better from any point of view, you can use photopea which is a Free online photoshop with the 100% features a developer could need and the 90% features a designer who is used to PS could need.

2- You are programming on a .net environment in which case you'll need a windows.

3- You are programming for iOS environment so you'll need a Mac.

Collapse
 
rishitkhandelwal profile image
Rishit Khandelwal

For Photoshop I use WINE. It works better on Linux than windows 10 because windows is a Ram hog doesn't let me run Photoshop.

Collapse
 
coderslife_io profile image
Drew Knolton

I remember, back in my days, when I first tried a Linux distro. It was Mandrake 10. I remember coding in C and C++, listening to music, and having fun. I'm currently on Pop_OS! 20.04, I am Microsoft-free since 2013 (not entirely true because I use VSCode and play Minecraft).

One of the things I hated in Windows was some problems we had with file permission. I don't know if it has been addressed by now but it was not possible to remove the read-only status of a folder recursively without the need for a "super-admin" sketchy software. Like you said, without any POSIX terminal (like in Linux, macOS, and Unix system), it was impractical. I heard that today WSL 2 Windows is now in the game, but I don't get why I would go to Windows so I could use a software that makes it more like Linux.

And please, for the love of God, can Microsoft just make everybody happy and remove the need for '\r' character?

Collapse
 
yorozuyadev profile image
Yorozuya3 • Edited

For my is better than Windows because It gives me freedom, I can use the distro which fits better to me. I'm the only one who cares about that? Also I prefer a more unix like way to do the things. I don't use Photoshop or Office often,(actually most of programmers dont use it?), so I can use GIMP and LibreOffice, they are free and enough for me. If I have to deal with propietary office documents I can use office online.

Collapse
 
leob profile image
leob • Edited

If we talk about "everyday programming" then I'd say Linux only falls short if you really need commercial software like Photoshop, or Microsoft/Windows specific software like MS Office, Visual Studio or .NET ... if you only use open source software like Node, PHP, VSCode, Java and so on then I'd say Linux is more than adequate.

If you need (for instance) game support then you're better off with Windows ... and if you're a graphics design wizard then a Mac might be better ... but the topic of the post is "Is Linux good enough for everyday programming" and then I'd answer that with a resounding "yes".

Collapse
 
gabrielfallen profile image
Alexander Chichigin

I'm using a GNU/Linux on a HP Pavilion "gaming" laptop for my job for the last 3+ years. In general, I'm a GNU/Linux user for about 15 years. Luckily I need exactly 0 Windows programs for work.

Funny enough on my current job I'm working on a desktop .NET product that is used almost exclusively on Windows and all my coworkers use Windows, but thanks to .NET Core and Rider I'm perfectly fine. :)

Frankly speaking we specifically maintain GNU/Linux compatibility for the core of our product that supports running on a server. And I never touch GUI part.

As for the GNU/Linux distribution I'm using Linux Mint and perfectly happy with it. :) Everything I have works out-of-the-box with almost zero configuration from my side.

Just a random data point, I'm not arguing for anything. :)

Collapse
 
laranikal profile image
Carlos Kassab

I am using an HP Pavilion dm4 I bought in 2010, it has an i5 second generation, these are the full features: support.hp.com/us-en/document/c028...

The only change I have done is, I increased memory to 8GB and installed a 500GB SSD.

I have installed CentOS 7 with XFCE and all of this:

  • IntelliJ IDEA
  • ATOM Editor(It seems it works faster than VS Code)
  • Opera Web browser
  • Google Chrome for Netflix and PrimeVideo
  • Thunar file browser.
  • smplayer as music player.

The very good news is that with all of those apps open at the same time, my computer runs very fast and only consuming 3.1 GB ram.

This is, we do not need windows 10 nor the last computer in the market to have fun and work fine.

Even it runs on battery and works very good.

Collapse
 
dance2die profile image
Sung M. Kim • Edited

Few weeks ago, I migrated completely to Kubuntu (yes... KDE version of Ubuntu) and NPM package installation has been very fast compared to time it took on Windows 10.

I regret going with KDE, which I thought looked great because

  1. Multi-monitor feature has been buggy
  2. Doesn't auto-rotate the screen (I have a 2-in-1 spectre x360 monitor which I turn upside down once in a while)
  3. IME (I use Korean input) has been hard to set up.

Unity (Ubuntu) has much better support for multi-monitor and auto-rotated my screen and has been a breeze for IME set up.

And also as I am new, documentation and community support is essential. It was tough to find Kubuntu-specific answers as many of setups/configurations were shown in Unity.

Collapse
 
arakno profile image
Paulo

Good post, thank you!
I think you would benefit from getting to know elementary.os distribution. Debian based and a the UI just works - unlike every other distro I came to know through my +20y of programming.
Best

Collapse
 
minemaxua profile image
Maksym Minenko

For sure! I've been using Debian at home for at least a decade already.

Collapse
 
bam92 profile image
Abel Lifaefi Mbula

Thank you for sharing your experience with us. I appreciate.

I'm a unix-like user (Debian) for many years, so I think I can say something too (also now I'm writing this comment on a W10 machine).

I see many people in the comments talking about Linux (Ubuntu for most of them) lacking drivers and some other software programs. That's true. But, what you should be aware of is how GNU/Linux systems are built. Most of the distros rely on free and open-source standards, unfortunately, some drivers companies (if not most) don't even like the open world, so it is very complicated for the community to do reverse engineering on those kinds of materials.

So, the problem is not at all that GNU/Linux systems are not capable, but the provides don't allow them to do good work for people.

Coming back in programming in general, I can say that it is a bit difficult to easily get started on Windows that on a Linux machine. Software installations and installations management are just simple. Simple commands do a great job.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.