But… look- see those birds? At some point a program was written to govern them. A program was written to watch over the trees, and the wind, the sunrise, and sunset. There are programs running all over the place. The ones doing their job, doing what they were meant to do, are invisible. You’d never even know they were here.
— The Oracle
Developers, Developers, Developers, Developers…
— Steve Ballmer
There’s been a lot of talk about the metaverse lately. A three dimensional digital world that we can inhabit with our whole bodies. Whether it’s completely immersive with virtual reality or a mix of digital and physical with augmented reality is yet to be determined, but it seems like with the rise of spatial computing devices there will be some kind of shared networked system where people go to use 3D applications, create them, and interact with each other. We’re already seeing early versions of this idea with applications like Horizon Worlds, Rec Room, and VRChat.
One of the key aspects for these applications is they allow users to create content. While it’s relatively easy for most people to use existing tools to start putting shapes together to form 3D models, these objects are static and lifeless. In order for these digital spaces to be more useful and engaging we’ll need much more powerful tools to program complex behaviors and interactions into these objects. Tools that are easy enough to use so a wide spectrum of people will be able to address the needs and wants of as many users as possible.
Applications like Horizon Worlds and Rec Room have in-system programming tools, but they feel secondary to the end user experience. Horizon worlds has a 2D Scratch-like scripting system and Rec Room has Circuits which is a 3D node and wire system. They are both starting to explore programming in a 3D environment, but rely heavily on existing practices of program development. A shift in human computer interaction as big as this one presents an equally large opportunity to try more radical approaches to programming. It will allow the developer to inhabit and interact with programs in new ways as they’re being developed. If we make programming and spatial-first designed developer tools the primary focus, we’ll be able to kick-off a flywheel that will lead to a dynamic and useful metaverse for everyone.