James McCrae wants to lower the barrier to entry for creating virtual worlds with janusVR. He has a PhD in computer science from University of Toronto, and he’s created a sophisticated technology stack that allows front-end web developers to rapidly prototype interactive virtual worlds using a simple HTML-like markup language. These worlds are connected to each other through portals and provide an early look at what the metaverse might feel and look like.
LISTEN TO THE VOICES OF VR PODCAST
I caught up with James at the VRX Conference in San Francisco, and he talks about his vision and inspiration for creating janusVR. He wanted a simple markup language as well as the ability to drag and drop 2D or 3D content into a world while you’re in the world. He even has an in-world IDE where you can write code to create the virtual world while being within that same virtual world.
It’s amazing to see what type of creativity and experiences that have already started to be created within janusVR, including a replica of an A-10 airplane. There are also users who make videos of their guided tours of different janusVR destinations, as well as popular social hangout locations like The VR Bar.
It’s still pretty early for any type of open standards and single technology stack for determining how the metaverse is going to be built, but janusVR is helping lead the way by releasing some of their tools under the MIT license. High Fidelity has also been open sourcing their tools, but there are currently a lot more active janusVR virtual worlds that have already been creating.
James has a vast vision for what’s possible with the metaverse, and his approach has been to just dive in and start making it happen. You can check out this video to see what’s already possible with janusVR:
Become a Patron! Support The Voices of VR Podcast Patreon
Theme music: “Fatality” by Tigoolio
Subscribe to the Voices of VR podcast.
Rough Transcript
[00:00:05.452] Kent Bye: The Voices of VR Podcast. I'm James McRae. I'm the founder and CEO of a company called Janus VR. To sort of frame the problem that we're solving as a company, we're basically aiming to combine the internet as a platform, this great platform, with virtual reality, which is this extremely promising future platform. Now, how do you marry those two? How do you put them together in a way that's highly creative, inspired? and sort of transcends the idea of just, you know, taking it as a 2D rectangle and putting it into a 3D space. So the company's all about creating software on a platform that's, we're building the immersive web, essentially. And so yeah, maybe you could talk a bit about the back end in terms of are you using HTML markup, or what is it that you're able to do in order to rapidly prototype these virtual worlds? OK, so the back end. There's a lot of technology coming together, actually. In terms of my own implementation, the work that I do, it's a C++ application written in OpenGL and OpenAL libraries. It uses Qt. But that's only one component. That's sort of like the client or the end user software. But in addition to that, we have defined a set of languages. In particular, a language we're just calling Janus Markup Language, which is like an extended HTML, an XML-like language that allows you to position and place all the elements in the 3D space. And in addition, we have JavaScript support on top of that to add dynamics and behavior to pages. That's the second component, and I guess the third component that comes together are the server, the Janus server project, which is written in Node, Node.js, and that's all open sourced, and that's on GitHub, and anyone can contribute to that and extend upon it, so if they want to add. authentication to their, you know, subdomain of the web, or they want to cleanse avatar packets that come through to enforce consistent looks and feel, they can do that. So I guess it's the coming together of three separate technologies. One is the client software, one is sort of the markup languages, and the third is this sort of server that maintains a presence layer that kind of builds on top of the HTTP servers that hand out all the content and actually, you know, allow us to see, communicate, do VoIP, communicate by hand gestures, and just add that presence to any space. Yeah, it really sounds like what you have with Janus VR is kind of like a wrapper to be able to get the performance that you need, as opposed to, say, using a web browser like Chrome. But you're kind of creating an app that is able to have a first class experience in virtual reality with the required frame rates. But yet, you're providing a platform for people to use kind of a simple markup language to be able to very quickly create these virtual worlds that are interconnected. And what I've seen, at least, is probably the most fully implemented version of the metaverse. So, I mean, I guess I do agree with the approach. Janus VR the software is built ground up for VR devices to work with HMDs and all the input devices in the future. So that's definitely one important aspect of it. What I am trying to do is, you know, be a thought leader in the space and put a lot of creativity into it and show a vision for how interaction with the web could be. You know, you look around, obviously people say, like, WebVR as an initiative, they think of adding VRHMD support to Chrome or to Firefox. But what we're largely seeing there is, you know, them wrestling with the issues, you know, overcoming, you know, 60 hertz frame rate limitations that are inherent to these browsers that are deep down in the code, which they're overcoming. you know, finally using things like 3.js so you can actually start coding yourself and piping the stuff to the HMD. But, you know, that's sort of the technological underpinnings to make VR experiences possible on the web, but it misses a greater vision that we have as a company on how to bring that into like a singular universe or a consistent experience. I mean, if you fast forward and you take these things a little bit further, you have JanusVR where you can kind of go anywhere from anywhere all the time with the HMD on, no need to take it on and off, where And what WebVR shows promise is I'm using the old 2D rectangle clicking paradigm. I click to the website. Oh, this has an enhanced VR content. I press this button, and now I can put on my HMD. I have that sort of singular contained experience. It's kind of bounded by the site that I'm on. I can't just take my friend with me and hop there to go anywhere. And then I take the HMD off. I click some more, and then I rinse and repeat. I'm onto the next page. So one of the things I want to do with the project is show the world a vision of how the web and interaction could be. rather than the way that it looks like it's kind of going with some of the larger, more dominant players in the space. And are you using, like, WebVR technologies? Like, say, could you create something that would work cross-compatible between, like, say, a web browser and JanusVR? So, not currently, but I would love to. Sort of one of the main motivations of this is that we want to bring the entirety of all web content together and build upon that to create these immersive VR environments. And that includes, you know, WebGL and other experiences like stuff like that too. So we have been seeing with other VR software out there is they're linking to something like Chromium Embedded and they're bringing that library in and they're actually doing WebGL rendering, you know, on an off-screen buffer and then they're compositing that in their software to actually provide you, you know, that capability of, you know, some natively rendered space in addition with a sort of WebGL overlaid. We have more work to do. I have work to do in all directions towards that. But if it's on the web and it's consumable, we want to be able to have that in on the platform. It's the idea of just building upon all existing web content. So not yet, but we'd love to. Well, the thing that I find really interesting about the Janus VR is that you've got the social components, but you also have the linking components to be able to connect to these worlds between each other. So maybe talk a bit about each of those in terms of the social and then be able to kind of jump between these virtual worlds. So I actually think that the spatial representation we use for the web is sort of one of the most elegant aspects of the software and isn't something that I've really seen anywhere else. The idea that you start representing a URL as a three-dimensional space and this idea of envisioning the hyperlink, you know, not as a piece of text or something you click on that causes this discrete jump, but this portal that acts like a doorway, and it's an homage to this god, Roman god Janus, of portals and spaces, and the beginnings and ends, transitions. But it's just this idea that you now have kind of a hyperlink that takes you from URL to URL, where there's preservation of context, and there's sort of a seamless transition as you go between the spaces, which is, in terms of VR as a platform, and having these fully realized spaces, huge, huge pluses. So when you say the seamless transition, does that mean that when you open the door of the portal that you kind of can see through the door a little glimpse of the world already? That's exactly right. You have this preservation of context where you're in the space you are, and you can kind of see through the window, almost like a window of sorts. It's a doorway into the next page, and as you approach it, as your proximity changes, you can see more and more into that space, see more and more what it's about before kind of committing to going inside of it, let's say. Does it preserve the context to the other direction? I mean, typically in a hypertext link, you can link to something, but that doesn't mean that they're going to link back to you. So how do you know once you get to that new page that it's going to preserve that context? So in Janus VR, let's say that the portals are bidirectional in the sense that the portal is actually a surface that simultaneously peers into two spaces at once. So as you pass through it to enter the new space, you can turn around and head right back if you wish. So that this connection of portals defines the topology for how you browse to the web. So you can follow these bidirectional links to hop through URLs you've been to. Just to say that it defines the topology of the history of sites you browse, this connection of portals that combine these URLs together in this way. Think of it as a graph, simply, with bidirectional edges is all. Yeah, I guess because on the web I can write a blog post and link to 50 different other pages. But does that mean in Janus that you'd have to get a consensus in order to create a portal between the two of them? Do they both have to do something on their site? I guess I'm just trying to figure out how you're linking between them in that way. So, with Janice, there's what we've explored and how it has worked and how it works now. If you take like a conventional 2D website, it actually appears, you know, in a templated room as actually a two-dimensional surface that you can interact with. And when you click those links in there, you can do the de facto standard 2D interaction where it just hops from page to page. However, we have like a middle click or control click where you can actually generate a portal. So there's this duality or this play between dimensionality of how you want to interact that you can go from 3D to 2D and 2D to 3D and vice versa. And one of the things we're doing as a company is we're really exploring all the all the powerful things that you can do with that, not just in terms of navigation, being able to hop from 2D to 3D, but also on the creation side, starting to think as like these 2D browsers, not just as these flat rectangles you interact with, but as these surfaces or windows from which you can, you know, extract and pull any existing content and bring it into the 3D world. So it's actually bootstraps the process by which people can start constructing these pages, you know, you can start pulling Google image search, you know, you can just start pulling images off and like tiling and making your room this way. If you have links to three-dimensional content like Google SketchUp models or something like that, you can start bringing those in. You can picture just the huge potential for how all this existing content that's on the web but that is, you know, three-dimensional is very rich in this way. It would be enhanced by VR to have it, you know, fully realized in some space like checking out Google SketchUp libraries, putting on a VR headset and then seeing all that before you and having this really amazing way to kind of interact and browse all those models rather than just, you know, the Standard, you know here. They are in a 2d grid and you can scroll up and down which is the standard we have now Yeah, and I saw a while ago that there was kind of like a experimental feature of ghosting where you could walk around a Janus environment but then record your position of where you were and what you were looking at so that you kind of create a asynchronous, even if people are looking at it asynchronously across a wide swath of time, you're kind of consolidating in some ways the paths that individual people took so that you get a sense of people being there even if they're not there. So maybe you could talk a bit about that ghosting feature and what you've discovered with that. Yeah, so the idea of what we call ghosts are, it's sort of like a phantom presence there, but not really there, but it was someone who was once there. So that's hence the name ghost. But yeah, it's very cool. We have this ability that you can actually like record what I would almost call like a performance in the space. And as you know, the HMDs, as we add more trackers and sensors and get more of the man into the machine, so to speak, you'll actually will get even more of this performance art in some sense. into these experiences. So, you know, if you have something, sensors all over you, like a mocap system, this would be an amazing sort of performance to set up in your room that's been done, you know, just natively within the Janus client. You just, you know, press record, and it records you. Even going beyond that, I'm actually re-architecting how that works so it'll actually be simulated by network packets instead of the sort of proprietary, like, file format that it is now. And then the idea being you could sort of spawn or create a ghost that starts in one page, but then it starts to traverse the web on its own. It's kind of running locally on your client, but you can actually follow it through the web and maybe it'll talk to you and all the voice recording and all of that extra stuff that gets sent over the network will now be encapsulated by this same code that handles the multiplayer component of Janus. Yeah, I mean, it really feels like, you know, this idea of being able to record your experiences in VR, even like interactions and being able to kind of do time travel so that you have this sense of embodied presence that you may actually feel like you're there and then induce what Mel Slater has found to be a time travel illusion. When you go back and look at that, you actually feel like you're there watching yourself, which could be a very surreal experience. So is that something that you see as the use case? Is that like, what problem is that solving for you? With the ghost recordings, in terms of having a really deep use case, it wasn't so much that, it was just thinking of a kind of element that someone would want to bring into a page, something akin to a recording. I mean, at first I thought about it in the context of tutorials, like, let me show you how to jump or move your character, right? And then you'd follow this sort of representation that looked not unlike yourself if you were your default avatar. And it would jump, or maybe it could speak to you and explain the rules or how to use Janus originally. But it could be any kind of automated presence or person that you'd want to have there. And then I could see adding JavaScript code based on the user behavior that had some sort of branching in its logic. And it would actually have custom behavior that was also pre-recorded that was based on the things that you do. So abstract with those potential applications is these guided tours or people that could walk you through these environments was the original thinking behind it. Interesting, yeah. And for you, what have you seen in terms of the social behaviors that have been emerging within Janice? Social behaviors, so it's an interesting thing because what brings people together, the context of a social interaction is often the location, which is URL based. So it's possible the social applications are diverse as the purposes of the web itself, let's say. So whether that be a game room or someone's browsing Google or image search or Maybe it's even adult content of some kind. All these different kinds of contexts for people to socialize can and do occur. So it's an interesting thing. Are there interfaces with the 2D web within Janus? Absolutely. Yeah. So everyone also immediately available to them has their private browser that you can set up. And you can have as many of them as you like. You can have 15 private browsers set up that just you can look at. But you're able to actually pull content out of there on pages where this is enabled, where the environment can be edited. And you can actually start dragging this out and sharing it with other people. So the idea is if you want to check your Twitter feed and listen to something on SoundCloud and do all this stuff while you're doing it, you can. the 2D web that you want with you. We want to solve that problem of VR is great, but now I feel isolated from the web, and I depend so much on the web already. So how do you preserve that, you know, keep that connection there? So absolutely. It's not just the sort of the public or shared or what I call it, you know, this collaborative web surfaces. We also have these private browsers, so you can pay your water bill in private if you want to be sharing with everyone your things like that, right? So, yes. One of the other things that I saw that's happening within the Janus community that I haven't seen anywhere else is that I've started to see some people giving almost like guided tours or summaries of like expeditions and adventures that they've gone on in terms of like going to Mars, for example, with some, you know, taking some of the data from Mars and kind of walking and then going through the portal to another experience. So maybe talk about some of the, what you've seen in terms of people documenting these different kind of adventures that you can have in Janus. Biles of stuff. If you go on YouTube now and you just Google search Janus VR, you see hundreds of videos, tons of content, people documenting all these different things they're doing. Those videos you see often are done by the power users. The people who are enthusiastic enough about it, not just to use it just to browse the web, but they really want to start creating and building the environments themselves. I think that's one of the greatest appeals of Janus is that it is a truly open platform and that we're not restricting any kind of content that you want to Create, you can just put your geometric files up on the web anywhere. You can even link to other people's stuff. Just bring in those URLs, put it together into a space, and it's just a URL you can distribute. Anyone can go there. It's very open in this way. So empowering users in this way makes people really want to share and show off what they're building, like these Mars experiences. And they can brag about, this is the scale. This is what it would look like if you were really standing on Mars. So I could like shout out to guys, probably this is a guy, user FireFoxG on Reddit who's done that, but then there's guys like Dizkit. GunPig did something with an A10 Thunderbolt. It was like actually like a military model, I guess he was like just consulting for military and simulation. It is interesting to see all these applications and one of my pleasures is just, you know, hopping into Janus and seeing what's new, you know, and then like someone's doing some other weird application or tangentially Janus is helping them in their business, whether they're doing consulting, you know, these live immersive events and, you know, just, All the roles, all the things that Janice can do, it's very fulfilling. Is there kind of like, you know, when you go to a city, there may be kind of like the bar that all the cool people go to or, you know, the hot hipster coffee shop or something like that. Are there places within Janice that are kind of established as like the central hub for the main action that's happening within that community? I can plug places like user NXT Aussie's The VR Bar is one such place. We've also got like video game worlds that have been created. This user goes by Dizkid, he made like a Gameboy inspired world called Usagi.net and that's awesome. We actually had Pendleton Ward from Adventure Time come in there and check it out. He was hanging out for a while, if you know. this guy, and he loved it, he like tweeted about it, like the specific sub-world in Janus that someone had created, so it was like, and then the guy did his kid, he was like, oh my god, you know, he noticed me, it was really funny, but yeah, so you know, we have in the Janus lobby, if you go to Janus.com right now, It's sort of a default homepage. There's no reason you have to start there, but it's kind of a recommended place because it's kind of divided into intro, make, play, and then sort of what you call the premium content, or people that have really spent a lot of time building these cool Janus VR sub-universes, I'd say. So those social hubs are definitely there, yeah. Yeah, and I spent about eight years within the Drupal community, and one of the companies I used to work at, Lullabot, there's a guy named... So I know Circuitry and Jared Bittner, who's really excited about doing Janus. And it seems like Janus, to me, from what I've seen, is that you're really tapping into the web developer market, people who are front-end web developers. And they can take their skills in HTML, JavaScript, and just very quickly, rapidly prototype these virtual worlds. Absolutely. I think in terms of what we're doing and what separates us from other companies out there is exactly that, that sort of strategy, how to get people really interested in wanting to use your platform. So, on that note, you know, whether technologies like something like Unity requires you to have, you know, some game engine or programming experience there. You also have, you know, what they're doing with WebVR and 3.js, but, you know, not everyone is, you know, a coder at that level of skill required for that. So, I think it hits the sweet spot where, you know, the Internet is, you know, this dominant platform, culturally transformative, we all use it. A lot of people have their heads wrapped around HTML and these other technologies. So, you know, using that as sort of a starting point from which to launch, you know, people's, you know, creative abilities and work within those languages that are more ubiquitous and more comfortable for, you know, a front-end developer, I think is an asset. But equally so, you know, we do want to, you know, cater to people who, you know, want to write their own GLSL shader code and get really low level and do some incredible things. You know, the languages we integrate with and the extent of those integrations are all work in progress. And as we build the company, as we grow, we're going to be definitely doing a lot more there to satisfy everyone on that spectrum. But right now, I'd say, yeah, the target has been so far front-end developers, let's say. What's been some of your favorite experiences in Janus VR? It varies over time. It's kind of like what's the latest and greatest on my mind. I was really impressed recently when someone actually had created basically a room with the rules of Minecraft inside. So you walk in, you know, you can choose the different blocks. You have this inventory of blocks and you can start clicking and placing blocks. And then even more impressive was like someone else came in and they'd made it so that the networking code was all nice and that when you made blocks or they made blocks, you saw it together. And now we're just like in there building these houses. And it was all kind of for free because the Janus platform already supported this. It just took someone adding some JavaScript code to a certain page to enable this interaction. So that was awesome. That was sort of one of the latest things that I thought was great. But you see all kinds of things like first-person shooters, interactive chess games. I'm big on the games. There's like a retro-inspired Frogger that I show a lot of people. But there's equally art galleries, this thing with the Thunderbolt was amazing because it's so high detailed, the model, it's like you're inside the cockpit of this thing. It's probably the closest I'll ever come to being in the cockpit of an A-10 Thunderbolt. But yeah, just amazing experiences, new stuff coming out all the time, no shortage of people producing these new experiences. To me I feel like the winner in this game of whatever is going to be the kind of dominant platform within the metaverse is going to be the tool that's able to enable creativity and building as it's like lowering the friction to your ideas and to VR and it sounds like using your front-end development skills you're able to very quickly create these because that may be something that they already are doing in their profession. But have you been thinking about creating VR from within VR and creating the tools to do world building within a virtual reality context? Absolutely. So on the note of what we've done already, we have ways to code. You can code right from within JanusVR. You can go into your menu. You can bring up what's essentially just a 2D text code editor. And you can live edit and change the code of the objects. Or if you want to be a little more direct, you can start right clicking on them and tabbing through the properties and changing it that way. And then getting even cooler than that is the idea, again, of this web browser as a toolbox where you're dragging and dropping content out of the 2D page into 3D immediately before you, which requires no coding expertise. And it's just immediate, and it's just awesome. Again, one of these interactions I've not seen before that is super powerful. So that's kind of stuff that's already existing. But going forward, you know, it's not, I'm not like competing. I want to have a horizontal sort of approach where we want to bring in any and all technology, any modeling programs people are using. We're right now looking into creating a plug-in for Unity that actually will allow people who already have Unity projects to export to Janus Markup. So it'll actually just create a directory with all the files you need. You can just put those on HTTP server. So if you have the Unity experience, again, you can use this. Yeah, so we already have integrations with things like Google SketchUp, things like Maya you can export from. So it's just supporting all the different formats, but yeah. Go ahead. What I was going to say is just that, you know, at this point, HTML markup is kind of like a standard that anybody that makes that, then all the browsers use it. And so I guess it's more of a matter of at some point when there is some sort of standard across, like, whether or not it's High Fidelity and Janus VR, you know, you guys are both taking a similar approach in terms of, like, having people host this on a server. But yet, they may have a different approach with the different JavaScript that they use or a different standard that they're using in order to create an immersive 3D world. It's more of like, at some point, what is going to be the standard and are things going to consolidate? There's a lot of innovation that's happening now, but at what point does it start to come back together? And if you go down this path, is it going to be a dead end and you have to basically jump your technology stack and kind of convert everything over? If you know what I mean. I would love to see a standard. Will Janus Markup Language be the dominant language? I'm not sure. But what I want to do is provide some leadership in the sense of vision that whatever we do converge upon as a standard isn't inherently limited and will maybe have some of the capabilities that I'm showing the world right now. So, you know, even if Janus Markup Language isn't the final standard, if I've kind of made my mark and I've got in people's, you know, hearts and minds that there's this more awesome way to represent the web and interact with the web, and people are more open to that, then it'll have been a success anyways, even if it's not the final language. but just having that leadership to convey an idea. And, you know, the language is the machinery by which you represent these ideas. They have to be written. They have to be done in this way before they're presented. So we must have a language in order to speak. Yeah, so I would love to see convergence, though, to an eventual standard. But right now, with this emerging medium that VR is, I think it's equally important that we be very creative and we Just to accept long existing paradigms for how we should interact with the web and how things we should be. I think they're doing so much innovation on the hardware side that we should be doing equal amounts of innovation on the software side. And finally, what do you see as the ultimate potential of virtual reality and what it might be able to enable? So, you know, Palmer Luckey's probably the guy to give the greatest answer. We know if it's like, what's that epic great answer? And that's just, yeah, once you have the ability to have this system to provide any kind of experience imaginable that, you know, potentially is indistinguishable with reality. I mean, what is a more powerful technology than that? You know, it gets really philosophical. So I know that the promise of that is extremely amazing and it's partly why I'm so hugely interested in the space and I want to continue to work with VR going forward because I realize that potential that it holds. These are still early days, but the future is awesome. Is there anything else that's left unsaid that you'd like to say? One, well I'm not sure when you'll actually put this on, but if there are any, one, any investors out there who are like-minded and believe in this vision of the immersive web, please come talk to me, James McRae. And then number two, if you are an aspiring, you know, VR startup, you want to get going with your VR business, I highly encourage you to check out BoostVC, Tribe7, apply there. It's been one of the best decisions I've actually made in my life, so definitely apply there. Thanks. Awesome, well thank you. Thanks. And thank you for listening. If you'd like to support the Voices of VR podcast, then please consider becoming a patron at patreon.com slash voices of VR.