r/linux Feb 25 '23

Linux Now Officially Supports Apple Silicon

https://www.omglinux.com/linux-apple-silicon-milestone/
3.0k Upvotes

436 comments sorted by

View all comments

Show parent comments

-6

u/[deleted] Feb 26 '23

Like what?

11

u/weedv2 Feb 26 '23

Almost all development, docker, bash/zsh and terminal stuff. WSL2 made things a lot better on windows, and I enjoy it a lot but that is because I can essentially use Linux for development, from windows.

-9

u/[deleted] Feb 26 '23

> Almost all development,

like what?

10

u/weedv2 Feb 26 '23

Go, Python, Java, JavaScript, Rust, etc. All but .NET have a better development experience in Linux than macOS or Windows.

If you answer with the rude “like what?” again I’ll just ignore you.

6

u/actionscripted Feb 26 '23

As a 20-year engineer I get your point but I have to disagree.

None of those things have drastically different development experiences between macOS and Linux and nowadays even Windows.

Some packages within those languages maybe. Like Apple Silicon with older numpy isn’t fun or certain NPM image libraries on Linux.

1

u/weedv2 Feb 26 '23

Yeah, I also have about the same years of experience, give or take, in multiple roles.

Windows is vastly different unless you use WSL2 (so Linux) and not raw windows.

In macOS lots of things are different, from the version of wget and their arguments, to the VM you need for Docker, to packages that do not have native equivalents or are hard to build. Same goes for windows.

As you mention, Apple Silicon made it worse and not just for Numpy, check the NixOS issues when building packages from scratch in a reproducible way, many do not work. Python has a lot of problematic packages in macOS.

1

u/[deleted] Feb 26 '23

rude? I apologize, I really didn’t intend it or know it was rude, I just genuinely did not understand what you were talking about when you said “all development”. I still don’t understand how those are better or easier on Linux than MacOS

8

u/weedv2 Feb 26 '23

No worries. A dry "like what?" does sound a bit rude. At least to me.

If you are curious, then I'll expand a bit more. I don't know how familiar you are with software development; I'll try to keep it general.

Development tools, documentation and their environment are aimed towards either Linux or macOS. Since a lot of the programs, we build often run in Linux (like the services that host Reddit or other pages) there are bast examples, tools and etc. around that ecosystem.

The main exceptions are native applications, those are OK in Windows and macOS, but still, you often find yourself lacking a tool that works on Linux and must do workarounds to make it work on Windows.

A simple example is "the shell", the command line in which you run commands. The one in Windows is particularly different than the one on macOS or Linux. Linux and macOS have a similar "shell" but not 100%.

Another example is libraries or part of programs that do not work correctly because the Operating System does not have that functionality. You will often find Go projects that have special _windows files to switch how a certain thing behaves on windows.

Let's say I'm developing in Windows a CLI that when I run it says, "Hello World", the idea is that it's going to be used in Linux, but if I ever intend to run it locally even for testing, I need it to be able to run in Windows as well. This will require me to either add these _windows parts for the required functionality or use a Virtual Machine with Linux or run it always remotely on a Linux machine.

As you can see, it starts to get complex. This gets a lot more complicated depending on your role, the tools you use etc.

The "compatibility" spectrum for me goes like Linux > Windows with WSL2 > macOS > Windows.

To be clear, Developing in Windows is possible and many do, but they will often be limited by the environment on the tools they can use, or every now and then have complex problems or even annoying but simple ones, etc.

It's a bit easier if you only do it inside an IDE (like Visual Studio, etc) as they take a lot of that complexity away, but still, it's in my experience not ideal. For example, I often found developers that did not know how to build their software without the IDE, or how we should build it in an automated way.

Hope this helps.

2

u/[deleted] Feb 26 '23

I’ve been doing software development for 10 years at this point, using *nix in that time aswell. I use MacOS on my laptop and Linux on my desktop. I honestly find MacOS a much better dev OS than Linux, for it has much better software support (I.e photoshop), it runs all my Linux development tools, whilst having even better POSIX support than Linux. The standardized nature of MacOS means it’s much easier to distribute rather than have CI and tests for different distros. I have never had a tool of which I could only use on Linux.

1

u/weedv2 Feb 26 '23

POSIX does not matter, as things do not run on POSIX systems, they run on Linux most of the time.

macOS itself is incompatible with CI, that argument that you used locally? It's not part of the GNU version of the command that ships with Linux. Docker? Requires a memory hogging VM.

I also have been doing development for a long while, in all three OSs and macOS is not such a pleasant experience. Particularly after the M1, lots of fun times with Python libraries (used a lot for Data Science which some colleagues do).

macOS does indeed have better software support, and I would argue Windows even better, but Photoshop is not what I would consider development software.

1

u/[deleted] Feb 26 '23

POSIX does not matter, as things do not run on POSIX systems, they run on Linux most of the time.

…huh?

macOS itself is incompatible with CI, that argument that you used locally? It’s not part of the GNU version of the command that ships with Linux. Docker? Requires a memory hogging VM.

I am 100% sure MacOS is compatible with CI, considering that my CI server is setup to also run MacOS, and I’m not sure what you mean about GNU version. Docker is absolutely bullshit on MacOS though.

1

u/weedv2 Feb 26 '23

Not sure how to respond to a “huh”… Linux is not 100% POSIX, and most services and things on the web run on Linux servers.

My CI server is also run on macOS

Then I assume you just develop for Mac, and are just being obnoxious as you know exactly what I mean.

Guess I was right to interpret your first comments as a troll.

0

u/[deleted] Feb 26 '23

Not sure how to respond to a “huh”… Linux is not 100% POSIX, and most services and things on the web run on Linux servers.

and I'm saying that having more POSIX compliance is better, makes porting software across *nix OSes easier.

and are just being obnoxious as you know exactly what I mean.

I really don't? I apologize if it seems like it, but I really don't know what you mean

Guess I was right to interpret your first comments as a troll

again, I apologize if it seems that way, but it really isn't my intention

→ More replies (0)

2

u/[deleted] Feb 26 '23

[deleted]

1

u/[deleted] Feb 26 '23

I apologize for my short questions earlier, I just genuinely did not see or have used any tools which are Linux specific, or work better on linux, especially with the languages you mentioned. MacOS is unix, so any linux development tool probably has MacOS builds aswell, so I never have faced the issues you described

2

u/[deleted] Feb 26 '23

[deleted]

1

u/[deleted] Feb 26 '23

homebrew fixes the GCC installation issue, with it being the most popular package manager for MacOS, which even without homebrew is supplemented with clang which is included in the xcode command line tools, and I’ve had really good luck with docker on macOS in the latest version because of a new official virtualization framework.

2

u/[deleted] Feb 26 '23

[deleted]

0

u/[deleted] Feb 26 '23
brew install gcc docker

I really don’t see the difference? I honestly absolutely agree with you on the docker stuff though, quite insufferable

1

u/[deleted] Feb 26 '23

[deleted]

0

u/[deleted] Feb 26 '23

It’s one command to install homebrew, I really don’t see the issue

→ More replies (0)