John Carmack’s Epic 2015 Letter To Oculus VR Leaders

by Ian Hamilton • February 14th, 2019

A book releasing next week called The History Of The Future by Blake Harris tells the founding story of Oculus based on hundreds of interviews as well as thousands of documents collected by Harris over several years.

A statement we received from Facebook yesterday attributed to co-founder and Head of VR Product Nate Mitchell claims the “book’s dramatization of our history is not always consistent with what happened, and some of the stories are definitely not reflective of our real relationships.”

We read a draft of the book and are refraining reporting certain claims until we verify information or until we read the finished edition. Some portions of the book, however, reference emails sent years ago that are said to originate from people like Facebook CEO Mark Zuckerberg and Oculus CTO John Carmack.

One such email from Zuckerberg was the subject of a TechCrunch story yesterday, printed with the note they had “not independently verified the contents” of the email.

Another email dated February 16, 2015, is said by Harris to be written by long-time Oculus CTO John Carmack. The timing of the email places it at an important moment in the development of the current VR industry.

Oculus in 2015

Oculus had already shipped its second Rift PC VR development kit as well as an “Innovator Edition” for the Gear VR phone-powered headset. The company was preparing to reveal the first consumer version of the Oculus Rift in June, even though the VR teams were still more than a year away from shipping the device. The VR teams were also more than a year and a half from shipping the Touch controllers for Rift.

Meanwhile, HTC had yet to publicly reveal its partnership with Valve to produce a competing device.

This is the context in which Carmack wrote the message, which we present below in its entirety as sent to us by Harris. Like TechCrunch, we have not independently verified the message contents. If the veracity of the below message is disputed by Carmack, we will delete the text and provide an explanation. We don’t think that will happen. Facebook declined to confirm the email.

We also believe there is overwhelming public interest in the thought processes and business decisions of people shaping technology billions of people may use in the coming decades. Also, while Harris’ book references the email at length, we believe both Carmack and the public deserve as much context as can be provided. Though we cannot control the presentation of this information after it leaves our website, we feel the context provided on this page is critical.

If you find this email as interesting as we do, we ask that in spreading it to other places you include as much context as possible.

Subject: Oculus Strategy (LONG)

From: John Carmack

Date: February 16, 2015

Subject: Oculus Strategy (LONG)

In preparation for the executive retreat this week, I have tried to clarify some of my thoughts about the state and direction of Oculus.  This is long, but I would appreciate it if everyone took the time to read it and consider the points for discussion. Are there people attending the meeting that aren’t on the ExecHQ list that I should forward this to?

Some of this reads as much more certain that I actually am; I recognize a lot of uncertainty in all the predictions, but I will defend them in more depth as needed.

Things are going OK.  I am fairly happy with the current directions, and I think we are on a path that can succeed.

There are a number of things that I have been concerned about that seem to have worked out, but I remain a little wary of some of them metastasizing.

Oculus Box.  Selling the world’s most expensive console would have both failed commercially and offended our PC base.  Building it would have stolen resources from more important projects. Note that my objection is based on a high-end PC spec system.  At some point in the future (or for some level of experiences), you start considering cheap, mobile based hardware, which is a different calculation.

Oculus OS.  The argument goes something like “All important platforms have had their own OS.  We want VR to be an important platform, therefore we need our own OS.” That is both confusing correlation with causation, and just wrong – Facebook is an important platform that doesn’t have its own OS.  When you push hard enough, the question of “What, specifically, would we do with our own kernel that we can’t get from an existing platform?” turns out to be “Not much”. Supporting even a basic Linux distribution would be a huge albatross around our neck.

Indefinite innovator editions for Gear VR.  We have been over this enough; I am happy with the resolution.

Major staff-up to “build the Metaverse”.  Throw fifty new developers together and tell them to build a completely hand-wavey and abstract application.  That was not going to go well. Oculus needs to learn how to deliver decent quality VR apps at a small scale before getting overly ambitious.  I understand this choice wasn’t made willingly, but I am still happy with the outcome.

Write all new apps for CV1 in UE4.  Would have been a recipe for failure this year, and would have unnecessarily divided efforts between mobile and PC.  I recognize that my contention that we can build the current apps for both PC and mobile has not yet been demonstrated, and is in fact running quite a bit behind expectations.

Acceptance of non-interactive media.  This is still grudging, as noted by the “interactive” bullet point in our official strategy presentation at the town hall, and Brendan’s derisive use of “viewmaster” when talking about Cardboard, but most now agree it has an important place.  People like photos and video. You could go so far as to say it drives the consumer internet, and I think Oculus still underestimates this, which is why I am happy that Douglas Purdy’s VR Video team is outside the Oculus chain of command.

While it isn’t something I am directly involved in, I think the decision to push CV1 without controllers at a cheaper price point is a good one.  Waiting for perfect is the wrong thing to do, and I am much less convinced of the necessity of novel controllers for VR’s success.

On to things with more room for improvement:

Platform under-delivery

