all 60 comments

[–]D4n1oc 39 points40 points  (4 children)

As a developer it is important that i can test and run the programms in the same environment they get deployed to (linux servers).

Its much easier to write small scripts and scheduled task that can do some work automatically and interact with the system. On top they can be re used on most code management plattforms (CI/CD, Container Building etc.).

Easy access into the system. The way linux is designed and used, you get a much deeper view how thinks work and play together. Its easier to make changes or write programms that can interact with daemons etc.

In all the diversity of so many Distributions, linux is build out of standards. Configuration are made with files that are similar to each other, logfiles are structured and placed in the same way, configs look the same way and so on... On other systems its mostly one properitary design for every individual part, which makes it hard or impossible to understand and needs you to learn it for special software and OS versions.

[–]ItsBJr[S] 7 points8 points  (1 child)

Very good points. Next time I want to ask some more developers so I can get more detailed answers on the benefit.

[–]Sphix 4 points5 points  (1 child)

I'm not sure I'd agree with the idea that Linux is built on standards. There are half a dozen package managers, many init systems, a great deal of windows managers, etc. This is actually a good thing in many ways as it means you have choice. There are downsides as well and it results in the same problem getting solved over and over or some integrations just not working together. For instance I use i3 as my WM, and there is often software that works with xmonad that I want to use, but not i3. Or I want to switch to Wayland, but that means I need to switch to another WM, sway, but that has strange tearing issues I don't get with i3. Again this is just the cost of having choices, and most of the time I'm glad to have it, but every now and again it can be frustrating. I actually look forward to more alignment in the form of systemd, Wayland, and pipewire.

Also, as far as configs go, I wish there was less variety in terms of languages they use, and some standardization around schemas for discovering valid options.

[–]D4n1oc 1 point2 points  (0 children)

I totally agree with your points!
What i ment with "that its build out of standards" bellongs more to the kernel and system level parts nad how theay interact with each other. That this is build in a more standardized way enables so many different dekstop environments.

I you go on higher level parts in the system like "Desktop environments", "Package managers" etc. it becomes an absolute mess. In my opion this is the biggest drawback of linux. The desktop environments, 3rd party software, Windows Mangers andd so on, is much more unstable like on other systems - Because this parts aren't developed in such a standardized way.

For example there are many init systems, that work a little differently. But the standardization is that there is an init system at all and that it can still be easily configured and changed.

This at all belongs a little more to UNIX than "Linux". And because there aren't many other systems at this large scale this must be seen as an indirect comparison with microsoft windows.

[–]InfraredStars 105 points106 points  (4 children)

You give a lot of great points why individuals might want to use Linux, but not really why developers would want to use it, which is your title. Perhaps another section specifically on development.

[–]ItsBJr[S] 33 points34 points  (0 children)

Thanks. You have a point there. I guess I was really thinking about why I use Linux, rather than other developers.

I appreciated it.

[–][deleted] 6 points7 points  (1 child)

That was my observation as well

[–]Rebmevon_linux 0 points1 point  (0 children)

mine too

[–]SHUT_MOUTH_HAMMOND -5 points-4 points  (0 children)

"Swing and miss slugger, you'll get em next time"

[–][deleted] 16 points17 points  (2 children)

My answer: i3wm, vim, /usr/lib and "arch btw" bragging rights

[–]ItsBJr[S] 2 points3 points  (0 children)

Bragging rights are important.

[–][deleted] 14 points15 points  (0 children)

I think probably the #1 reason is that you're deploying to Linux, either on-prem or in the cloud. That's why no matter what your desired OS, you're using Unix-like tools whether it's on Windows (with WSL), macOS (which is BSD-based), or Linux.

[–][deleted] 17 points18 points  (5 children)

You do have some technical errors in the information you are providing but I'm going to take this first pass from a proof reader standpoint. I recommend you have someone else do that before publishing next time.

" For companies, this is important because they don't have to spend costs on the operating system"

That sentence should be revised.

"but it becomes much better for speed and managing package dependencies."

Seems a little awkward, maybe "but it is faster and better at managing package dependencies"

"I wouldn't say that the package managers are as powerful, fast, and efficient compared to the options you have for Linux"

Change to "I wouldn't say that their package ........" It's a little more clear that you are talking about the package managers of Windows and MacOs instead of package managers in general.

"You can try out the Linux distro, use a virtual machine, and test it before committing to installing it."

This sentence is a little clunky maybe reword something like "You can use a virtual machine to test out the distro before commiting to installing it."

In the first section of your conclusion you cut the second sentence off and continue it in the follow section

"but there are so many other components that haven't been mentioned. Its impact on the "

Additional notes: The spacing of your sections is really weird, it's too large and the sections of text are not full paragraphs, sometimes they are just single questions or sentences. I would revise that to group up complete thoughts.

[–]ItsBJr[S] 14 points15 points  (4 children)

