HACKER Q&A
📣 raylad

Apple Mn processors – How is the open source tools/projects support now?


I'm considering getting a new M2 Macbook, but have reservations because I'm not sure how well or poorly supported the platform is so far with respect to open source tools and projects.

When doing development work, is it fairly smooth now, or are there a lot of things that don't work natively and also run into glitches under emulation?

Hoping that some developers can respond with their experiences.


  👤 cik Accepted Answer ✓
As someone who deals with this every single day - frankly, it's at best painful, at worst nonexistent.. There is no CI that properly behaves in M1 land, if it exists at all. Sure, I can use the gcc to create a binary - but create and execute tests within the environment - nope, sorry. I can't get machines with any major cloud provider.

My current answer is to use Scaleway nodes. But due to their licensing constraints, each node must be up for 24 hours. This in turn becomes problematic when you opt to use Terraform as part of a GitHub Action to provision an M1 environment that you can debug against - or heck, Circle.

So now - I leave machines on that aren't guaranteed clean. We write jobs with Fabric and invoke, in order to execute them on remote nodes, and do the best we can. Tooling on the M1 makes it the thing I dislike the most.


👤 programmarchy
Pretty much all the tools I use on a daily basis have arm64 builds now, so I haven't used Rosetta since the early days of having my M1.

The biggest gap I have as a developer is Docker support. I have some projects that produce x86 builds using a Docker container, for example. Docker uses qemu for its emulation layer, and unfortunately it's pretty unstable. I frequently get qemu core dumps, and when it does work it's slow. To get around this, I shell into a Linux box to do this type of stuff.


👤 matthewmacleod
Basically completely transparent from my point of view. I haven’t come across much open-source software that isn’t available for arm64 already, and this applies to both the host machine and working in a Linux VM. The largest offenders are various closed-source apps. I think the only thing that was actually a blocker was no Tensorflow Java JNI package for arm64 Mac.

The main friction is around container environments - we have to quite carefully ensure that containers used for development environments are multi-arch where we didn’t care before. This is straightforward for most environments but can be a pin to build in CI.


👤 tkiolp4
Been using an M1 mbp for a few months. Mainly using Vagrant and Vmware fusion (tech preview) to spin up Ubuntu vms (arm) in which I run docker. So far so good.

👤 wdb
What kind of development work will you do?

I haven't experienced much issues with Docker or .net SDK development work


👤 likortera
I think it depends a lot on the tools you use. I and my coworkers as a Web Developers (working for a company with more than 2k of us, and having worked for a few others with similar numbers) have zero problems with it. Initially docker support was a bit rusty, but nowadays everything works perfectly for us.

But I suppose if you're working on low level C/C++ or assembler or drivers or desktop apps, etc you might find more problems. I have no idea about that.


👤 humanistbot
I tried out an M1 Pro, but returned and went back to Linux on a Thinkpad. Docker is unstable, and tensorflow is officially supported but painful.

👤 jurmous
I am in the Kotlin Multiplaflrm and Typescript/node ecosystem and everything works well. Only issue at the moment is that Cypress publishes no m1 native build but we built it manually.

In the past quite some dependencies with native code included with them needed Rosetta emulation but for us that time is gone.


👤 bni
MacPorts work great