I mean, I'd give a fair shake to an OS from the SQLite team [1].
Building a hobby OS taught me how little is just "software". The CPU sets the rules. Page tables exist because the MMU says so. Syscalls are privilege flips. Task switches are register loads and TLB churn. Drivers are interrupt choreography. The OS to me is just policy wrapped around fixed machinery.
The EOs https://en.wikipedia.org/wiki/EO_Personal_Communicator?usesk... used the AT&T Hobbit chipset, which was a descendant from the CRISP architecture. https://dl.acm.org/doi/pdf/10.1145/30350.30385 by Dave Ditzel et al. The architecture was informed by examining millions of lines of unix C code; the arch was an attempt to execute C code well. https://en.wikipedia.org/wiki/AT%26T_Hobbit?useskin=vector It was a beautiful overall design. The design focused on fast instruction decoding, indexed array access, and procedure calls. The 32-bit architecture of Hobbit was well-suited to portable computing, and almost ended up in the Apple Newton. The manual is possibly worth a peruse: http://www.bitsavers.org/components/att/hobbit/ATT92010_Hobb...
Meta has the talent and the balance sheet to pull this off. Worst case scenario we end up with one more open sourced operating system. Who knows what happens 20 years down the line.
Sigh... Usual company politics.
No matter how much money you pour with top talents, code quality, documents etc, developing a custom OS doesn't make sense.
Been there, seen that. I faced a similar situation at one company. They failed on custom Not-Invented-Here syndrome derived implementation. My technically correct skepticism was criticized for decreasing moral of the team working on it.
But I have wondered why one of these companies with billions of dollars to burn hasn't tried to create something new as a strategic initiative. Yes, there wouldn't be any ROI for years, and yes, the first several products on the platform would probably be better off on something more traditional.
But the long term value could potentially be astronomical.
Just another case of quarterly-report-driven decision making, I suppose. Sigh.
In my non-expert mind, an OS for "foveated rendering" would be similar to what many cameras prioritize and more likely be similar to an "realtime OS" of some sort. OTOH, Apple's goggles use the XNU kernel, so maybe a microkernel would be sufficiently realtime, similar to QNX often used for automotive applications [4].
0. https://web.archive.org/web/20190214134247/http://www.canon....
2. https://chdk.fandom.com/wiki/For_Developers
Realistically there's no reason Linux wouldn't be fine on its own for AR and in fact I'm typing this on Linux on some AR glasses right now.
That scale is when creating an OS gives you a clear advantage over licensing or working with an open source OS.
Every other scale below that it's for knowledge, growth, research, or fun.
Roll call!
We also need to be clear what an OS is. Is it "darwin" or "macOS" - they have different scopes.
Things I'd want from an OS for an XR device.
1. Fast boot. I don't want to have to wait 2-3-4-5 minutes to reboot for those times I need to reboot.
I feel like Nintendo figured this out? It updates the OS in the background somehow and reboot is nearly instant.
2. Zero jank. I'm on XR, if the OS janks in any way people will get sick AND perceive the product as sucking. At least I do. iOS is smooth, Androind is jank AF.
Do any of the existing OSes provide this? Sure, maybe take an existing OS an modify it, assuming you can.
https://en.m.wikipedia.org/wiki/Nintendo_Switch_system_softw...
Android suffers from being Java at the core, with all the baggage that brings with it.
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.
See Google's Fuschia: https://en.wikipedia.org/wiki/Fuchsia_(operating_system)
> But the long term value could potentially be astronomical.
Such as what?
Historically? The internet, the concept of a graphical user interface, the mouse, the smartphone, the LCD display, the laser printer...
It's about clever people trying weird stuff, and occasionally ending up with a world-changing idea. Asking for examples of to-be-discovered innovations is, by definition, an impossibility.
If you're competing against nothing, then I see it: it opens up a wide variety of product possibilities. But linux exists. Why not spend 1/1000th the time to adapt linux?
That's not even counting the rather substantial risk that your new OS will never approach the capabilities of linux, and may very well never become generally usable at all.
Option A: spend years and millions on a project that may never be as good as existing solutions, diverting attention and resources from actual products, or...
Option B: work on products now, using an existing, high-quality, extensible, adaptable OS, with very friendly licensing terms, for which numerous experts exist, with a proven track record of maintenance, a working plan for sustainability, a large & healthy developer community exists, etc.
It's hard to imagine how it wouldn't be a complete waste of time.
Google has Fuchsia - is about 10 years in development. Recently was a target for layoffs
They have; Taligent comes to mind. You may not have heard of that -- or more likely, you have but just forgot about it -- but it's a good object lesson (no pun intended) in why a successful new OS is hard to just conjure into existence. There has to be a crying, desperate need for it, not just a vague sense that This Time We'll Get It Right.
You could probably cite OS/2 Warp as a less-obscure example of the same phenomenon.
(Actually I just realised you meant "buy")
The point of R&D is the time horizon is long, and the uncertainty is high. Making JS slop that then has to be constantly babysat is opex, not capex.
If you're at all competent, go work somewhere else
In other words, be useful. You don't have to worry about "being good" or "doing good" though many do and it's quite admirable to do so. But that's not the bar you have to clear.
The bar you should try to clear is to be useful. If what you're doing all day is helping people have shelter, or raise families, or be more healthy, or have more knowledge, or even be entertained or amused, you're being useful to people.
If what you do all day ultimately serves to make people poorer, more divided, more addicted, and more unwell, then what you're doing is not useful, it's harmful.
If what you're doing all day primarily contributes, even indirectly, to making people's lives worse, then nothing you do after that will erase it. Arguments to the contrary are just rationalization.
Whatever you think of Meta core products, they pay a ton of people to work on various open source projects, do R&D on things which are only tangentially related to social media like VR or data center tech.
There is worse way to get a paycheck to do what you are interested in.
This is in no way tangential.
VR is Meta's way of trying to move social media from web to VR in a Second Life way.
And you can believe me that there will be advertisement in the "game".
That you can get paid and have fun doing it, doesn't make the product better.
I am sure it made developing and standardizing the algorithm easier, but what makes it such a good (performant) algorithm is the design of the original creator.
Problem is systemic.
You could take a job designing landmines and you'd have a real hard time causing as much actual harm, as there just aren't enough wars going on to reach the same scale
> But isn't that true for every big corp, or even every public company?
So I suppose not really, no.
Additionally companies working on carbon-free energy might also serve as evidence. There are some big ones around.
Yeah its not reliable to count on one charismatic leader to run the whole thing, but that is what the corporate model has being doing and how we ended up here.
What next, go work for TV stations and sabotage them?
Go work for McDonalds and make it inneficient?
Sabotage manufacturers of combustion-cars?
If you can get a well paying job at meta, you have other options.
dont shit talk my goat like that
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.
The company is a black hole of wasted talent.
You can't do it without going through their fucking app, that asks for every permissions under the sun, including GPS positioning for some reason. After finally getting this app working and pairing it with my headset, I could finally realize the controller was just dead and their was nothing to do.
And my quick search on the internet yielded no other mean to pair controllers.
If it uses bluetooth, which it might for the controller?, the permission for bluetooth on Android is fine location --- the same permission as for using GPS. That might be the same permission you need for wifi stuff, too? Because products and services exist to turn bluetooth and wifi mac addresses seen into a fine location.
But who knows what they do with the GPS signal after they ask for it?
This is madness. The safe space culture has really gone too far.
> I can only really see a new general purpose OS arriving due to essentially sacrificing a highly successful product’s optimality to the goal of birthing the new OS
if youre apple, it does make sense to do stuff from scratch. i think in a way, software guys wind up building their own prisons. an api is created to solve problem X given world Y, but world Y+1 has a different set of problems - problems that may no longer be adequately addressed given the api invented for X.
people talk about "rewrite everything in rust" - I say, why stop there? lets go down to the metal. make every byte, every instruction, every syscall a commodity. imagine if we could go all the way back to bare metal programming, simply by virtue of the LLM auto-coding the bootloader, scheduler, process manager, all in-situ.
the software world is full of circularities like that. we went from Mainframe -> local -> mainframe, why not baremetal -> hosted -> baremetal?
Their CPU, their boards, their firmware (presumably), their OS[1], much of the perhipherals are theirs, too.
Lots of companies try to emulate Apple, but it's very hard to pull off.
[1] Yes, they use some parts from Mach and FreeBSD in their OS, but the amalgamation is theirs, and they support and change the whole thing as needed.
It's also very hard to do so.
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.
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.
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.
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.
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.
None of it surprising if this is a signal of how they operate.
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.
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.
Cool off.
The drawback of this is you lose good talent and keep rent-seekers instead.
This is exactly the madness I'm talking about.
Case in point.
> it only went down after you know who passed away.
I mean that's kind of ironic. You believe that Jobs was a great and decent person who led Apple to be roses and rainbows. Outside this cult of personality it was a company that engaged in unethical and monopolistic business practices just as anyone else did, walled-garden lock-in of their platform, intentionally making their devices impossible to repair, planned obsolescence, slave labor conditions in manufacturing, etc. etc.
So the point is untrue, its the benevolent dictator delusion, just like there are no benevolent political authoritarian leaders so are there no benevolent CEOs either. Because the system itself is the issue, authoritarianism/capitalism. If you are a conservative/authoritarian you believe in the former if you are a liberal/libertarian/capitalist you believe in the latter.
And me saying cool off is madness? You must live in a mad, mad world. Good luck going forward.
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.
But my enthusiasm diminished after learning that they worked thousands people to death.
It's only $50 if the government pays for the rest of the ticket. $50 per passenger won't even cover track maintenance. Source: My ass, but I still think I'm right.
I have some bad news to tell you about the overall number of dead related to that government
Funny thing that now many people don't even know that it was Russia and Germany BOTH that started the war. And they were supposed to attack Poland simultaneously, but Stalin, PR animal that he was, delayed Red Army's attack by one week, thereby creating the legend that it wasn't Russia that started the war.
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.
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.
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.
Interesting exemple because the biggest investors in renewable by far are big oil companies.
So what should people do? Go or not go? Sadly, the world is never black and white.
In the interest of not getting bogged down in semantics, let's just always assume that when people say "advertising" in this era, they mean "targeted advertising". Then we can avoid yet another tired attempt at excusing Meta's behavior.
It’s completely tangential at this point. Meta dreams of a metaverse but most of their investments have gone to solving foundational issues with VR.
If Meta wants to pay for that, well, I’m not going to bite the hands that feeds VR research. My starry-eyed teenage years are thankfully far behind me.
Ads are actually horrible. Holy moly I'm so glad I can just ublock my way through the sea of garbage that is the internet nowadays. The fact there are people still indoctrinated by commercials makes sense, I'm just sorry you see that as a marker of maturity.
Advertisement isn't showing you something you might be interested in. Advertisement is an industry of psychoanalysts spending untold man hours of effort crafting ways to psychologically manipulate the population into serving the needs of a given corporation.
Instagram doesn't just show you cool clothes you might want to buy. It leverages dark pattern ux to keep you engaged with the app well past any healthy duration, and shows you content designed to enrage or arouse you to keep you in a mental state that will increase engagement and possibly lead to you engaging in shopping therapy.
Advertising is releasing psychofauna into the world of YouTube kids to get your children obsessed with brand characters that they absolutely must have physical representations of. Or it gets even darker than that, look up Elsagate.
Maybe advertising wasn't evil when it was a sweet potato hawker shouting their wares into the market. Now it's an entirely different beast and it is anti human and evil.
By your definition, selling arms to dictators and using the money to buy a yacht and private security qualifies as "service to humanity."
You emphasize "sustainably", but how is it more sustainable to give 500k/year to capitalism until you don't make that much / retire / die? In either option, that 500k/year is there until it isn't. With charity, you'd help more people but it would be no more or less sustainable.
Something can however be a lot more valuable than any action by which value is destroyed. Destroying value, by the way, can by definition not be sustainable. Alas, opportunity cost is (also by definition) not directly observable, so it gets dismissed. Hence, e.g., the broken window fallacy.
You don’t “give to capitalism”, you engage in voluntary transactions with other individuals and legal entities, such that they are a net (expected) gain in value for all parties involved.
EA charities estimate that the cost of malaria prevention that will save a person's life for 1 year is ~$150. So what is a 'better service for humanity'? Buying yourself one night of sushi & wine or donating one year of life to somebody who wouldn't have it otherwise?
Food for thought: Do you think slavery is or was a “service to humanity”? Because that is what you are advocating: Forcing some set of people to work for free for another.
Also why do you think it has become so cheap in the first place?
This is not to say that eradicating malaria might not make a lot of sense by the way. But you are being incredibly disingenuous, and your argument is based on bad premises.
I don’t think we have crossed the threshold to make them synonymous, feel free to provide data to back that claim globally not in some hip Silicon Valley I don’t own a tv market. My quick search shows targeted isn’t there
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.
Right back at you.
Mind you, this XROS idea came after Oculus reorged into FB proper. It felt to me like there were FB teams (or individuals) that wanted get on the ARVR train. Carmack was absolutely right, and after the reorg his influence slowly waned for the worse.
It has some value a huge company funds these research, as long as it doesn't affect the practical real for-profit projects.
"To make something really different, and not get drawn into the gravity well of existing solutions, you practically need an isolated monastic order of computer engineers."
As a thought experiment:
* Pick a place where cost-of-living is $200/month
* Set up a village which is very livable. Fresh air. Healthy food. Good schools. More-or-less for the cost that someone rich can sponsor without too much sweat.
* Drop a load of computers with little to no software, and little to no internet
* Try reinventing the computing universe from scratch.
Patience is the key. It'd take decades.
What problem are we trying to solve that is not possible right now? Do we start from hardware at the CPU ?
I remember one of an ex Intel engineer once said, you could learn about all the decisions which makes modern ISA and CPU uArch design, along with GPU and how it all works together, by the time you have done all that and could implement a truly better version from a clean sheet, you are already close to retiring .
And that is assuming you have the professional opportunity to learn about all these, implementation , fail and make mistakes and relearn etc.
Parts of Africa and India are very much like that. I would guess other places too. I'd pick a hill station in India, or maybe some place higher up in sub-Saharan Africa (above the insects)
> What problem are we trying to solve that is not possible right now?
The point is more about identifying the problem, actually. An independent tech tree will have vastly different capabilities and limitations than the existing one.
Continuing the thought experiment -- to be much more abstract now -- if we placed an independent colony of humans on Venus 150 years ago, it's likely computing would be very different. If the transistor weren't invented, we might have optical, mechanical, or fluidic computation, or perhaps some extended version of vacuum tubes. Everything would be different.
Sharing technology back-and-forth a century later would be amazing.
Even when universities were more isolated, something like 1995-era MIT computing infrastructure was largely homebrew, with fascinating social dynamics around things like Zephyr, interesting distributed file systems (AFS), etc. The X Window System came out of it too, more-or-less, which in turn allowed for various types of work with remote access unlike those we have with the cloud.
And there were tech trees build around Lisp-based computers / operating systems, SmallTalk, and systems where literally everything was modifiable.
More conservatively, even the interacting Chinese and non-Chinese tech trees are somewhat different (WeChat, Alipay, etc. versus WhatsApp, Venmo, etc.)
You can't predict the future, and having two independent futures seems like a great way to have progress.
Plus, it prevents a monoculture. Perhaps that's the problem I'm trying to solve.
> Do we start from hardware at the CPU ?
For the actual thought experiment, too expensive. I'd probably offer monitors, keyboards, mice, and some kind of relatively simple, documented microcontroller to drive those. As well as things like ADCs, DACs, and similar.
Zero software, except what's needed to bootstrap.
its seriously not something you want to do if you want to get anywhere.
then again,its a lot of fun, maybe imagining where it could be some day if you had an army of slave programmers (because still it wont make money lol)
Its a contradiction very much at the core of the idea: Should I expect that the Operating System my monastic order produces be able to play Overwatch or be able to open .docx files? I suspect not; but why? Because they didn't collaborate with stakeholders. So, they might need to collaborate with stakeholders; yet that was the very thing we were trying to avoid by making this an isolated monastic order.
Sometimes you gotta take the good with the bad. Or, uh, maybe Microsoft should just stop using React for the Start menu, that might be a good start.
Agree but again worth pointing out the obvious. I don't think anyone is actually against React per se, as long as M$ could ensure React render all their screens at 120fps with No Jank, 1-2% CPU resources usage, minimal GPU resources, and little memory usage. All that at least 99.99% of the time. Right now it isn't obvious to me this is possible without significant investment.
What could it could mean for a "tech" town to be born, especially with what we have today regarding techniques and tools. While the dream has not really bore out yet (especially at a village level), I would argue we could do even better in middle America with this thinking; small college towns. While its a bit of existing gravity well, you could do a focused effort to get a flywheel going (redo mini Bell labs around the USA solving regional problems could be a start).
Yes it takes decades. My only thought on that is, many (dare say most) people don't even have short term plans much less long term plans. It takes visionaries with nerves and will of steel to stay on paths to make things happen.
Love the experiment idea.
To kick-start, given them machines with Plan9, ITS, or an OS based on LISP / Smalltalk / similar? Or just microcontrollers? Or replicate 1970-era university computing infrastructure (where everything was homebrew?)
Build out coursework to bootstrap from there? Perhaps scholarships for kids from the developing world?
In a few decades, they will reach to our current level, but then, rest of our world didn't idle for these decades and we don't need to solve the old problems.
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.
I've only seen John Carmack's public interactions, but they've all been professional and kind.
It's depressing to imagine HR getting involved because someone's feelings had been hurt by an objective discussion from a person like John Carmack.
I'm having flashbacks to the times in my career when coworkers tried to weaponize HR to push their agenda. Every effort was eventually dismissed by HR, but there is a chilling effect on everyone when you realize that someone at the company is trying to put your job at stake because they didn't like something you said. The next time around, the people targeted are much more hesitant to speak up.
This gives you best of both worlds - carefully designed system for the hardware with near optimal performance, and still with the ability to take advantage of the full linux kernel for management, monitoring, debugging, etc.
They had amazing talent. Seriously, some of the most brilliant engineers I've worked with.
They had a huge team. Hundreds of people.
It was so ambitious.
But it seemed like such a terrible idea from the start. Nobody was ever able to articulate who would ever use it.
Technically, it was brilliant. But there was no business plan.
If they wanted to build a new kernel that could replace Linux on Android and/or Chrome OS, that would have been worth exploring - it would have had at least a chance at success.
But no, they wanted to build a new OS from scratch, including not just the kernel but the UI libraries and window manager too, all from scratch.
That's why the only platform they were able to target was Google's Home Hub - one of the few Google products that had a UI but wasn't a complete platform (no third-party apps, for example). And even there, I don't think they had a compelling story for why their OS was worth the added complexity.
It boggles my mind that Fuchsia is still going on. They should have killed it years ago. It's so depressing that they did across-the-board layoffs, including taking away resources from critically underfunded teams, while leaving projects like Fuchsia around wasting time and effort on a worthless endeavor. Instead they just kept reducing Fuchsia while still keeping it going. For what?
https://en.wikipedia.org/wiki/Singularity_(operating_system)
https://www.microsoft.com/en-us/research/project/singularity...
https://www.zdnet.com/article/whatever-happened-to-microsoft...
That jives with my sense that META is a mediocre company
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?
The only thing I can imagine that would be more invasive would require a brain implant.
https://en.wikipedia.org/wiki/HarmonyOS_NEXT https://www.usenix.org/conference/osdi24/presentation/chen-h...
MS is a state backed company. Very natural that China went the same path.
Besides, the statement's completely nonsensical - there were multiple OSes developed by for-profit corporations in the West (Microsoft, Apple, Nintendo, QNX, Be, etc.).
It's kind of an extraordinary statement that an OS couldn't be developed by a for-profit organization, especially if the hardware's somewhat fixed and you don't need to support every piece of equipment under the sun.
It makes absolutely zero financial sense to create a new general purpose operating system.
That's billions of lines of code. With a B. And that's just the code - getting it to work with hardware?
Do YOU want to talk to 10,000 hardware vendors and get them on board? No! Nobody does! That's just money burning!
But, there are valid political reasons for creating a new general purpose OS.
So someone at Meta was so sensitive that being told their behemoth of a project was ill advised ended up getting reported to HR?
Much of the scenarios they tried to address could have been done with Mach or some realtime kernel or with fuchsia. I recall later on they did consider using fuchsia as the user space for the os for some time.
On another note, there was similarly an equally “just for fun” language effort in the org as well (eg “FNL”). That was also conceived by a bunch of randos who weren’t a bunch of compiler guys that had no product vision and just did it for fun.
Well when the era of efficiency arrived all of this stuff ended.
None of the code they wrote couldn't have just been written as a kernel module in Linux. It would've also been so much easier due to all the documentation and general knowledge people have about Linux both within the company and outside the company.
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
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.
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.
Carmack being Carmack, I'm sure the HR report came to nothing but it's just another reminder of the annoyances I don't miss about working at a BigCo. In the end, it doesn't matter that it went nowhere, that he was right or that it was an over-reaction and likely a defensive move in inter-group politics Carmack wasn't even playing - it just slowly saps your emotional energy to care about doing the right things in the right ways.
That made me really think about how fragile and toxic people can be.
Another Amazonian almost got fired for reacting with a monkey covering eyes emoji to a post shared by a black person (no malintent, of course, just an innocent “mistake” most normal people wouldn’t even think twice about).
Also, I am not surprised he was reported -- typical underhanded political hustling commonplace at Meta.
Most opinions of this man exists in a vacuum space isolated from the real world software industry. Building an OS from scratch is one of those examples.
It’s never seems like there’s a significant reason behind them other than………”I made dat :P”
Why is such a meme among gamers about Unity and Unreal based games?
Exactly because so many make so little effort it is clear where the game is coming from.
Someone said your preferred design won't work, and you go to HR.
I gladly throw my idea under the bus when I hear why it's bad.
Now offering any critique of a thing in order to help the company comes with a career risk.
It's probably not that hard to write bare metal code for a modern CPU that runs and crashes. It's obviously insurmountably hard to compete with Android in features with scratch built bare metal code. An "OS" can be anything between the two. But it's very easy to imagine an "XR OS" project snowballing quickly into the latter, and Carmack's concerns would be spot on(as always is, and as proven). Is it then an inherent difficulty in "designing a new operating system", or is it technically something else?
The drivers are the hard part. It takes a lot of inter-industry collaboration to get driver compatibility
Not sure what the situation is for other hardware like NVMe SSDs.
[0] 2750 page datasheet for the e810 Ethernet controller https://www.intel.com/content/www/us/en/content-details/6138...
Real question: Why do you think Intel does this? Does it guarantee a very strong foothold into data center NICs? I am sure competitors would argue two different angles: (1) this PDF shares too much info; some should be hidden behind an NDA, (2) it's too hard to write (and maintain) this PDF.
The people who develop OSes are cut from a different cloth and are not under the usual economic pressures.
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)
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.
Of course, your custom kernel will still have to have some of its own code to support core platform/chipset devices, but LKL should pretty much cover just about all I/O devices (and you also get stuff like disk filesystems and a network stack along with the device drivers).
Also, it probably wouldn't work so well for typical monolithic kernels, but it should work decently on something that has user-mode driver support.
thus calling into question why you ever bothered writing a new kernel in the first place if you were just going to piggyback Linux's device drivers onto some userspace wrapper thingy.
Im not necessarily indoctrinated to the point where I can't conceive of Linux being suboptimal in a way which is so fundamental that it requires no less than a completely new OS from scratch but you're never going to get there off of recycling linux's device drivers because that forces you to design your new OS as a linux clone in which cade you definitely did not need to write an entire new kernel from scratch.
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.
(And I feel bad saying this since Meta obviously did waste eleventy billion on their ridiculous Second Life recreation project ...)
Then how do devices end up up having drivers for major OSes? It's all guesswork?
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.
You know, one'd think that having a complex hardware should make writing a driver easier because the hardware is able to take care of itself just fine, and provide a reasonable interface, as opposed to devices of the yore which you had to babysit, wasting your main CPU's time, and doing silly stuff like sending them two identical initialization commands with 30 to 50 microseconds delay between or whatever.
I guess one exception maybe is Nvidia who have sort of hidden the complexity by moving most driver functionality onto software on the card. At least that's how I understood it. Don't quote me on that.
Without that, we would have probably just switched hw, because the quite obscure bug was in the ASIC, and debugging that on 2005-6-ish hw is just infeasible.
PS: Half-joking, you can write some big portions with LLMs but the point stands.
https://www.youtube.com/watch?v=52hMWMWKAMk&t=1s
This is a guy who figures that what he wants to do most with his 3 free weekends is to port his latest, greatest engine to a Cortex-A8. Leading corporate strategy? Maybe not. But Carmack on efficiency? Just do it.
Dude just seemed frustrated with the lack of attention to things that mattered.
But...that honestly tracks with Meta's past and present.
If he doesn’t believe in something, he can sometimes be over critical and it’s hard to push back in that kind of power imbalance.
This is Meta. Let the kids build their operating system ffs. Is he now more concerned with protecting shareholder value? Who cares.
Interestingly, he was pulling the same bs at Google until reason prevailed and he got pushed out (but allowed to save face and claim he resigned willingly[1]).
[0] https://x.com/yewnyx/status/1793684535307284948 [1] https://x.com/marklucovsky/status/1678465552988381185
I even found myself letting really bad things go by because it was just going to take way to much of my time to spoon feed people and get them to stop.
(Mind you, Carmack himself was responsible for Oculus' Scheme-based VRScript exploratory-programming environment, another Meta-funded passion project that didn't end up going far. It surely didn't cost remotely as much as XROS though.)
> If the platform really needs to watch every cycle that tightly, you aren't going to be a general purpose platform, and you might as well just make a monolithic C++ embedded application, rather than a whole new platform that is very likely to have a low shelf life as the hardware platform evolves.
Which I think is agreeable, up to a certain point, because I think it's potentially naive. That monolithic C++ embedded application is going to be fundamentally built out of a scheduler, IO and driver interfaces, and a shell. That's the only sane way to do something like this. And that's an operating system.
Imagine being able to build an operating system, basically the end-game of being a programmer, and get PAID for it. Then some nerd tells on you.
Anyway, if anyone reading this gets a chance to build a custom OS for bespoke HW, and get paid FAANG salary to do so, go for it! :-D
impact is facebook for “how useful is this to the company” and its an explicit axis of judgement.
Why is complaining to HR even an option on the table?
I got angry emails from people because I wrote "replacing a primary page of UI with this feature I never use doesn't give me a lot of value" because statements like that make "the team feel bad". It was an internal beta test with purpose of finding issues before they go public.
Not surprisingly, once this culture holds root, the products start going down the drain too.
But who cares about good products in this great age of AI, right?
You don't know someone or how they really behave because they are a public figure.
a little bit a negative feedback at high level can domino quickly too. massive pivots, reorgs, the works.
Facebook VR never needed a new OS in the first place. It needed actual VR.
I've had to coach people and help them understand the entitlement involved in demanding that everyone adjust and adhere to their personal preferences and communication style. In my experience, it's about seeking to understand the person and adapt accordingly. Not everyone is willing to do that.
There weird hagiographies need to go. Carmack is absolutely not known to be kind. I have no idea what happened here but the idea that's he's this kindly old grandpa who could never, ever be rude or unprofessional is really out there.
There is a difference between “this project is not going to work” vs “these people are incompetent and the project should be cancelled as a result”. The former needs to be said, the latter is a HR violation.
This is one of the reasons I’m sick of working pretty much anywhere anymore: I can’t be myself.
Appreciating people for their differences when they are humble and gifted is easy. I side with liberals, but I have a mix of liberal, moderate, and conservative friends.
But there are only so many years of pretending to appreciate all of the self-focused people that could be so much better at contributing to the world if they could quietly and selflessly work hard and respect people with different beliefs and backgrounds.
I’m happy for the opportunity I have to work, and I understand how millennials think and work. But working with boomers and/or gen X-ers would be so much less stressful. I could actually have real conversations with people.
I don’t think the problem is really with HR. I think the problem is a generation that was overly pandered to just doesn’t mix with the other generations, and maybe they shouldn’t.
Supposedly you were meant to have you disagreements in private, and come to support what ever was decided. "hold your opinions lightly" The latest version of it was something like "disagree and commit".
This meant that you got a shit tonne of group think.
This pissed off Carmack no end, because it meant shitty decisions were let out the door. He kept on banging on about "time to fun". This meant that any feature that got in the way of starting a game up as fast a possible, would get a public rebuke. (rightly so)
People would reply with "but the metric we are trying to move is x,y & z" which invariably would be some sub-team PSC (read promotion/bonus/not getting fired system) optimisation. Carmack would basically say that the update was bad, and they should feel bad. This didn't go down well, because up until 2024 one did not speak negatively about anything on workplace. (Once carmack reported a bug to do with head tracking[from what I recall] there was lots of backwards and forwards, with the conclusion that "won't fix, dont have enough resources". Carmack replied with a diff he'd made fixing the issue.)
Basically Carmack was all about the experience, and Facebook was all about shipping features. This meant that areas of "priority" would scale up staffing. Leaders distrusted games engineers("oh they don't pass our technical interviews"), so pulled in generalists with little to no experience of 3D.
This translated in small teams that produced passable features growing 10x in 6 months and then producing shit. But because they'd grown so much, they constantly re-orged pushed out the only 3d experts they had, they could then never deliver. But as it was a priority, they couldn’t back down
This happened to:
Horizons (the original roblox clone)
video conferencing in oculus
Horizons (the shared experience thing, as in all watching a live broadcast together)
Both those horizons (I can't remember what the original names were) Were merged into horizons world, along with the video conferencing for workplace
originally each team was like 10, by the time that I left, it was something like a thousand or more. With the original engineers either having left or moved on to something more productive.
tldr: Facebook didn't take to central direction setting, ie before we release product x, all its features must work, be integrated with each other, and have a obvious flow/narrative that links them together. Carmack wanted a good product, facebook just wanted to iterate shit out the door to see what stuck.
100% agree with your points. To me watching I was like -- yeah, hell, yeah, working on an OS from scratch sounds awesome, those guys have an awesome job. Too bad they're making everyone else's job suck.
Fwiw inventing a new application ecosystem has never been a goal and is therefore not a limitation for its viability. The hard part is just catching up to all the various technologies everyone takes for granted on typical systems. But it's not insurmountable.
I'm also not sold on the idea that having more options is ever a bad thing. People always talk about web browser monoculture and cheer on new entrants, yet no one seems to mind the os monoculture. We will all come out ahead if there are more viable OS out there to use.
3 main OSes vs 2 main browser engine for consumer to choose from?
Anyway the main issue with the Browser engine consolidation is that whoever owns the Browser engine, can make or break what goes in there. Just think about VSCode's current status with all the AI companies wanting to use it and make it their own product, while MSFT attempting to curtail it. At some point either MSFT decide it commit to FOSS on this one, or the multiple forks will have to reimplement some functionalities.
These were my imaginations. I thought maybe an OS that could run on the web. Or an OS that could be virtualized to run on several machines. Or an OS that could be run along several other instances on the same machine each catering to a different user.
"I think that your team shouldn't even exist" doesn't mean "I want your team to no longer exist.".
When I was on nuclear submarines we'd call what you are advocating "keep us in the dark and feed us bullshit."
On well-functioning teams, product feedback shouldn't have to be filtered through layers of management. In fact, it would be dishonest to discuss something like this with managers while hiding it from the rest of the team.
So what are we supposed to do? Just let waste continue? The entire point of engineering is to understand the tradeoffs of each decision and to be able to communicate them to others...
There's nothing wrong with well-founded and thoughtful criticism. On the other hand, it is very easy for this to turn into personal attacks or bullying - even if it wasn't intended to be.
If you're not careful you'll end up with juniors copying the style and phrasing of less-carefully-worded messages of their tech demigod, and you end up with a huge hostile workplace behaviour cesspit.
It's the same reason why Linus Torvalds took a break to reflect on his communication style: no matter how strongly you feel about a topic, you can't let your emotions end up harming the community.
So yes, I can totally see poorly-worded critiques leading to HR complaints. Having to think twice about the impact of the things you write is an essential part of being at a high level in a company, you simply can't afford to be careless anymore.
It's of course impossible to conclude that this is what happened in this specific case without further details, but it definitely wouldn't be the first time something like this happened with a tech legend.
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.
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.
Those boards were always accompanied by horrific binary blobs glued to a kernel form a stone age. Or Windows.
- you're interviewed with a random team and evaluated if you'd be a good fit for the company.
- you are hired and go through a multi-week "bootcamp" to learn FB's vocabulary, processes, and tech stack, fixing some real bugs and implementing some real (but minor) features in the process.
- upon completing the bootcamp you seek a team that is of interest to you and if interest is mutual, you join the team. If you can't find a team after X weeks, you part ways with the company.
I think everyone had a degree but looking at my degree (applied math) in particular nothing that I had learned at the uni was immediately useful and I think there isn't really anything that would prevent a smart person with a GED and some history of, say, Linux kernel contributions from succeeding on a team like this. Except may be a degree is needed for H1B visa for those who need it.
If you are building for a single abstraction, code gets much simpler, instead of building a platform that multiple abstractions can then be built on top of.
Report someone to HR who deserves to be reported to HR, not someone who gave genuine good-faith (and in this case, correct) technical feedback that unfortunately got in the way of someone else's promo packet / empire building.
There are certainly good reasons to report someone to HR. This is not one of them. Only toxic workplaces tolerate such pettiness. And ultimately, XROS was canned by Boz anyways.
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
It's just that most internal hardware initially only cares only about Windows (or only Linux) so it makes more financial sense to develop a more complex driver than a complex firmware. The equation might change later on but by then you are stuck with the hardware design.
Why not, though? We used to have e.g. glass teletypes with microprocessors (8080/8051) in them that exposed a serial bus with very neat command protocol that we still use nowadays, that could boot up, init and self-test all on their own.
Meta Quest 3 feels like sci-fi tech with badly executed UI design from the 90s.
Exactly! I picture the choice being grandfathering in compatibility with existing OSes (having the promised performance of their product in fact indirectly modulated by the output of all other teams of world's smartest throughout computing history and present day), vs wringing another OS-sized piece of C++ tech debt upon unsuspecting humanity. In which case I am thankful to Carmack for making the call.
I can understand how "what you're doing is fundamentally pointless" is something they can only afford to hear from someone who already has their degree of magnitude of fuck-you money. Furthermore in a VC-shaped culture it can also be a statement that's to many people fundamentally incomprehensible
(Especially if it's an "API" persisted to disk)
And the Sr was generally a very nice person who did not give much weight to levels, willing to engage with anyone.
Whatever expertise you need to prune a working system is less than the expertise you'll need to create a whole new one and then also prune it as it grows old
Software is bloated in part because it's built in layers. People wrap things over, and over, and over. Stripping down layers is neigh-impossible later. Starting from scratch is easy.
Starting from scratch fails in practice because you don't get feature parity in time short enough for VC (or grant) funding cycles.
If we build a tech tree around 200MHz 32MB machines, except for things like ML and video, we'd have a tech tree which did everything existing machines do, only 10x more quickly in 0.1% of the memory. Machines back then were fine for word processing, spreadsheets, all the web apps I use on a daily basis (not as web apps), etc.
Need would drive people to rebuild those, but with a few less layers.
5 Millions alone for the AMD graphic driver.
* Those that are are only loaded when needed
It's not that bad
It was much easier to cripple your competition back when there were several orders of magnitude less software engineers in the world.
In Doom Guy, though, Romero says that after he left iD, he heard from others still working there that the company had become something of a dictatorship under Carmack, and that within X months (I forget how many), half the company had quit. Romero also qualifies several times that they were all in their early/mid-20s and didn't have the requisite life experience to be handling business situations well
Sorry if I wasn’t clear; this was the point I was actually trying to make. Direct and to the point should not a HR incident make. I was trying to contrast with something that would.
> custom Wifi board
Why didn't you use something more mainstream? Cost?FWIW I like carmack from what I have seen publically (and Romero, who I have interacted with) but I wouldn’t pretend to know who either of them really are from my observation of them.
And in order to make it happen it also required writing the already-launched HTML-based UI in Flutter/Dart. Again ... why? What for? There wasn't even a working "native" Flutter at the time, despite promises, and there certainly wasn't a working accessibility stack -- no screen reader, no magnification, nothing -- so that all had to be kludged in. It was everything wrong with the "rewrites considered harmful" distilled.
Not to mention terrible for morale, execution, planning, budget, customer satisfaction.
I was just a lowly SWE 3 "IC" just in the trenches, not nearly as "important" as all that, so my opinion mattered not at all. But to me it violated every sound engineering / project planning principle I'd learned in the 15 years of my career up to that point. Just another event that led to me becoming quite cynical about the ability of leadership at Google to actually manage anything of significant complexity that wasn't ads/search related.
Again, Fuchsia .. very neat. But it didn't belong there.
It wasn’t anywhere near that late the numbers you’re saying was about the whole build cycle - board bringup for one of the two boards first commit in zircon was 3y before launch (that codes public, I just checked and Mike landed it in 2018) - and discussions weren’t done then, that was before any prototype/demos could be done. There were sluggish stages and project management was rough, and there were delays at the end related to quality but the quality bar was necessarily high, particularly on the core system - don’t brick all the devices in the field. And we didn’t, and that’s actually a feat replacing everything from firmware to gui in the field without users noticing.
What was the goal? Well two things: fuchsia needed a first, and realistic shipping target that wasn’t excessively lofty. Nest needed to get out of the OS game so it could focus resources on product. Chris talked about this in his 9to5google interview.
It’s a shame you feel so sour about it, everyone involved did good work. I have friends from nest and some of the ics also have similar pained history from that time - it’s sad, once upon a time it was maddening. It’d have been so easy for a leader to substantially improve that. Sure plenty of things could have been better, for sure we could have fixed these awful sentiment and relationship issues (I tried, got burned for it - that even showed up in my calibration), but we all shipped.
Damn, I'd pay to work in some serious OS/Compiler teams, but hey why should they hire me? Oh well...Yeah I'm doing a bit of projects on my side but man I'm so burnt out by my 9am-5pm $$ job + 5pm-10pm kid job that I barely have any large chunk of time to work on those.
In theory, it’s better to sleep early, get up around 5 and get 2 hours of quality time, but man he sometimes gets up around 6:15 and earlier, and I found it difficult to get good sleep anyway, so I tried to switch to 2 hours of night time, but he wants to sleep with me for 30 mins around 9pm before going to my wife’s bed, and I usually fell sleep sooner than he did…
Girls are much easier to raise. They sleep earlier and don’t fight too much, as far as I heard from friends.
What you describe is probably necessary for getting _fast_ Linux compatibility. However, if you are willing to take the overhead of a few layers of indirection, you can probably sandbox the Linux land somewhere, and not have it impact the rest of your design much.
Most hardware access doesn't have to be particularly efficient. And, yes, for the few pieces of hardware that you do want to support efficiently (eg your storage devices or networking, whatever you want to concentrate on in your design) these you can handle natively.
Btw, I would suggest that most people these days should write their toy operating systems to run as a VM on a hypervisor like Xen or similar. The surface to the outside world is smaller that way.
It has a rump kernel architecture which makes reusing the drivers almost trivial compared to reusing linus drivers with a new kernel.
> you're never going to get there off of recycling linux's device drivers because that forces you to design your new OS as a linux clone in which cade you definitely did not need to write an entire new kernel from scratch.
thats in interesting point, and makes me wonder if some kind of open interface for drivers to write to (and os's could implement) wouldn't be worthwhile?probably it would have to be very general in design, but something along the lines of driverkit or iokit might work?
However it goes into the same direction of the previous commenter, device drivers are intertwined with the OS semantics, even on microkernels, so eventually it ends being just something like POSIX.
There are many factors on whether to use a one handed or two handed backhand in tennis. It's subjective which one feels better, but there exists an objective answer to whether it makes a particular player better or not.
And just because it's hard and experts can get it wrong, doesn't mean expertise means nothing and "it's all subjective".
The fact that there exists a right and a wrong definitially means it's objective.
And for the business, or the project, there is a right and a wrong, on whether to build an OS or not. Even if it's very hard to predict, and not feasible to A/B test.
Your sub's officers also need to constantly be aware of what to communicate to whom and in which language. Your superiors certainly kept you in the dark about a ton of concerns that were on their plate because simply mentioning them to subordinates would have been too distracting.
Maybe you know something they don’t; it’s actually very likely. But maybe what you think matters actually doesn’t at all and ultimately they’re right.
In either case, they were shipping, so best to listen and be prepared if you disagree.
Not some new OS so you can start making the glasses 2 years later.
Just like when you want to bake a cake, you dont start by designing an oven, or creating an universe from scratch
But it turned out nobody cared. People who envisioned doctors using VR glasses to look at MR images in 3D, architects, modelers, mechanical engineers, who people thought would use 3D to do work turned out to not want it.
Immersive games were created, that looked and ran amazing, and afforded a never-before-seen level of interactivity, but after a few standout successes, people just moved on.
It's like Apple got to about the iPhone 4 level (where most people would agree the experience was decent), then everybody decided to go back to their old Nokias.
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.
What do you mean by that?
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).
In total across the entire US federal government, $518.8 million was paid to Microsoft for products and services in 2024. That is approximately 0.21% of their total annual revenue.
I assert that the threshold for "state sponsored" is well in excess of 0.21% of annual revenue.
Federal Spending: https://www.usaspending.gov/recipient/dd77b7c3-663e-cb91-229...
Microsoft Annual Revenue: https://www.microsoft.com/investor/reports/ar24/index.html
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.
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.
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.
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.
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.
Why the fuck is he even hired there if you are not going to listen to him.
Dude has forgotten more things about game development than you will ever know...
John Carmack, David Cutler, Tom West, Cameron Zwarich, etc. There are about maybe 50 of them.
Still, I saw this demo at that time and I felt it was impressive considering the toy level performance of 2010's smartphone.
I'm not saying that there's no space for direct communication and that everyone needs to be formal and socially polite during every interaction. But I've met many people who act like you describe John does who very much do not appreciate getting it back, implying some level of awareness that their directness is hurtful on occasion.
I've only met a few direct people who can take it as well.
It makes me want to reframe this a little with your statement 'understand the person and adapt accordingly.' As someone who has learned their social skills later, I think it's usually more of a responsibility of the abrasive person to adapt their communication style and know when it is best used.
Specifically, I think abrasive and direct works great in high trust environments. It has served me well as well. It does sometimes relate to autism for me, ymmv.
Anyway the reason why it doesn't work outside of high trust environments is that people have feelings, and their feelings matter. Ultimately you do have a responsibility to try and be considerate. So like, for me I try to separate the high trust and low trust environments in my life, and keep the part of me that's direct and abrasive (often among peers in technical context) less vocal in the low trust environment.
When I intentionally want to push back in a low trust environment, I try to check in more with the person, look to where they seem uncomfortable, and double check I understand what their insecurities might be in a certain context as that often increases defensiveness.
Sometimes in low trust environments I might not notice, or I might identify it as low trust and just not care. In those contexts yeah I'll be the disgruntled aspie ;) but in other contexts I want to connect to people and really think through the impact of my words not the righteousness.
You’re right that direct and/or abrasive communication is better received in high trust relationships or environments. So the goal should always be to try and take steps to cultivate that.
In my experience, some people are legitimate assholes. but many are simply misunderstood and what I’ve learned throughout my life is that you’ll learn a lot and gain a lot simply by looking past your initial emotional response and approach things with an open mind.
If I’m kinda sensitive but also hyper-ambitious, I acknowledge that Facebook has
1. Some of the highest pay in the industry. 2. Ultra-competitive environment. 3. Low moral principles.
Seems like the strategy would be to use every lever at your disposal to manipulate your environment, rather than leave and risk getting paid less.
If I understand the hypothetical you've proposed, my advice would be for you to adapt and learn to be less sensitive rather than have you believe that you can manipulate the environment, or worse, directly manipulate people.
It's possible that you could be a positive influence for change, so I don't want to completed discount any effort there, but I also think it's worth being realistic about what you can actually affect.
But like it works for Musk and Trump, and probably hundreds of other leaders today, why not take their example? (Assuming again, your highly ambitious and competitive, I’m more pro social, so I’d take your route)
This is legitimately something I’ve been asking myself lately, we talk about a world that values one thing ( rationality, respect, pro social behavior) but reward another (pettiness, vindictive, selfishness). Why do we pretend?
Also, and maybe the most important point, John Carmack is 100% trying to manipulate his environment and people, that’s why he’s so successful!
The world is literally run by people who are good at manipulating people and their environment. That’s what an entrepreneur is, that’s what a politician is, that’s what an artist is. Your argument seems to mostly be people shouldn’t try to manipulate the world in a way that I don’t like.
I mean maybe, but maybe Carmac is just an ass hole... He can be a "legend" in the software development world and also just not be a super great person socially. The two things aren't mutually exclusive.
I don't disagree with you entirely, but being "direct" isn't a get-out-of-jail-free card for poor interpersonal skills. It's not always about "fragile egos" or "entitlement", it's about basic professionalism and communication.
Every improvement after that would count as micro-invention in your dichotomy.
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.
Worked on DEC Alpha, AMD K7 & K8, Broadcom, P.A. Semi, was in turn purchased by Apple. Jim spent four years at Apple before first returning to AMD, then on to Tesla, Intel and finally Tenstorrent.
Keller keynoting TSMC's 2022 Open Innovation Summit: https://www.youtube.com/watch?v=32CRYenTcdw
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.
Definitely depends on the specific children!
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://en.wikipedia.org/wiki/USB_communications_device_clas... (the only good thing to come out of usb)
This heavily depends on your niche I think. If you're writing closed source vendor software and your client's only guiding light is your documentation, it's 100% true.
If you're working on a 5 people project that evolves at a fast pace, and everyone touching the code is expected to be familiar with the domain and operations, you'll mostly leave comments (todos, meta info, external ticket links etc), not documentation per se.
The trouble with good docs is that they are work to maintain, like good code. If we decide to change this component in a substantial way soon, which we likely will, I'd have to practically rewrite the docs! Why bother?
Because the docs are part of the code. Write the docs.
I don't expect to win this crusade, but I'll keep writing docs anyway. Then later people will modify the code without modifying the docs, and so the docs will be a lie, but still useful, I think.
It's like asking three people who are not closely familiar with a component, but who have worked with it, "what is this thing, how does it work?" You will get three different answers. It would be nice if one of them were a written description straight from the horse's mouth, even if the component is now more of a camel.
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)
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.
This is not impossible, but the effort and costs required are substantial and often lose out on a priority basis to just fixing or improving the product itself.
> Look at Apple's documentation
To clarify for me: Is this good or bad?So that's like saying there's no right or wrong answer on whether to leave your 15th floor apartment a normal morning via the stairs, or by jumping out of the bathroom window. Yes, actually, there is. Unless your goal is to go splat.
"Will this make the product better", "will this make the product deliver sooner", "will this be a net positive to the company's bottom line" are all objective, though hard, questions.
> Very related to https://en.wikipedia.org/wiki/Is%E2%80%93ought_problem
Nonsense. The company already has many many oughts already. Otherwise words mean nothing, and the "right answer" to an interview question about hashmaps is to strip naked and start humping the trash can.
And on my tennis analogy, it's objective that one way or the other allows a gives player to win more games. So we can call it "better". Even though you can still argue whether you "ought" to try to win.
No, because it's subjective whether your interpretation of "fiduciary duty" precludes them from developing an OS. I think it does not, for example.
> Unless your goal is to go splat.
Yeah, goals are subjective too.
> Otherwise words mean nothing
Words do mean nothing, they are pointers to ideas. And for you "objective" points to a different idea than it does for most people.
We can disagree in our best assessment if "developing an OS" is a good strategy for achieving our goals.
But no, that is not subjective. There's a right answer. We can try to use our experience and place subjective weights on probabilities, but if we could A/B history, there's definitely an objective right answer.
Boiling down "building an OS" to the math of spending dollars on OS development and the return on this investment in dollars, this is objective.
In your estimation of how much it'll cost, you turn to experts who use objective and subjective resources to try to estimate the true objective numbers.
> for you "objective" points to a different idea than it does for most people.
Me, the dictionary, and the world disagrees with you.
> It is very much not an objective discussion if you are discussing whether it makes sense to develop a new operating system.
I don't know what kind of discussions you have, but if you were in the room would you be saying "I just have this gut feeling that we need to develop an OS"?
I would hope that instead you would be making objective arguments such as "The cost of this OS development, because we control the hardware and will need drivers for video, audio, bluetooth, and inertial sensors, is (based on similar projects here) about $X in labor cost. The benefits are (just making this up) battery times because we won't need a write path and cache coherence on the storage system, which per this benchmark consumes Y% of clock cycles. And this should cause our product to be better to the tune of $Z based on these previous product statistics"
Now, an objective counter argument could be that the cost isn't $X, it should be $X2, because the people working on this have an opportunity cost. And there's another cost $W, which is delayed time to market. And $X in any case would need to be compared with patching the Linux kernel for the needed features.
And so on, and so on.
It's also an objective discussion to appeal to your experience, or experience of others: "Look, when company X, Y, and Z did this, the eventually abandoned that approach. It never worked for those companies. Why would it instead work for us? How is the problem space different?".
A subjective discussion would be "I just feel like it'll be cleaner if we had our own OS, and that should allow us to leapfrog competition", being countered with "well Linux is battle tested and just works".
"I don't think anybody cares about battery times" — subjective. "Game Boy Classic was good for 30h play time, whereas Game Boy Color only for 10. Here's sentiment analysis on the Game Boy forum indicating with so-and-so error bars that people did care for that use case, and people returned their puchases indicating battery life at a rate of so-and-so higher for Color" — Objective. — "Well, we're not making Game Boy" — Subjective.
If you're having the latter discussion, then you're not actually having a discussion whether it makes sense to develop a new operating system. Whatever you decide will just have the rationale "it felt right".
Having seen Carmack's talks and writings, it's my assumption that his case against writing an OS was not "just trust me bro, I'm experienced". It was likely painfully specific both about the technical complexities, and how those are connected to the bottom line (the end goals).
Your argument seems to be one against the idea of expertise. Experts need to be able to communicate objectively, but the other end of the spectrum where it appears you are, is that "it's all subjective, your data is as good as my guess, there's no such thing as truth".
Subjective is of course not wrong. My examples above may imply that, but just because a visionary can have a subjective vision that predicted the future correctly, doesn't make objective counters not objective. Just objectively wrong.
"You have a one-in-a-billion chance to win the lottery" — "Well I felt I would and I did!" — "Congrats. I was not wrong though".
> Words do mean nothing, they are pointers to ideas.
Are you a philosophy student? Seems a bit entry level.
Government spending is not easy to track. This doesn't even begin to touch on non-monetary benefits Microsoft receives with government influence.
I am sure Carmack himself encourages debates and discussions. Lionizing one person can't be expected of every employee (unless that person is also the founder or the company is tiny).
If it comes down to someone saying “I’ve been doing this for 30 years, I’ve shipped something very similar 5 times, and we ran into a problem with x each time”. Unless you have similar counter experience, you should probably just listen.
What happens in tech is you get a very specific kind of junior who wants to have HN comment arguments at work constantly and needs you to prove every single thing to them. I don’t know man it’s a style guide. There’s not going to be hard quantitative evidence to support why we said you shouldn’t reach for macros first.
I remember this guy wanted $20 million to build AGI a year ago (did he get that money?), and people here thought he would go into isolation for a few weeks and come out with AGI because he made some games like that. It’s just embarrassing as a community.
That’s a pittance for such a project. I wish we could see what he’d have come up with.
Don’t think so.
XROS was an org that hired for specific specialist positions (as opposed to the usual "get hired into FB, go through the bootcamp, and find your place within the company"). At one point we got two separate requests from the recruiting execs: - Your tech screen pass rate is way too low compared to other teams at FB. Please consider making your tech screen easier to expand the pool of candidates. - Your interview-to-offer rate is way too low compared to other teams at FB. Please consider making your tech screen more difficult to reduce time that engineers spend on interviewing and writing feedback.
Anyway, IMO it was a very strong team in a very wrong environment. Most of the folks on the team hated the Facebook culture, despised the PSC process (despite having no problems with delivering impact in a greenfield project), had very little respect for non-technical managers coming from FB proper (the XROS team saw themselves as part of Oculus), and the majority I believe fled to other companies as soon as the project was scrapped. The pay was good however, and the work was very interesting. My overall impression was that most people on the team saw XROS as a journey, not a destination, and it was one of the reasons why it was destined to never ship.
If you want to be the dominant player in the market in 10-15 years, build the OS and keep funding it.
iPhones and Macs share a kernel and a large portion of user space and syscalls, right?
If the GPL is a problem just fork some BSD like the PS3 did, and pretend you're maintaining code that you already spent five years on
I know you need low latency for XR + VR + AR - everyone needs low latency for everything. So they could build on whatever has been done for audio and networking and Android touch screens that all want low latency too
I'm speaking foolishly from outside but making "an OS for" something is more commonly marketing speak than a good idea. Like this fucking "OS for cities" and "OS for work" stuff. That's an OS the way a cookie recipe is an OS for a fucking oven. The casual insistence on misunderstanding important things really gets my goats
It doesn't sound like he's concerned with waste. It sounds like it's a typical Carmack argument - distilled and hyper logical, and his conclusion is more to do with the pointlessness of it. He actually concedes the point that the project may have been highly efficient (which it may or may not have been, he was steelmanning).
His main points seemed to be:
If every cycle matters and efficiency is paramount, just make the project monolithic C++ code. If every cycle matters, that is somewhat incompatible with general purpose OSs, and if it doesn't, the existing landscape is more than good enough. Presumably, he's calling out the absurdity of counter-arguments which are being unrealistic about the objectives of creating a new general purpose OS, while also focusing on extreme efficiency. He states that the requirements to fully achieve these objectives would require a "monastic coding enclave" like Plan 9 OS, and it wasn't realistic even with the high talent in Meta.
And that plays into the second point, which seems to essentially be "new OSs aren't a draw for developers, they are a burden". This is painfully obvious when looking at the history of OSs and software, and it's the obvious reason why "let the kids build their operating system ffs" should result in a reflexive "noooo..." from the greybeards. The deeper point though is that if A. is achieved, the B. Burden on devs will be even more onerous. Therefore unless the entire project is committed to truly moving crowds to new paradigms (good luck, literally billions have been lost here), just use the proven, faily high performance options that have widespread support.
The conclusion is "on balance, it's a bad idea." He's arguing it sharply (although I understand a Carmack steelman is intimidating to attack), but in essence it's a fairly banal and conservative conclusion, backed with strong precedent.
the problem was, it was holding back products. Because if youre going to make your own OS, it changes what chips you put in. If you don't know what chipset you're going to have, you don;t know what your pixel budget is, you can't plan features.
It takes about 2 years to get hardware out the door, and another 1.5 years to iron out the bugs and get a "finished" product.
They finally have feet now, right?
Only light fun. I'm just a little perplexed at their progress and direction over the past 7-8 years. I don't understand how they can have so many high caliber people and put out...that.
When your emotions over your work become more important than the quality of the work you're outputting, you become a problem for people who use your work.
This is true of course, but this is also true for the “search for truth” in science. Do we fail to point out the flaw in the reasoning of someone’s life's work for fear of offence? The truth is the higher ideal that must be strived for!
In the same way, an idea is only good once it has been challenged. It may fail and dissolve, it may survive, it may morph into something that can no longer be assailed. This is the forgers fire, and it is necessary.
I know this isn’t as black and white as I’m painting it, but the ideal is still something worth striving for.
Also, software engineering is a field where there’s rarely some ideal truth we’re trying to achieve, and indeed even in science, people do often fail to point out flaws in reasoning for fear of offense.
No wonder they used any means necessary (including HR) to defend their source of money.
They probably knew very well they are a net loss for the company.
Lots of big orgs have such crooks. It's a failure of management not to fire them.
(I'm not including the C++ Standard Library, as I didn't implement it.)
> I'm the only person who ever implemented all of it.
Sean Baxter is an easy counter example.
(For some context, back in the 80's, code generators needed enhancements to implement C++. You couldn't just use an existing one. Bjarne had to do some ugly workarounds because of this.)
It does take a huge amount of work to write and maintain. Typically the authors are not technical, so it also relies on the designers being available to answer questions as well. Then there’s a choice of how it’s written: narrative and potentially imprecise but readable, or terse and precise but hard to read. There’s both styles in the same document, terse for register descriptions.
Regards to (1), if you don't publish this information you're not selling a CPU, you're selling a very expensive chunk of sand. There is simply no way that a customer can guess at what your implementation looks like. Additionally, Intel barely has IP in the traditional sense. They hold patents, but their only real competitor in making x86 processors, AMD, has a long-standing mutual non-enforcement agreement wrt patents.
Regards to (2), I'm guessing a majority of this PDF can be generated sort of like you generate API documentation from doxygen comments.
[1]: https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf?ts=175651560...
I'm not sure large traditional silicon vendors like Intel, TI, et al re-evaluate the documentation requirements (and costs) on a chip by chip basis. It's probably done by chip class and for companies who've been selling chips by the millions over many decades to industries as diverse as defense, aerospace, automotive, etc there are classes of chips where robust, complete documentation is not only expected but often a required part of the RFP, compliance or conformance processes.
While this level of effort probably isn't needed for every chip in that class, it could be hard to reliably predict when a general purpose chip is still in the design phase which customers may be interested in it during its life (which for some of these chips might be decades). Many chips which conform to MIL-SPEC or other similar standards which can require extensive documentation are simply enhanced versions of standard chips, so the docs exist anyway. Finally, there's the organizational capabilities and culture aspect. Once the org needs to maintain the systemic ability to generate serious documentation at scale, you end up with a lot of managers and staff who think this way.
For comparison, a data sheet for a single transistor can be around 12 to 30 pages. A data sheet for a tiny microcontroller is probably a few hundred pages.
I once wrote a driver for a flash chip and that had a data sheet of around 80 pages.
Assumptions, fair or not, about (1) seems more likely somehow.
Arguably these days having a clear frontend/backend separation is good compiler architecture. It might slow down compile times a bit, but it's worth the cost.
Running macOS in a hypervisor controlled from a second machine (proxy mode + verbose==on) to watch drivers talk to the hardware:
https://asahilinux.org/docs/sw/m1n1-user-guide/#running-a-ma...