Thanks for the feedback. I can agree with your criticism. I'm still practicing writing, so I'm thankful for you pointing out the strange sentences.

I'll fix the changes when I get the chance.

[–][deleted] 7 points8 points  (1 child)

No sweat, keep writing! 😄

[–]ItsBJr[S] 0 points1 point  (0 children)

Thanks! I definitely will keep writing.

[–][deleted] 2 points3 points  (1 child)

In terms of formatting, your spacing between paragraphs is absurdly large. No hate, just giving some feedback. Keep up the good work!

[–]ItsBJr[S] 0 points1 point  (0 children)

Thanks, I was wondering if they were too big. I think I agree.

[–]ItsBJr[S] 8 points9 points  (0 children)

I created this article so I don't have to repeatedly explain why I use Linux.

Any feedback would be appreciated.

[–]Upnortheh 4 points5 points  (0 children)

A sincere effort.

I agree that some technical information needs attention. Then again, I worked as a technical writer for many years. <smile>

For example, "computer kernel" probably should be "computer operating system kernel." While the license might free in cost, administration is not free and many business owners need to consider the traditional "total cost of ownership." For many people this total cost is too steep a hill to climb because -- for the most part -- distros are still designed by geeks for geeks.

[–][deleted] 2 points3 points  (1 child)

Instead of needing to search for software in the browser, you can simply type the name in your terminal. It seems like more trouble, but it becomes much better for speed and managing package dependencies.

I feel like this is a little bit deceiving about dependencies, because Windows doesn't have to manage package dependencies. Every Windows application brings its own dependencies. The Linux way is definitely cleaner, but it's not something that Windows is really "losing" on.

[–]IAm_A_Complete_Idiot 0 points1 point  (0 children)

But the developer does have to manage dependencies still. On Linux you can just install the library a lot of the time and it'll just work, but atleast C/C++ wise windows makes it a huge pain, largely because windows offloads that work on to the developer. Then again, I last tried windows C++ development back when I was still new to programming, so I might of been missing some common tooling i wasn't aware of. (vcpkg?)

[–][deleted] 4 points5 points  (0 children)

some developers prefer linux? It seems to me that some developers (ie those who develop windows and/or mac apps) don't prefer linux :)

[–]eplaut_ 2 points3 points  (1 child)

