---
# System prepended metadata

title: Why?

---

<h1 align="center"> O S X R  <br>  <small>Open Source XR</small></h1>

Enabling XR Websites on DIY Standalone VR Headsets.

![OSXR Overview](https://i.imgur.com/XKnwLGV.png)

(Icon Sources: VR Headset - <a href="https://www.freepik.com" title="Freepik">Freepik</a>; WebXR - <a href="https://immersive-web.github.io/" title="immersive-web.github.io">immersive-web.github.io</a>)

**Example:**

![OSXR Example](https://i.imgur.com/6iRrQYr.png)

(Visible Webpage: https://immersive-web.github.io/webxr-samples/immersive-vr-session.html)


# Why?

The dominance of certain companies in the standalone VR sector calls for Open Source solutions to enable community-driven projects. This concept is a new approach towards supporting open-source standalone headsets.

# How?

*Standing on the shoulders of giants*: Using existing Free Open Source Software to bring existing WebXR experiences to existing hardware.

## Architecture

```graphviz
digraph Website {
    node [fontname=Arial]
    node [color="#aaaaaa"];
    rankdir="LR"
    bgcolor=transparent

    subgraph cluster_hardware {
        color="#dddddd";
        node [color="#aaaaaa"];
        label = "Hardware";
        fontname="Arial";
        Sensors
    }
    
    subgraph cluster_electron {
        color="#dddddd";
        node [color="#aaaaaa"];
        label = "Electron";
        fontname="Arial";
        "NodeJS App"
        "WebXR Browser Extension"
        
        "NodeJS App" -> "WebXR Browser Extension" [constraint=false]
        
    }
    
    
    Sensors -> "NodeJS App"
    
    "WebXR Browser Extension" -> "WebXR Website"
    
    

}
```

**Electron**: A framework for building web applications that run like native applications but in a browser context. Electron supports communicating with the underlying hardware.

* NodeJS App ~ communicates with the hardware
* WebXR Browser Extension ~ provides the WebXR API for the website based on the [WebXR Polyfill](https://github.com/immersive-web/webxr-polyfill))

**WebXR Website**: The WebXR API is the new standard for writing VR & AR experiences on the web. There are already many applications available that are all supported by this project through the WebXR API standard.

****

**Subprojects**

1. **OSXR Devices** - DIY hardware projects that are built for OSXR can be found under https://github.com/signinit/osxr-devices
2. **OSXR Desktop** - the default application that is included with this project can be found under *TBD*

# Status

Proof of concept: **DONE**
*Present a WebXR Website on DIY hardware (raspberry pi). Achieve a VR experience (3d-/stereoscopic-vision).*

Alpha Version: **In Progress**
*Build an OSXR Device solely by following the provided instructions. When starting the device, present an OSXR Desktop that can interact with the underlying hardware.*

# Contribution

This project needs enthusiasts from almost every field: Developers, Engineers, Designers, and everyone else that likes the idea of building their own VR Headset from scratch.

We are grateful for every contribution, idea, and opinion you like to share. **A good start** could be to check out the following development section or build a headset from [**OSXR Devices**](https://github.com/signinit/osxr-devices) or check out the current [**OSXR Desktop**]().

# Development

*The electron app provided in this project can be run on Windows, Linux & MacOS.*

Install the project's dependencies using `npm install`.
To start developing, run `npm run start:development`, which will start the electron app locally and restart it after any changes to the source code.


**Building** the application is made with `npm run build`. To get an installable application, use `npm run package`.
