A friend insisted i should write this down as a white paper and put it up on archive.org, so the idea couldn't be patented. You will realize this by yourself, but i will tell you up front: i'm not an expert, i have never written a paper and so i'd rather keep this in a format more akin to a blog. I like to drive too fast in gran tourismo and lose control over my maxed out sillymobile. Keep this in mind it will be part of the test.

VR

hardware technology is making big leaps while the software side is slowly catching up in speed. Some operating system projects VR-OS, BaSc Thesis on VR UI tests?? exist that utilize/explore VR to some extent. i propose another.

some preface neccessary

It is my opinion that a sole user of a computer system should be its master. They should be able to do whatever they wanted to it, if they wanted to. Like if you bought a low-end lathe from alibaba. A relatively simple mechanized tool to turn a rod of metal into really amazing things. This text is supposed to be about computer systems, programming languages and such. But i really want a lathe in my computer. Some people want a computer in a lathe, but i want to strap my code (Hi, i'm paul, i write code for a tool maker.) into a lathe and work it until it does what i want.

Roughly

a year ago (I keep pointing this out to make clear that i dont know what i'm doing lisp-wise (but i do love lisp). Also i'm a dumbass that wants to fuck around and find out This is just a hobby for me that i want to share with all of you so cut me some slack plskthxbye)....

Roughly

a year ago, thanks to Peter Seibels PCL, i grokked lisp. That means i began grasping how it works and how i could make it work for me. The possibilities are truly (phew.jpg). Shortly before that i got into experimenting in unity again, i then found arcadia and while stretching my legs in the arcadia-clojure-(a lisp (some might argue it's not))-repl (a tool to exploratively setup a software runtime environment). At about the same time i saw a youtube presentation of OpenGenera, this person reached into the guts of his machine, fixed a bug in his jpg library, recompiled it and closed her up using only system tools, allthewhile everything else was running. Sure i could do that, but global? with that litheness? without a reboot? what system tools? do i need a m$ account for that? (swt.gif) The system is like a tree and this dude is a cat jumping from branch to branch. It's beautiful. i implore you, go and watch that video now. i promise i will wait.

The thing is

i need you to know what i'm talking about. This OpenGenera he's using is listing a copyright of 1980-1998. i was scrubbing ninetyfive windows on a desktop pc back then. i was scrambling for EMS or XMS to play some game under DOS. i didn't even have any decent games until the millenial edition came around and my machine was finally blue screening all the time.

So here is Mr. Reti, owning, inspecting this system.

This could have been personal computing in the nineties.

Q: It's 2020, why isn't personal computing like this by now?

A: Because nobody with money cares about what a user might want to do. They care much more about how to make a profitable system that works for most people. Of course there is no shame in that.

But i don't care about profitable (of course it wouldn't hurt if there was a way to make money).

I don't care about most people. (sorry)

I want a system that is:

  • usable out of the box
  • highly versatile

Those are rather empty criteria of course. And every person reading this will have differing opinions as to what makes a software usable or versatile. Also, it might appear that I'm saying other software systems are neither. That is not the case, but I am looking for a certain kind of usable and versatile. I want it usable in the sense that you get a system that, just like OpenGenera, allows you to dig in deep into the system core without relying on third party applications with online documentation (oh fuck.. I have to write all that, don't I?). Anything neccessary to efficiently develop subsystems has to be included. I want versatility in the sense that it doesn't matter what type of software I want to write: all the neccessary tools are either already present, or it's possible to remix/reuse already present subsystems to get the job done.

I would compare modern commercial mainstream Operating Systems with playmobil, while non-commercial systems feel more like LEGO Technik, when what I really want for christmas is a lump of FIMO (clay would also work in this analogy, if you didn't need a kiln).

For a first proof of concept and also as a foundation block to my future ventures in this direction i am working on the VR AST editor VRkbnch, implemented as a Godot Engine project, relying heavily on ArcadiaGodot.

  • Stage one is using keyboard, mouse and a desktop monitor only and should be able to edit an ordered list of separate abstract syntax trees, perhaps rooted in a long "balcony flowering pot", representing an open file:

    • The editing environment offers an inventory-like clipboard feature which you can scroll through.
    • You can, using the mouse and keyboard:
    • cut
    • paste
    • un/parenthesize
    • change the parens type of an AST
    • run sub-ast + receive result in inventory
    • This should be plenty to be able to work as if inside a live repl.
  • Stage two: implementing enough boilerplate to lift this into VR proper.

  • Stage three: build more tools (filing cabinet, content/desktop viewer) to facilitate content creation inside the environment I call VRshell.

  • Stage four: check out if it is possible to use GNUnet inside this environment to setup decentralized communications.

  • Stage five: actually build cool interactives and share them.

  • Stage six: ???

  • Stage seven: implement 9P, port janet to 9front and setup standalone node? well, interconnection, decentralization, interop are the themes.

  • Stage eight: ???

  • Stage nine: write infrastructure for end-to-end secure, decentralized, personal (secret), private (friends and family) and communal (public) VR spaces co-hosted on users' machines.

Thoughts, Features to be desired, Problems to be expected, Ideas:

  • authentication: client certs?
  • secure communications: GNUnet?
  • remote-interop: 9P?
  • delegation of trust in code: peer-signing?
  • idea for conveying code signage state by carving a user unique symbol/pattern into objects
  • untrusted code: well.. the up side is, most likely nobody cares much at first if ever, so i can just defer this until later(tm). On the other hand, there is another project i like: 9front
  • speaking of which, why not make it a liveiso kinda deal of 9front eventually hosting vrkbnch?
  • tutorial could be a game that introduces not just the system but the language too
  • use gestures to apply code transformations to selected subtrees of the spatialy visualized asts, like slurp, barf etc.

While the free software movement was a great idea, I think the problem is that software, like capital, exist not in a vacuum but is handled, created and used by people. So, making people follow yer ol rules, is great and all, but what do you do when they then use your free software to exploit money from a rigged manipulative economic system?

I am opening this repository as an effort to document my journey towards a VR system shell running on the godot engine, mono and clojure. I want you to feel invited to check this out and join me, but until i found a good software license to be able to exclude capitalists from exploiting the fruits of my labour while sharing them with every other person, this repository will remain under no license, therefore under exclusive copyright of me and whoever i choose to let aboard.

Please do not use this software. If you do anyway, remember that there is only one parachute, I packed it and you shouldn't trust people on the internet. In case you survive the crash: feel free to silently berate me for writing such shit software.