xrhf/index.html

368 lines
16 KiB
HTML
Raw Normal View History

2026-02-05 17:47:13 +01:00
<!doctype html>
<html lang="en" _data-theme="light">
<head>
<meta charset="utf-8">
<title>XR Hypermedia Federation 🥽</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<meta name="description" content="XR Hypermedia Federation 🥽" />
<meta name="publisher" content="XR Hypermedia Federation" />
<meta name="author" content="Leon van Kammen - XR Hypermedia Federation"/>
<link rel="stylesheet" href="asset/css/pico.min.css"/>
<link rel="stylesheet" type="text/css" href="asset/css/style.css" />
</head>
<body>
<header class="container">
<div id="logo"></div>
<div id="hint"></div>
<hgroup style="margin-top:12px">
<h1 style="opacity:0">The XR Federation</h1>
</hgroup>
</header>
<!-- ./ Header -->
<!-- Main -->
<main class="container">
<h2>Digital commons for XR hypermedia 🥽</h2>
2026-02-05 17:47:13 +01:00
<div class="telescopic">
We connect, and <b>help fund</b> open XR ecosystems 🥦<br>
2026-02-06 12:22:31 +01:00
We support <b>public local-first</b> AR/VR/MR
2026-02-05 17:47:13 +01:00
<u tabindex="0">highways
<span>, seamlessly connected XR experiences: public <b>XR hypermedia</b>.
<div id="xrecosystem"></div>
</span>
</u>
without
<u tabindex="0">obstacles 🈚
<span>like appstores, rent-seeking, blockchain-minting etc</span>
</u>
<br>
We encourage <b>spatialisation</b> of existing
<u tabindex="0">ecosystems
<span>like the 2D web, or file-collections</span>
</u> using open
<u tabindex="0">protocols 🔌
<span>: <a href="https://en.wikipedia.org/wiki/RSS" target="_blank">RSS</a>, HTML, <a href="https://janusxr.org/docs/build/introtojml/index.html" target="_blank">JML</a>, Fediverse's <a href="https://activitypub.rocks/" target="_blank">ActivityPub</a> and <a href="https://xrfragment.org">URI's using XR Fragments</a> e.g.</span>
</u>
<br>
<div class="banner">
<div id="banner"></div>
</div>
Our
<u tabindex="0">mission
<span>
<blockquote>
<cite>
to promote the exchange of <b>electronic spatial experiences</b> and all that is related or beneficial to that purpose
</cite>
</blockquote>
</span>
</u>
100% piggybacks <a href="https://nlnet.nl/foundation" target="_blank">NLnet</a> and
<u tabindex="0">European
<span>values: European Digital Rights and Principles to promote feelgood XR experiences for everybody.<br>
<div id="euvalues"></div>
</span>
</u>
, American <a href="https://www.state.gov/wp-content/uploads/2022/04/Declaration-for-the-Future-for-the-Internet.pdf" target="_blank">DFI</a>-values, narrowed down to <b>OpenSource hyperlinked</b> XR experiences.<br>
2026-02-05 17:47:13 +01:00
</div>
<br>
<blockquote>
<div id="lvk"></div>
<cite>
2026-02-06 12:22:31 +01:00
"XR hypermedia enables cost-efficient spatial education and innovation by hyperlinking XR experiences."
2026-02-05 17:47:13 +01:00
</cite>
2026-02-05 17:47:13 +01:00
<br><b>Leon van Kammen</b> / Founder, Strategy Director / <a href="https://mastodon.online/@lvk" target="_blank">@lvk@mastodon.online</a>
</blockquote>
<center>
<button onclick="alert('Hi there!\nPlease send a mail to\n\nleonvankammen+xrhf @ isvery.ninja\n\nthanks!')" style="padding:30px;margin:20px">Contact us</button>
2026-02-05 17:47:13 +01:00
<br/>
<br/>
</center>
<div class="spectrum">
<div></div>
<div></div>
</div>
2026-02-05 17:47:13 +01:00
<div id="cards">
<h3 id="projects">Projects:&nbsp;&nbsp;</h3>
<input type="radio" id="protocol" name="color" />
<label for="protocol"><kbd>#protocol</kbd></label>
<input type="radio" id="openlearning" name="color"/>
<label for="openlearning"><kbd>#openlearning</kbd></label>
<input type="radio" id="browser" name="color"/>
<label for="browser"><kbd>#browser</kbd></label>
<input type="radio" id="xrdiscovery" name="color"/>
<label for="xrdiscovery"><kbd>#xrdiscovery</kbd></label>
<input type="radio" id="webtranslator" name="color"/>
<label for="webtranslator"><kbd>#webtranslator</kbd></label>
<input type="radio" id="reset" name="color"/>
<label for="reset"><kbd>#all</kbd></label>
<br/>
<br/>
<div class="tile xrdiscovery">
<div id="xrforge" class="thumb"></div>
<a class="description" href="https://xrforge.isvery.ninja" target="_blank">
<b>XR Forge</b> is a selfhostable platform for JanusWeb/File-based XR Experiences.
#cost-efficient #collaboration #Universities #E-learning
</a>
</div>
<div class="tile protocol">
<div id="xrfragment" class="thumb"></div>
<a class="description" href="https://xrfragment.org" target="_blank">
XR (URI) Fragments is a browser-protocol for
spatial anchors in URLs (to 3D files).<br>
In <b>gamer language</b>: spawnpoints via URLs.
</a>
</div>
<div class="tile browser">
<div id="januswebbrowser" class="thumb"></div>
<a class="description" href="https://coderofsalvation.github.io/janus-guide/" target="_blank">
<b>JanusWeb</b> is the XR browser for the browser.<br>
Its JML allows for an XR web <b>within existing</b> files/web</b>.<br>
It also supports browsing 3D files via XR (URI) Fragments.
</a>
</div>
<div class="tile openlearning">
<div id="biggu_s_gate" class="thumb"></div>
<a class="description" href="https://git.benetou.fr/utopiah/biggu_s_gate" target="_blank">
<b>Biggu's Gate</b> is self-hostable web-software to remix simple pedagogical XR games. Learners themselves can then, together with parents and teachers.
</a>
</div>
<div class="tile webtranslator">
<div id="translators" class="thumb"></div>
<div id="janusweb" class="thumb hue-1"></div>
<a class="description" href="https://coderofsalvation.github.io/janus-guide/" target="_blank">
<b>JanusWeb's</b> translators spatialize the web, embedding webstandards like (RSS/HTML) and popular fediverse platforms (peertube/mastodon e.g.).<br>
</a>
</div>
<div class="tile xrdiscovery">
<div id="searxr" class="thumb"></div>
<a class="description" href="https://searxr.me" target="_blank">
<b>SearXR</b> is a SearX-based meta-searchengine for <b>WebXR</b> experiences.
</a>
</div>
<div class="tile webtranslator">
<div id="xrshthumb" class="thumb"></div>
2026-02-05 17:47:13 +01:00
<a class="description" href="https://xrsh.isvery.ninja" target="_blank">
<b>XRSH</b> is a Linux Shell for <b>WebXR</b>, which makes the Linux ecosystem of cli-tools available in <b>WebXR</b>.
</a>
</div>
2026-02-06 12:22:31 +01:00
<div class="tile browser">
<div id="aframeverse" class="thumb"></div>
<a class="description" href="https://xrsh.isvery.ninja" target="_blank">
<div class="desc"><a href="https://github.com/coderofsalvation/aframe-verse" target="_blank">AFRAME-verse</a> is XR Hypermedia network-experiment which traverses crossdomain AFRAME XR experiences seamlessly. The learnings became the fundament for the XR (URI) Fragments.<br>
</div>
</a>
</div>
2026-02-05 17:47:13 +01:00
<div class="clear"></div>
</div>
<br>
<div class="spectrum">
<div></div>
<div></div>
</div>
2026-02-05 17:47:13 +01:00
<!-- The Timeline -->
<center>
<h3>Timeline</h3>
</center>
<ul class="timeline" id="timeline">
<!-- Item 1 -->
<li id="janusxr">
<div class="direction-r">
<div class="flag-wrapper">
<span class="flag">JanusXR / JML syntax</span>
2026-02-05 17:47:13 +01:00
<span class="time-wrapper"><span class="time">2013</span></span>
</div>
<div class="desc">URL-linked virtual worlds (JanusVR) by James McCrae (incl. URL portalsystem). Rebrands in 2020 to (opensource) <b>JanusXR</b> with focus on <a href="https://github.com/jbaicoianu/janusweb" target="_blank">janusweb</a>. First <b>convincing</b> VR-headset-compatible <b>user-operated</b> spatial web, used by more than thousands of users.
2026-02-05 17:47:13 +01:00
<br><br>
2026-02-05 17:47:13 +01:00
<div id="janus1"></div>
</div>
</div>
</li>
<li id="searxr">
<div class="direction-l">
<div class="flag-wrapper">
<span class="flag">SearXR Funded</span>
<span class="time-wrapper"><span class="time">2020</span></span>
</div>
<div class="desc">
NLnet #NGI #EU funds <a href="https://searxr.me" target="_blank">SearXR</a> an opensource selfhostable meta-searchengine for <b>public</b> URL-based virtual worlds.<br>
<div id="searxr" style="width:250px; height:250px;display:inline-block;border-radius:7px"></div>
</div>
</div>
</li>
2026-02-05 17:47:13 +01:00
<!-- Item 3 -->
<li>
<div class="direction-r">
2026-02-05 17:47:13 +01:00
<div class="flag-wrapper">
<span class="flag">Facebook rebrand</span>
<span class="time-wrapper"><span class="time">2021</span></span>
</div>
<div class="desc">8 years after <b>JanusXR</b>, Facebook attempts similar 'metaverse', but proprietary and centralized</b> (rebrands to 'Meta')</div>
2026-02-05 17:47:13 +01:00
</div>
</li>
<li>
<div class="direction-r">
2026-02-05 17:47:13 +01:00
<div class="flag-wrapper">
<span class="flag">XR Fragments Funded</span>
<span class="time-wrapper"><span class="time">2021</span></span>
</div>
<div class="desc">NLnet #NGI #EU funds <a href="https://xrfragment.org" target="_blank">XR URI Fragments</a> by Leon van Kammen. Standardisation of spatial anchors in <b>URI's</b>. It got adopted by startups like Alkebulan, and was coincedentally (already) implemented by <a href="https://github.com/jbaicoianu/janusweb" target="_blank">janusweb</a> (independent simultanious innovation 💡).
2026-02-05 17:47:13 +01:00
<br>
<div id="xrflogo" style="display:inline-block;"></div>
</div>
</div>
</li>
<li>
<div class="direction-l">
<div class="flag-wrapper">
<span class="flag">XRSH funded</span>
<span class="time-wrapper"><span class="time">2021</span></span>
</div>
<div class="desc">First ever in-WebXR Terminal running an actual Linux ISO. This researchproject basically brings the opensource linux ecosystem to otherwise closed proprietary headsets. Aerospace engineers have reported to be using it.</div>
<br>
<div id="xrsh" style="display:inline-block;"></div>
</div>
</div>
</li>
<li>
<div class="direction-r">
<div class="flag-wrapper">
<span class="flag">HAN University collab</span>
<span class="time-wrapper"><span class="time">2024</span></span>
</div>
<div class="desc">
<a href="https://han.nl">HAN University</a> uses <a href="https://xrfragment.org" target="_blank">XR (URL) Fragments</a> while researching VR accessibility. One of the results of this collaboration is the addition of <a href="https://xrfragment.org/doc/RFC_XR_Fragments.html#two-button-navigation" target="_blank">2-button navigation</a> to the XR Fragments spec.
<br>
<div id="hanlogo" style="display:inline-block;"></div>
</div>
</div>
</li>
<li>
<div class="direction-l">
<div class="flag-wrapper">
<span class="flag">XRForge funding</span>
<span class="time-wrapper"><span class="time">2025</span></span>
</div>
<div class="desc">
<a href="https://xrforge.isvery.nl">XRForge</a> was created to ....
<br>
<div id="xrforge" style="display:inline-block;width:250px;height:200px;border-radius:7px"></div>
</div>
</div>
</li>
2026-02-05 17:47:13 +01:00
</ul>
<h3>Funding FAQ</h3>
<b>Q: Are we talking VC-money?</b><br>
<b>A:</b> Think microgrants / no-cure-no-pay funding of digital commons, think <a href="https://en.wikipedia.org/wiki/Cosmopolitan_localism" target="_blank">cosmolocalism</a>.
<hr/>
2026-02-06 12:22:31 +01:00
<b>Q: Is it easy to get (my game) funded (made with Unity/Unreal)?</b><br>
<b>A:</b> Indirectly funding/promoting proprietary engines with public money is tough (public money public code).<br>
<hr/>
<b>Q: Which Open XR engines are preferred?</b><br>
2026-02-06 12:22:31 +01:00
<b>A:</b> Preferred are Fully Opensource XR <b>Browser</b>engines like:
<ul>
<li><a href="https://github.com/jbaicoianu/janusweb" target="_blank">JanusWeb (WebXR) ♥️</a></li>
2026-02-06 12:22:31 +01:00
</ul>
Or roll your own XR hypermedia browser (via <a href="https:/xrfragment.org" target="_blank">XR Fragments</a> e.g.):
<ul>
<li><a href="https://godot.org" target="_blank">Godot (OpenXR/WebXR)</a></li>
<li><a href="https://lovr.org" target="_blank">loVR (OpenXR)</a></li>
<li><a href="https://threejs.org" target="_blank">THREE.js (WebXR)</a></li>
<li><a href="https://babylonjs.com" target="_blank">Babylon.js (WebXR)</a></li>
<li><a href="https://monado.dev/" target="_blank">Monado (OpenXR)</a></li>
</ul>
2026-02-06 12:22:31 +01:00
♥️ = janusweb has the highestlocal-first XR hyperedia-factor, see <a href="https://coderofsalvation.github.io/janus-guide/#/wiki/translators" target="_blank">translators</a>, <a href="https://coderofsalvation.github.io/janus-guide/#/wiki/polyglot-files" target="_blank">polyglot</a> and <a href="https://coderofsalvation.github.io/janus-guide/#/wiki/addressibility" target="_blank">addressibility</a> and runs on desktop/phone/headset all-at-once.
<blockquote>
Contact us in case you've got questions
</blockquote>
<hr/>
<b>Q: Regarding hyperlinking, is linking to a webpage enough?</b><br>
2026-02-06 12:22:31 +01:00
<b>A:</b> Most games or WebXR-sites are shallow-linked disjointed XR experiences (not hypermedia), basically:
<blockquote>
<cite>
2026-02-06 12:22:31 +01:00
"We don't want customers to leave our premise"
</cite>
</blockquote>
2026-02-06 12:22:31 +01:00
A much more interesting is <b>seamless XR hypermedia</b> surfing: by interlinking 3D files <b>immersively</b> via <a href="https://xrfragment.org" target="_blank">(XR Fragment) URLs</a> or <a href="https://coderofsalvation.github.io/janus-guide/" target="_blank">JanusWeb</a>.<br>See the difference below:<br><br>
<img src="asset/img/xrhypermedia.jpg" style="width:100%;border-radius:7px;max-width:900px;filter: invert(1) hue-rotate(155deg)"/>
<blockquote>
<b>Rule of thumb</b>: if the XR content can be selfhosted <b>by users</b> separately from <b>the XR viewer</b>, you're on the right track.
</blockquote>
<hr/>
<b>Q: Crypto?</b><br>
<b>A:</b> Not really, because of price volatility and regulatory/AML compliance hurdles. Privacy mechanisms like <a href="https://www.taler.net/en/index.html" target="_blank">TALER</a> can be discussed though.
2026-02-05 17:47:13 +01:00
<br>
<center>
<button onclick="alert('Hi there!\nPlease send a mail to\n\nleonvankammen+xrhf @ isvery.ninja\n\nthanks!')" style="padding:30px;margin:20px">Contact us</button>
<br/>
<br/>
</center>
2026-02-05 17:47:13 +01:00
<div class="footer">
<small>Jump to:</small>
<a href="#projects"><kbd>#projects</kbd></a>
<a href="#timeline"><kbd>#timeline</kbd></a>
</div>
</main>
<script>
// telescopic text:
// a JS cheat whicht allows persisting unfolds
// uncomment this if you really want this
([...document.querySelectorAll('u')]).map( (u) => {
u.addEventListener('click', e => e.target.className = 'show' )
});
</script>
</body>
</html>