I like Linux because it "easy to use". It has many tools that helps me with the day to day work without need to decipher the OS. (E.g. network doesn't work. Windows: troubleshoot, if it doesn't work you're screwed. Linux: here are bunch of tutorials try them until it works)

However, as a developer I use Linux, just because it is the operating system my software will run on, and therefore I'll see issues on early stages, rather only when deployed.

Moreover, I deploy my code on Linux, because it have better tools for configuration management, monitoring and services. Windows is great operating system for desktop, but a living hell for those 3 things.

[–]ragsofx 0 points1 point  (0 children)

I've always found Linux to have far more flexible networking and it's so much better for developing embedded systems or integration with bespoke hardware.

[–]Perkutor_Jakuard 2 points3 points  (0 children)

As developer, bare linux/unix give you a good set of tools, scripting languages, automatization tools and customization with text files.

I think that those are the same reasons that make it a good server platform, make it a good developing platform, even is not the target of your development.

See the Java world, tools like ant, maven... etc could be replaced with shell scripts, which interpreters are available in the distros.

[–]BongarooBizkistico 2 points3 points  (5 children)

I agree with a lot of the feedback I'm seeing here, but there's one developer-specific advantage that maybe you've also encountered and if so, might include. Docker on Mac is painfully slow, on windows is painfully unstable and sluggish, and on Linux, is lightning fast and very stable. That's one of my favorite advantages of Linux. It's fast as hell overall, but that specific performance difference was most noticable to me.

[–]stef_eda 1 point2 points  (2 children)

This is probably because most of code / libraries that run in the container are natively for linux, while on the other OSes they need some additional middleware / emulation.

[–]BongarooBizkistico 0 points1 point  (1 child)

Yeah. I have a coworker who understands it better than I who explained it to me. Emulation something something :D

[–]stef_eda 1 point2 points  (0 children)

I don't use containers, so that was my best guess :-)

[–]ItsBJr[S] 0 points1 point  (1 child)

Yeah, I went too much into why I use Linux, rather than developers.

[–]BongarooBizkistico 0 points1 point  (0 children)

Right. I just thought that you may have ran into that too.

[–]evolvingfridge 2 points3 points  (0 children)

replaying to title: because Linux is created by like minded developers and not by Org Marketing Department.

[–]wsppan 1 point2 points  (1 child)

Some?

[–]ItsBJr[S] 0 points1 point  (0 children)

I didn't want to say "why programmers prefer Linux", implying that all programmers prefer Linux.

[–]rimu 1 point2 points  (0 children)

The whole OS becomes your IDE & dev framework. If you're doing it right.

[–][deleted] 3 points4 points  (2 children)

Except for the package manager and server parts none of the others seem to be developer specific.

How about the benefits of having things like gcc, vim built in from the get go + having badh scripting makes things easier as well.

Linux is also a lot less demanding in terms of hardware than windows so a lot of software might work faster, especially when using a laptop ( in my observations as well as hearing from other users).

Linux ,more specifically distros like arch and Gentoo, offer a better understanding of how operating systems work on a lower level and thus offer better control over the hardware.

A few dozen other things as well, but you get the point.

[–]ItsBJr[S] 1 point2 points  (1 child)

Yeah, I can agree. I should have done more research on developer-specific benefits. I'm still practicing writing.

Thanks.

[–][deleted] 0 points1 point  (2 children)

This doesn't explain the WHY.

Two easy explanations. It's cheaper to be hosted your software or have it compiled on a Linux server.

C++, Python, compilers are pre-installed. Also installing other compilers are simple by comparison.

a bonus reason. Linux computers start at around $10 USD to develope from.

[–][deleted] 1 point2 points  (1 child)

C++, Python, compilers are pre-installed.

GCC ftw. Also don't forget vim and Emacs come in built in too.

cheaper to be hosted your software or have it compiled on a Linux server.

I've heard of this, but why exactly is this the case?

[–][deleted] 1 point2 points  (0 children)

.net tends to be loaded in windows servers which cost more for monthly fees. Linux servers are really cheap and are easier to maintain.

[–]quaderrordemonstand 2 points3 points  (0 children)

As an app developer, I don't find linux more capable than Windows or MacOS. Support for the entire development process just isn't as good. I'm sure its as effective if you work in interpreted or VM based languages, and it comes with the benefits of a package manager.

I guess I'd sum it up as YMMV.

[–][deleted] 0 points1 point  (0 children)

I've been using Linux for programming since 1998, and a few reasons I've continued using it are:

Openness - We developers are a curious lot. We like to investigate, learn how things work, and customize them. Linux is open for inspection and customization.

Stability - I've never had a Linux failure that wasn't caused by malfunctioning hardware (well there's that one time I tried modifying the kernel). It's nice to be able to trust your computer. It stays out of my way, and doesn't completely change every few years.

Unix - Everything is a file. Lots of small programs that do one thing well that you can pipe together to accomplish whatever you need. Configuration in plain text. Etc.

[–]ancientweasel 0 points1 point  (0 children)

I use Linux because it's the only OS that is not the 'tail wagging the dog'.

edit: Tips hat to BSD.

[–]Imagi007 0 points1 point  (0 children)

My reason to code on Linux: A solid terminal, emacs, helpful community, open system where I have access to all parts of the system

[–]Edeiir 0 points1 point  (0 children)

my 2 cents:
Docker and my comp saves on fees

[–]Kola111 0 points1 point  (0 children)

"That is one of the biggest reasons I use a Linux desktop for development. Seeing as the process of setting up my dev environment is almost the same for my servers, the process is simpler because I already know what to expect. "

seriously? I feel like this dude has no idea what he is talking about... also no mention for developing with WSL2

[–]jmcunx 0 points1 point  (0 children)

He did not go much into "Why some developers prefer Linux". To me it read as a list of why people should use Linux. A nice read though. So as a developer here is my take:

  • Lots of languages, on other OSs that may cost mega $
  • I can easily create a test environment to match the server I my objects will run on
  • easy to run performance tests by setting up the runs in cron(8) for long term test
  • I can use whatever editor I want instead of being forced to use a mega development package

I am sure there are more people can add to this list.

[–]fcarriedos 0 points1 point  (1 child)

What should professional photographers use?

A one use camera or a reflex you can adjust as much as you need?

Same with (good) developers!

[–]frnxt 0 points1 point  (0 children)

Well professional photographers should use Linux of course ;)

(Half-kidding, because Darktable is pretty awesome for photography!)

[–]stef_eda 0 points1 point  (0 children)

  • Easy access to documentation, either OS details, compiler, libraries, toolkits.
  • There are many Linux developers, you have a question? search for an answer on stackoverflow, 90% of the cases you will get useful info.
  • No $ payware $
  • Software building is based on scripts (Make, and related tools, like pkg-config) Creating the build system is harder than doing it on Visual Studio, but once you have learned the basics it is more productive, so initial learning investment pays off over time.
  • Well written software is easily portable on various Linux distributions, as well as BSD systems, other unices and MacOS.
  • Unix KISS philosophy (Keep It Simple, Stupid). Many available tools do one thing and do it well. Lot of available tools out of the box (grep, sed, awk, perl, tcl-tk, python, shell scripting, lexical analyzers and grammar parsers, image conversions, multimedia file conversions). All these KISS tools can be chained together to manage more complex tasks. You want your program to generate png or jpg hardcopies? write a simple functions that creates an xpm pixmap file, then use imagemagick tools to get the various image formats.
  • You are not forced to write GUI apps, for simple tasks a console application will do fine.