# Apple M1 for discourse development

**URL:** https://meta.discourse.org/t/apple-m1-for-discourse-development/194714
**Category:** Development
**Tags:** arm
**Created:** [June 22, 2021, 6:52pm UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714 "2021-06-22T18:52:39Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Ahmed\_Gagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ahmed_gagan/32/161985_2.png) [@Ahmed\_Gagan](https://meta.discourse.org/u/Ahmed_Gagan)
#### Post date: [June 22, 2021, 6:52pm UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714/1 "2021-06-22T18:52:39Z")

</div>

Hi there,  
I am planning to get Apple macbook pro M1 for discourse development and wanted to get some community dev’s review about Apple’s m1 processor with discourse development.

Do you suggest getting Apple MacBook pro M1 as primary discourse development device?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [June 23, 2021, 2:10am UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714/2 "2021-06-23T02:10:16Z")

</div>

We have quite a few engineers who use an M1 for development and love it. @david can probably elaborate.

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [June 23, 2021, 10:00am UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714/3 "2021-06-23T10:00:17Z")

</div>

Yeah it works great! Combatibility was a little rough to start with, but now Postgres/Redis/Ruby/Discourse are all working great! A huge perf upgrade compared to my previous intel MacBook. There are a few more details in [this topic](https://meta.discourse.org/t/apple-m1-docker-arm64-emulation/177590/8)

---

<div class="post-metadata">

### Author: ![Ahmed\_Gagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ahmed_gagan/32/161985_2.png) [@Ahmed\_Gagan](https://meta.discourse.org/u/Ahmed_Gagan)
#### Post date: [June 23, 2021, 3:58pm UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714/4 "2021-06-23T15:58:15Z")

</div>

This sounds convincing 😉 thanks a lot @sam and @david I’ll post my experience when I get it delivered 😀

---

<div class="post-metadata">

### Author: ![rudzainy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rudzainy/32/226573_2.png) [@rudzainy](https://meta.discourse.org/u/rudzainy)
#### Post date: [July 12, 2021, 1:55am UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714/5 "2021-07-12T01:55:58Z")

</div>

Hello 👋 Anyone has Discourse development setup on an M1 machine while also developing other projects using other technologies? How’s the experience and what’s your process like?

I am developing and maintaining a few other projects and it’s been a pain to switch between them, now even more than ever because of the M1 ARM architecture. Adding and hacking configs to make things run (like different binary locations for different tech stacks and CLIs, different SSH keys for different emails) has been a real chore. So I am trying to optimise the process and am using aliases and basic scripting in my .zshrc file.

At this point in time, I just limit myself to developing my Discourse theme and reading the Discourse codebase 🤮 😂

_Reference_:  
Other tech stacks I’m developing on my M1 machine besides Discourse:

- Rails 6
- Rails 5 + React
- React Native

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [July 15, 2021, 2:26am UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714/6 "2021-07-15T02:26:15Z")

</div>

You can always just use our Docker setup if you want complete isolation.

It is not as fast as running native, but perfectly usable from what I hear.

> [@Install Discourse for development using Docker](https://meta.discourse.org/t/beginners-guide-to-install-discourse-for-development-using-docker/102009):
>
> Developing using Docker Since Discourse runs in Docker, you should be able to run Discourse directly from your source directory using a Discourse development container. white_check_mark Pros: No need to install any system dependencies, no configuration needed at all for setting up a development environment quickly. x Cons: Will be slightly slower than the native dev environment on Ubuntu, and much slower than a native install on MacOS. See also [Developing Discourse using a Dev Container](https://meta.discourse.org/t/developing-discourse-using-a-dev-container/336366) …

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [July 15, 2021, 8:22am UTC](https://meta.discourse.org/t/apple-m1-for-discourse-development/194714/7 "2021-07-15T08:22:08Z")

</div>

Unfortunately the M1 Docker implementation has some issues which mean our base image doesn’t work 😢

> [@Install Discourse for development using Docker](https://meta.discourse.org/t/beginners-guide-to-install-discourse-for-development-using-docker/102009/165):
>
> I tried this today, and also ran into issues. The error I saw was because Docker’s architecture emulation doesn’t support inotify (which we use a lot in Discourse development). For now, I’ve added a warning to d/boot\_dev when a non-x86\_64 architecture is detected: ❯ d/boot\_dev WARNING: Docker architecture is not x86\_64. Discourse development is unlikely to work using Docker's architecture emulation. Please try a native development installation. I’ve now added a d/ember-cli helper, and forwa…

As for isolating dev environments - I guess my advice would be to make sure you’re using Bundler / Yarn to allow installing different dependencies for each project. For Ruby, there are also tools like `rvm` which allow you to instantly switch between different versions of Ruby.