I suspect that this was not given the focus it deserved because many people thought Gear VR wasn’t going to be “real”, so it may have felt like there was a whole year of cushion before CV1 was going to need a platform.  Launching Gear VR without commerce sucked. Some steps have been taken here, but there are still hazards. I won’t argue passionately about platform strategy, because it really isn’t my field, but I have opinions based on general software development with some relevance.

We still have definitional problems with what exactly “platform” is, and who is responsible for what.  I would like to see this made very clear. I am unsure about having the Apps team responsible for the client side interfaces.  It may be pragmatic right now, but it doesn’t feel right.

I have heard Holtman explain how we couldn’t just use Facebook commerce infra because it wouldn’t allow us to do some things like region specific pricing that are important factors for Steam, but I remain unconvinced that it is sufficient reason to make our development more challenging.  There is so much value in Facebook’s infra that I feel we should bend our strategies around using it as much as possible. A good strategy on world class infra has a very good chance of beating out an ideal strategy on virgin infra.

We should be a really damn good app/media store and IAP platform before we start working on providing gaming services.  App positioning, auto updates / update notification, featured lists, recommendations, media rentals, etc.

When we do get around to providing gaming services, we should incrementally clone Steamworks as needed to satisfy key developers, rather than trying to design something theoretically improved that developers will have to adapt to.

The near term social VR push should be based strictly on the Facebook social graph.  We can prove out our interaction models and experiences without waiting for the platform team to make an anonymized parallel implementation…

Consumer software culture

We need to become a consumer software shop.

The Oculus founders came from a tool company background, which has given us an “SDK and demos” development style that I don’t think best suits our goals.  Oculus also plays to the press, rather than to the customers that have bought things from us, and it is going to be an adjustment to get there. Having an entire research division that is explicitly tasked with staying away from products is also challenging, and is probably going to get more so as product people crunch.

Talk of software at Oculus has been largely aspirational rather than practical.  “What we want” versus “what we can deliver”. I was exasperated at the talk about “Oculus Quality”, as if it was a real thing instead of a vague goal.  I do have concerns that at the top of the software chain of command, Nate and Brendan haven’t shipped consumer software.

Everyone knows that we aren’t going to run out of money and be laid off in a few months.  That gives us the freedom to experiment and explore, looking for “compelling experiences”, and discarding things that don’t seem to be working out.  In theory, that sounds ideal. In practice, it means we have a lot of people working on things that are never going to contribute any value to our customers.

Most people, given the choice, will continue to take the path that avoids being judged.  Calling our products “developer kits”, “innovator editions”, and “beta” has been an explicit strategy along those lines.  To avoid being judged on our software, we largely just don’t ship it.

For example, I am unhappy with Nate’s decision to not commit to any kind of social component for the consumer launch this year.  I’m going to try to do something anyway, but it means swimming against the tide.

I would like to see us behave more like a scrappy web / mobile developer.  Demos become products, and if they suck, people take responsibility. Move fast, watch our numbers, and react quickly.  “What’s new” on our website should report new features added and bugs fixed on a weekly basis, not just the interviews we have given.

Get better value from partner companies

The most effective way to add value to our platform is to leverage the work of other successful companies, even if that means doing all the work for them and letting them take all the money.  I contend that adding value to our platform to make more happy users is much more important at this point than maximizing revenue from a tiny pool. I think win-first, then optimize monetization, is an effective way to take advantage of our relatively safe position inside Facebook.

It is fine to shotgun dev kits out to lots of prominent developers, but the conversion rate to shipping products from top tier companies isn’t very good.  A focused effort will yield better results.

My pursuit of Minecraft has been an explicitly strategic operation.  We will benefit hugely if it exists on our platform, and if we close the deal on it, the time I spent coding on it will have been among the most valuable of my contributions.

We need a big video library streaming service, and I would be similarly willing to personally write a bunch of code to make sure it turned out great.  Ideally it would be Netflix, but even a third tier company like M-Go would be far better than doing it ourselves. There is an argument along the lines of “We don’t need Netflix, we’ll cut our own content deals and be better off in the long run.”  That makes the conscious (sometimes defensible) choice to suck in the near term for a long term advantage, but it also grossly underestimates the amount of work that all those companies have done. I have low confidence that a little ad-hoc team inside Oculus is going to deliver a better, or even comparable, movie / TV show watching system than the established players.

I know I don’t have broad buy-in on the value, but I feel strongly enough about the merits of demonstrating a “VR Store” that I think it is worth basically writing the app for Comixology.  I look at it as a free compelling dataset for us, rather than us doing free work for them.

What other applications could be platform-defining for us with a modest VR reinterpretation?

Picking winners like this does clearly sacrifice platform impartiality, but I think it is a cost worth paying.

Even amongst the general application pool, we should be actively fixing 3rd party apps, and letting them drive the shape of SDK development.  I am bothered by a lot of the text aliasing in VR apps, so I need to finish up my Unity-GUI-in-overlay-plane work and provide it to developers.

Abandon “Made for VR or go away” attitude

