Settings

Theme

Butler Virtual Operating System

tristancacqueray.github.io

311 points by njrc9 3 years ago · 17 comments

Reader

JoelMcCracken 3 years ago

This is great. This is actually fairly similar to something I've been thinking about doing for some time, so I have a few comments to make!

For a previous job I wrote a miniature/lightweight "actor system" with haskell threads and STM. Basically, each actor was represented by a thread, threads operated in a loop (like erlang actors), and threads had mailboxes implemented via STM primitives. It worked like a dream, and I've been wanting to write up a blog post about it for a good while now, but alas, there is always something else that needs to be done.

There is an idea that's been floating around in my head for some time now. I want to expose Unix ideas to the web era. If a "shell" were built to expose a lot of these things via the web (of course, only to authorized users), I could see an explosion in creativity.

This leads into the next thing, enabling people to have their own, independent servers. This is a massive topic, but basically, I'd like to see more ideas like sandstorm.io or cloudron.io take off.

I may be looking at this project as a place to start for my own code, and/or inspiration! Thanks.

  • n0w 3 years ago

    As someone interested in pursuing similar ideas I would recommend taking a look at Object Capabilities and the E Language if you haven't already.

    I believe Sandstorm.io (and Cap'n Proto) at least adopts some of the ideas.

    • JoelMcCracken 3 years ago

      Ah right, I remember this to an extent. That's cool, i think that's an interesting direction for research, but to be honest I probably wouldn't start with solving those problems. There's enough difficulty in simply modeling the unix world for the web.

      I suspect one of the things Sanndstorm did that probably caused it issues was was biting off too much, for example implementing its own linux containers system (I don't know what the details were, I just know that at the time, I was thinking "if it were me, I would just use docker.")

  • nicolast 3 years ago
    • JoelMcCracken 3 years ago

      Thank you, I am! I saw this linked in the original post.

      I actually had started working on modernizing the cloud haskell code, but just realized it was far more work than I had time to put towards it at that time. I'm trying to get some things complete so I can focus on some other things instead, such as contributing towards this =)

      Assuming you are the same NicholasT, if you want I can share some of the code snippets that I used to implement what i'm talking about. I just know that I can't commit any significant time toward this right now though.

samsquire 3 years ago

This is really interesting. I especially like the use of actors.

If you think of the Win32 API message loop then you can kind of think of each program and GUI as a mesh of independent actors with inboxes that communicate user GUI events to backend server actor that does CPU work or network work in the background.

I think this is an easy to understand architecture. If you think of it as MVC but what would be a method call in MVC is actually a cross thread event queue between server threads and client GUI threads.

Where GUIs get complicated and hard for me to read the code for is all the state management and complexity of components of the GUI itself. I wouldn't want to be tasked with implementing Qt or GTK.

The actor idea reminds me of programmatic "agents" or bots that work on your behalf on a schedule or in response to events (messages) such as Huginn.

The idea of plugging GUI components together so they interoperate is really interesting. COM and XPCOM is an example of this in practice for communication between applications (and the GUI) The DOM is an example of it too! You can insert arbitrary blocks in Notion or Obsidian or COM objects in Word documents.

https://github.com/huginn/huginn

I like the process viewer on the right hand side. Would be nice to be capable of visualisation what the applications are doing.

  • toast0 3 years ago

    If you're in this frame of mind, X11 protocol is actually a distributed systems communication protocol that happens to output graphics as a side effect; it's not fully meshed like Erlang dist though.

mxuribe 3 years ago

Here again, references and uses of htmx...Man, i really gotta dive into htmx some more...I keep seeing it pop up in so many places (well, at least many places that are showcased on HN, anyway)

garganzol 3 years ago

Choosing HTML for UI subsystem of an operating environment is refreshing. Is there a demo URL?

yencabulator 3 years ago

Looks like any app can output arbitrary HTML, and thus pwn the whole system, right?

DustinBrett 3 years ago

This sounds quite cool. Is there any working demos online to try it out?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection