John Carmack's Arguments Against Building a Custom XR OS at Meta
Original: John Carmack's arguments against building a custom XR OS at Meta
Key topics
The debate around building a custom XR OS at Meta was reignited by John Carmack's scathing arguments against the endeavor, sparking a lively discussion among tech enthusiasts. Commenters largely echoed Carmack's sentiments, with many citing the perils of reinventing the wheel and the monumental effort required to create a truly innovative OS. A humorous meme referencing TempleOS, a solo-coded operating system, drove home the point that creating a new OS is a monumental task, often driven by devotion rather than pragmatism. As the conversation unfolded, it became clear that the consensus revolves around the notion that, unless you're driven by a higher purpose or a revolutionary idea, sticking with existing solutions is often the most efficient path forward.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
26m
Peak period
53
0-3h
Avg / period
12.3
Based on 160 loaded comments
Key moments
- 01Story posted
Aug 29, 2025 at 12:45 PM EDT
4 months ago
Step 01 - 02First comment
Aug 29, 2025 at 1:11 PM EDT
26m after posting
Step 02 - 03Peak activity
53 comments in 0-3h
Hottest window of the conversation
Step 03 - 04Latest activity
Aug 31, 2025 at 9:45 AM EDT
4 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
Another point I would add in support of that meme comment, is Google's recent rug-pull of Android not allowing sideloading apps from unsigned developers anymore starting this autumn, after over a decade of conquering the market with their "go with us, we're the open alternative to iOS" marketing.
The conclusion is to just never EVER trust big-tech/VC/PE companies, even when they do nice things, since they're 100% just playing the long game, getting buddy-buddy with you waiting till they smothered the competition with their warchest, and then the inevitable rug-pull comes once you're tied to their ecosystem and you have nowhere else to go.
Avoid these scumbags, go FOSS form the start, go TempleOS. /s but not really
I don’t know enough about its history to get the joke.
Spoiler alert: a single person coded it in his own programming language, but the person suffered from severe mental illnesses and ended up taking their own life.
I mean, I'd give a fair shake to an OS from the SQLite team [1].
1. https://sqlite.org/codeofethics.html
Actually, I don't know how you join the Ita now that you mention it.
But ultimately it just makes sense to adapt existing kernels / OS (say, arch) and adapt it to your needs. It can be hair wrenchingly frustrating, and requires the company to be willing to upstream changes and it still takes years, but the alternative is decades, because what sounds good and well designed on paper just melts when it hits the real world, and linux has already gone through those decades of pain.
The driver ecosystem is the moat. Linux finally overcame it decades later
5 Millions alone for the AMD graphic driver.
* Those that are are only loaded when needed
It's not that bad
Those boards were always accompanied by horrific binary blobs glued to a kernel form a stone age. Or Windows.
For example any of the systems listed in Carmack’s post. Or perhaps Serenity OS, RedoxOS, etc.
The technical justification for Meta writing their own OS is that they'd get to make design decisions that suited them at a very deep level, not that they could do the work equivalent of contributing a few drivers to an existing choice.
If you mean exotic ones then the answer is the parts that are written are the easy parts and getting support for hardware and software is hard.
I’ve seen this firsthand. These giant tech companies try to just jump into a massive new project thinking that because they have built such an impressive website and have so much experience at scale they should just be able to handle building a new OS.
In my case it wasn’t even a new OS it was just building around an existing platform and even that was massively problematic.
The companies that build them from scratch have had it as one of their core competencies pretty much from the start.
I’m unsurprised meta had issues like this.
Yes.
This is madness. The safe space culture has really gone too far.
If a professional can't give critical feedback in a professional setting without being rude or belittling others, then they need to improve their communication skills.
Being "reported to HR" doesn't mean "almost got fired". It likely meant a meeting where someone explained "hey, the way you communicated that caused some upset, let's discuss better ways to handle that situation next time." Very often in larger companies, complaints about things like "this bigwig from this other group jumped all over us" are automatically sent through HR because HR has staff whose job just is resolving conflicts between people and keeping things peaceful.
Everything is ASAP. They are super excited about everything. And nothing you do is wrong, it just could be improved or they like it but don't love it.
You don't know if something is important, basically.
Just like Louis CK said, "if you used 'amazing' on chicken nuggets, what are you going to say when your first child is born?". But in reverse.
Personally, I'd rather work with someone who would tell me my work is terrible if it is.
In Germany, you can't even legally say somebody did a bad job at your company in a recommendation letter. Companies created a whole subtext to workaround that, it's crazy.
Some things are just bad. You should be able to say it is. Not by saying it could be better. Not by using euphemism. It's just something that needs to go to the trash.
In fact, I don't trust people who can't receive this information, even if not packaged with tact (which you should attempt to, but life happens). If you can't handle people not being perfectly polite every time, I can't help but feel I won't be able to count on you when things get hard.
That must be the French in me talking.
I don't think it's just about legality. Whether the recommendation letter is included in the application is at the distinction of the applicant. When you want it to reach the next company, you must write is so, that the former employee considers it to be a good recommendation.
First of all, in southern countries we hardly do recommendation letters, if we do they usually ended up being written by ourselves and if the company agrees with the content, it gets signed.
Exactly because of this, you are supposed to give referrals that then talk whatever they feel like about the experience working with you was all about.
Having a whole legal process for recommendation letters, that have created a whole industry of hidden language that looks good on the surface but tells exactly otherwise, was a surprise to me.
https://www.betriebsrat.de/news/arbeitnehmer/achtung-arbeits...
https://www.zeugnisprofi.com/wissen/arbeitszeugnis-geheimcod...
https://www.orizon.de/de/karriereratgeber/arbeitszeugnis-ver...
Just some examples, there are lawyers that analyse recommendation letters as one of their services.
I've had it happen to me too, but my response was to resign on the spot (I was already not satisfied with the company).
The "toxic behaviour" I had done? I reverted a commit on the master branch that didn't compile, and sent a slack to the Dev who had committed it saying "hi! There appears to have been a mistake in your latest commit, could you please check it out and fix it? I've reverted it in the meantime since I need to deploy this other feature"
The dev responded by force pushing the code that did not compile to master and contacted HR.
I decided there was greener grass on other pastures. I was right.
Do you know that that's what's going on here?
> Yes. Seems pretty clear from the post to me that they are making assumptions...
So you don't know what's going on; you're assuming. Cool.
Incorrect. Their post makes it clear they were not involved in their own words. It's called reading comprehension.
We've only got one side of this particular story, we don't know what happened from the other person's point of view, we don't know what form this HR complaint took - or any of the other details. We can bet, just as I did in my last paragraph, but in my view the odds are more questionable and the topic more likely end up as unproductive venting. Any good comments will get lost.
Still, it's also true that the link is just there as a starting point for discussion, and the discussion can take any forms that the readership would find interesting.
If you're in the middle of trying to write a new operating system, then it's probably not helpful to have John Carmack standing over you repeatedly telling you that you shouldn't be doing it. In this case Carmack gets the last laugh. Then again, it is easy to get the last laugh by predicting that a project will fail, given that most projects do.
He was the CTO of Oculus. Surely it is appropriate for the CTO to give advice on any big technical decisions, if not outright have veto power.
I mean, if you're working on a project that is likely to fail, wouldn't it be nice if someone gave you cover to stop working on it, and then you could figure out something else to do that might not fail? Can't get any impact if your OS will never ship.
But in any case, almost all interesting projects are likely to fail. Of course it is objectively unlikely that a project to write a new OS will succeed. I expect the people working on it were aware of that.
They probably didn't agree, but the claim was that it wasn't helpful. being helpful and telling people what they want to hear aren't the same thing. If you're working on a destined to fail project, the most helpful thing to hear would be some way to change its destiny, the next most helpful thing to hear would be a call to stop doing it.
Besides all that, Facebook is probably one of the worst places to develop a new general purpose OS. The review system is built around rewarding impact, which means a long term project with no early deliverables sets up the staff to get poor reviews, which limits staffing. The company also has not built the kind of trust in products, sdks, etc that would make using a new OS seem like a good idea to potential users, or to encourage developers to make applications available for it, or to encourage companies to use it in their products. It would have to be so amazingly better than the marketplace of OSes that it made up for the lack of software for it and become a target of new software.
A special purpose OS is different. The development process is usually not as long, the requirements tend to be pretty narrow, and the target would likely be something in house. It might still not be a good idea, there's lots of off the shelf options to look at and they are likely good enough in many to most cases.
I guess if he'd been on the Apollo program he'd be the guy telling all the experts that landing humans safely on the moon was going to be quite hard. Thanks John. We'll bear that in mind.
None of it surprising if this is a signal of how they operate.
Cool off.
This is exactly the madness I'm talking about.
Case in point.
And me saying cool off is madness? You must live in a mad, mad world. Good luck going forward.
The drawback of this is you lose good talent and keep rent-seekers instead.
All you have is the result but you infer a whole lot so it fits your framing.
Someone called HR, HR met with the people and they chatted. That is all you have.
All the FAANG do dumb shit all the time and waste huge sums of money, if you work at a FAANG the best thing you can do is stay in your lane and don’t do dumb shit — eventually it will shake out.
I have been bullied around by L7s (as a L5) sticking their nose in things, and the best thing you can do is clearly articulate what you are doing and why, and that you understand their feedback. Turns out the L7 got canned — partially due to their bullying — and I got promoted for executing and being a supportive teammate, so things worked out in the end.
The OS does process scheduling, program management, etc. Ok, you don’t want a VR headset to run certain things slowly or crash. But some Linux distributions are battle-tested and stable, and fast, so can’t you write ordinary programs that are fast and reliable (e.g. the camera movement and passthrough use RTLinux and have a failsafe that has been formally verified or extensively tested) and that’s enough?
Everyone wants to make an OS because that's super cool and technical and hard. I mean, that's just resume gold.
Using Linux is boring and easy. Yawwwwn. But nobody makes an OS from scratch, only crazy greybeard developers do that!
The problem is, you're not crazy greybeard developers working out of your basement for the advancement of humanity. No. Youre paid employees of a mega corporation. You have no principles, no vision. You're not Linus Trovalds.
I think it was insane to start a new OS effort written in C/C++. We have plenty of OSes written in C/C++! We know how that story ends. If you're going to spend the effort, at least try a new language that could enable a better security model.
Still a very interesting project, but that feels like a similar story, for limited use cases (a smart thermostat/speaker with specific hardware) it works, but for wider use cases with heterogeneus hardware and complex interfaces (actual screen, peripherals) it didn't work.
The only thing I can imagine that would be more invasive would require a brain implant.
These days, you get a medium-level description and a Linux driver of questionable quality. Part of this is just laziness, but mostly this is a function of complexity. Modern hardware is just so complicated it would take a long time to completely document, and even longer to write a driver for.
What is an easy gate task to get into “reverse engineering some drivers for some OS”?
Second thought: I don’t even know how to write a driver or a kernel, so I better start from there.
It helps to have a concept to guide you too, but you can certainly make some progress on the basics before you figure out what you really want to do.
[1] https://wiki.osdev.org/User:Zesterer/Bare_Bones
[2] https://osdev.wiki/wiki/Multiboot1_Bare_Bones
I wish the guy luck on becoming a superstar influencer, since that seems to be his goal, but he can do it without my help.
(And I feel bad saying this since Meta obviously did waste eleventy billion on their ridiculous Second Life recreation project ...)
So please don't mock the spend. Big spends fail sometimes, and at least people were paid to do the work.
On the other hand, Meta's experiment is primarily CEO-driven. The outcome is predetermined, changing direction is not possible. Sure, clever engineers get to draw the rest of the owl, but that's not very useful when it turns out that everyone needs a horse instead.
They are spending a fortune, but rather than getting 900 crappy ideas to throw away and 100 great ones to pick from for continued development, they are developing 1 technological marvel nobody is interested in.
Every improvement after that would count as micro-invention in your dichotomy.
If they'd spent the money researching nuclear fusion or space flight or a new way to develop microprocessors, I would be cheering their efforts even if they had failed in the end.
Just because you spend a lot of your money on R&D, doesn't mean that each R&D project is automatically a good one. You still have to make choices between them.
Realistically for the OEM to debug the issue they're going to need a way to reliably repro which we don't have for them, so we're kind of stuck.
This type of problem generalizes to the development of drivers and firmware for many complex pieces of modern hardware.
The people who develop OSes are cut from a different cloth and are not under the usual economic pressures.
Not the parent, but of course they're wasting their time... That's the point of a hobby OS.
I'm working on a hobby OS, and I have no illusions that it's most likely fewer than 10 people will ever run it, and less than 100 will hear about it, but it lets me explore some interesting (to me) ideas, and forces me to learn a little more about random pieces of computing. If I ran on GCP, I'd want the reboot button to work. That sounds useful.
On the topic, I don't see why anyone would want to build a general purpose OS. There's enough already and even with the shrinking of hardware variety, there's a lot of stuff to support to make a general purpose OS work on enough hardware for people to consider using it. You can take Linux or a BSD and hack it up pretty good to explore a lot of OS ideas. Chances are you're going to borrow some of their drivers anyway, and then you'll end up with at least some similarity... may as well start there and save a lot of time. (My hobby OS has a custom kernel and custom drivers, but I only support a bare minimum of devices... (pc) console i/o, one real NIC, and virtio-net... that's all I need; I might add support for more NICs and more consoles later)
They aren't trying to get reboot to work, they are trying to get their version of kexec to work so their hobby os reboots faster.
https://wiki.archlinux.org/title/Kexec
The biggest scam in the OS world is drivers, we should demand more out of our hardware. Drivers shouldn't be necessary.
I don't see why a kexec alike wouldn't work about the same on GCP vs qemu vs bare metal... Or what that has to do with a GCP soft reboot button (which again, I think is referring to the reboot button in the GCP console)
Either way, the whole thing is a waste of time, yes? Why not waste time on the part that's engaging?
> The biggest scam in the OS world is drivers, we should demand more out of our hardware. Drivers shouldn't be necessary.
I can't even fathom what you mean here? You've got to have some interface to communicate with hardware. That's a driver. Some hardware only needs a very small driver... Tell the hardware where to send input, how to notify when input is ready and when its ready for output, and tell the hardware where data to output is. Maybe some setup stuff for modes and whatever if the needs aren't obvious and universal. I don't see how you could possibly avoid that.
It would certainly be possible for more devices to use common interfaces so a single driver could operate many different devices. Maybe that's what you mean? There's some movement towards that... SATA controllers generally speak AHCI, human interface devices generally appear as USB HID devices, etc. NICs tend to have a wide variety of setup sequences, but data queues usually fit into one of a limited number of patterns.
I agree you need a driver but for most hardware, that should be pretty simple, and easily documented by the hardware vendor, shouldn't it? A button has to be about the simplest possible I/O device imaginable.
Of course, ACPI is supposed to make interfacing with lots of similar things easier, kind of, so there you go.
What do you mean by that?
I am addressing your comment and eru's question about drivers.
The hardware that would normally need drivers should present itself over a fixed, well documented protocol. Think virtio, or usb device classes but more comprehensive. This would also allow for said hardware to rigorously tested before it ever sees an OS. As it is now, because the hardware is shit and requires a driver, you can't really test the hardware in a way that an OS would expect because it requires the OS driver to even start to function. The job of the OS is now to repair broken hardware.
https://docs.oasis-open.org/virtio/virtio/v1.3/virtio-v1.3.h...
https://wiki.osdev.org/Virtio
https://en.wikipedia.org/wiki/USB_communications_device_clas... (the only good thing to come out of usb)
I was actually just trying to support "power off" in GCP, with the stretch goal of being able to support graceful power off from the GCP console (which is part of supporting power off then power back on restart).
Getting it to work on GCP meant properly driving something called the Intel PIIX4 controller which was emulated into the VM.
Separately from the OS being able to turn itself off, the OS needs to process a signal received by the hypervisor on this controller to support the hypervisor gracefully shutting it down. Otherwise GCP will wait 90 seconds after it has sent the shut down signal to give up and terminate the VM itself.
The problem I was trying to solve was (a) OS can shut itself down in GCP (b) restarts in GCP from the GCP console would be instant, rather than take 90+ seconds
That's what's claimed. That's what people say, yet it's just an excuse. I've heard the same sort of excuse people have, after they write a massive codebase, then say "Oops, sorry, didn't get around to documenting it".
And no, hardware is not more difficult than software to document.
If the system is complex, there's more need to document, just as with a huge codebase. On their end, they have new employees to train up, and they have to manage testing. So any excuse that silicon vendors have to deal with such immense complexity? My violin plays for them.
That's obviously the wrong message. They should say "Go ask the engineering VP to get us off any other projects for another cycle while we're writing 'satisfying' documentation".
Extensive documentation comes at a price few companies are willing to pay (and that's not just a matter of resources. Look at Apple's documentation)
This way, good documentation is priced into my estimate for the project. I don't have a work item "spend a few days documenting." Nope, if I'm doing a foo then that includes documenting a foo at the same time.
Yes, you can produce a small amount of code faster if you don’t “waste” your time on documentation, but that becomes counterproductive as soon as you can no longer keep the entire codebase in your head.
Documenting how to use or interact with it in a specific context, which often includes perspectives on interactions with other components, or e.g. protocols not explicit in the code, deciding where to draw the lines of what can assumed trivial common knowledge and what should be specified or explicitly not specified without notices not to rely on these etc. , that is a different thing.
If it wasn't, then truly as they used to say, the source code would be it's own best documentation (I am a big fan of programming for readability, but even the best readable code, while it will be correct and up to date, will never be enough nor the best for all)
It’s not first party documentation that’s the problem. The problem is that they don’t share that documentation, so in order to get documentation for an “unsupported” OS a 3rd party needs to reverse engineer it.
486 more comments available on Hacker News