The iPhone was a phone.  Many people would say it wasn’t actually a great phone, but it subsumed the functionality of something that everyone had and used, and that was important for adoption.  If it had been delivered as the iPod Touch first, it would have been far less successful, and, one step farther, if it wasn’t also an iPod, it would have been another obscure PDA.

Oculus’ position has been hostile to apps that aren’t specifically designed for VR, and I think that is a mistake.  We do not have a flood of AAA, or even A level content, and I don’t think it will magically appear as soon as we yell CV1 at the top of our lungs.  The economics are just not very compelling to big studios, and developing to the solid 90 fps stereo CV1 spec is very challenging.

There are a number of things that can help:

Encourage limited VR modes for existing games.  Even simple viewer or tourist modes, or mini-games that aren’t representative of the real gameplay would be of some value to VR users.  Do we have a head mount sensor on CV1? We win if we can get our customers to think that when you put on your HMD, a good game should do SOMETHING.

Embrace Asynchronous Time Warp on PC, so developers have a fighting chance to get a decent VR experience out of their existing codebases.  We are going to be forced to make this work eventually, but we have strategically squandered six months of lead time. This is directly attributable to Atman’s strong opinions on the issue.

We should make first class support for running conventional 2D apps in VR, and we should support net application streaming on mobile.  It is going to be a long time before we have high quality VR applications for everything that people want to do; 2D applications floating in VR will fill a valuable role, especially as we move towards switching between multiple resident applications.

Even driver intercept applications 3D/VR-ifying naïve applications may eventually have a place. It is technically feasible to deliver the full comfortable-VR experience from a naïve application in some cases.

Abandon “Comfortable VR” as a dominant priority

Even aside from this almost killing Gear VR, our positioning on PC has been somewhat inconsistent.  We talk about how critical SteamWorks-like functionality is to our platform, because Steam gamers are our (PC) user base, but the intersection of stationary viewpoint game experiences and the games people play on Steam is actually quite small.

We should not support developers “doing it wrong”, like using an incorrect FOV for rending, but “doing uncomfortable things”, like moving the viewpoint or playing panoramic video that can’t be positioned, are value decisions that will often be net positive.  In fact, I believe that they will constitute the natural majority of hours spent in VR, and we do a disservice to our users by attempting to push against that natural position.

We have a problem here – It would be hard for the CEO of a sailboat company to be enthusiastic and genuine if they always got seasick whenever they went out, but Brendan is in exactly that position.

My Minecraft work is a good example.  By its very nature, it is terrible from a comfort position — not only does it have navigation, but there is a lot of parabolic bounding up and down.  Regardless, I have played more hours in it than any other VR experience except Cinema.

Brendan suggested there might be a better “Made for VR Minecraft” that was stationary and third person, like the HoloLens demo.  This was frightening to hear, because it showed just how wide the gulf was between our views of what a great VR game should be. Playing with lego blocks can be fun, but running for your life while lost underground is moving.

Mobile expansion plan

It will not be that long until Note 4 class performance is available in much cheaper phones.  Notably, being quad core (or octa-core on Exynos) does almost nothing for our VR performance, and neither does being able to burst to 2.5 GHz, both due to thermal reasons.  A dual core Snapdragon that was only binned for 1.7 GHz CPU and 400 MHz GPU could run all the existing applications, and DK2 would argue that 1080p screens can still “Do VR”.  This is still the most exciting vision for me – when everyone picks up a cheap Oculus headset holder for their phone when they walk out of the carrier store, just like grabbing a phone case.

I would rather push for cost reduction and model range expansion across all Samsung’s lines before going out to other vendors, but we are doing the right thing with Shaheen working towards building our own Android extensions to run Gear VR apps, so we have them on hand when we do need them.

The other major technical necessity is to engage with LCD panel manufacturers to see what the best non-OLD VR display can be, either with overclocked memory interfaces and global backlight controls, or custom building rolling portrait backlights.  Once we have apps running on the custom dev kits with Shaheen’s work, we should be able to do experiments with this.

I am less enthusiastic about the dedicated LG headset that plugs into phones. It will require all the Android software engineering effort that Gear VR did for each headset it will be compatible with, as well as significant new hardware engineering, and the attach rate would be guaranteed to be a fraction of Gear VR due to a much higher price.  It seems much more sensible to just make sure that CV2 is mobile friendly, rather than building a CV1.5 Mobile Edition. If you certify a phone for VR, you might as well have a drop-in holder for it as well as the plug in option; there would be little difference in the software, and the tradeoff between cost, position tracking, refresh rate, and resolution would be evaluated by the market.

If we want to allow mobile developers to prepare for eventual position tracking support, we could make a butchered DK2 / CV1 LED faceplate that attaches to a Gear VR so a PC could do the tracking and communicate positions back to the Gear VR over WiFi.  I don’t feel any real urgency to do this, I doubt the apps people are developing today are going to be the killer apps of a somewhat distant position tracked mobile system.

Tagged with: , , ,

What's your reaction?