2 Commits 9d907e5963 ... bb19069dbe

Author SHA1 Message Date
  Christopher Lemmer Webber bb19069dbe Announcing Goblins 5 years ago
  Christopher Lemmer Webber 91b8015469 Link "already know" 5 years ago
2 changed files with 139 additions and 1 deletions
  1. 138 0
      content/announcing-goblins.rst
  2. 1 1
      content/spritely.rst

+ 138 - 0
content/announcing-goblins.rst

@@ -0,0 +1,138 @@
+============================================================
+Announcing Goblins (the actor model foundation of Spritely)
+============================================================
+
+:date: 2018-10-31 14:40
+:author: Christopher Lemmer Webber
+:tags: goblins, actor model, foss, spritely
+
+In my last post I talked about
+`launching the Spritely project <https://dustycloud.org/blog/spritely/>`_
+in all its ambitiousness.
+As I said, I plan on releasing it as a series of "demos".
+What I mean by "demo" is fairly loose: things you can try and see,
+artifacts to indicate progress as I go.
+Convergence slowly towards a goal.
+
+Over the last week I released the first version of the foundation
+of this work, which I'm calling
+`Goblins <https://gitlab.com/spritely/goblins>`_.
+v0.1, a pre-pre-alpha release, is now out the door.
+Goblins is an `actor model implementation <https://en.wikipedia.org/wiki/Actor_model>`_
+for the `Racket programming language <https://racket-lang.org/>`_.
+I think if you know some Racket, then
+`the Goblins documentation <https://docs.racket-lang.org/goblins/>`_
+should be fairly approachable, and I'd love to hear feedback.
+Not everything is documented, but it should give you a nice taste
+of what the core ideas are.
+(Astute readers may observe that Goblins' name shares striking
+resemblance to `another project I have worked on <https://mediagoblin.org/>`_;
+this is no coincidence and is indeed a hint as to what I think the
+future direction of that area of work is.)
+
+Most live distributed systems are in some way a language-level actor
+model implementation, but *knowing* that you're an actor model
+implementation may change how you do things.
+(`ActivityPub <https://www.w3.org/TR/activitypub/>`_ is itself an
+actor model protocol, though I think not all implementors realize that.)
+Goblins is the third generation of an actor model I've written, the
+previous ones being `XUDD <https://xudd.readthedocs.io/en/latest/>`_ and
+`8sync <https://www.gnu.org/software/8sync/>`_.
+(Maybe if you count the big rewrite I did of 8sync to run it on top of
+`fibers <https://github.com/wingo/fibers>`_, it could be the fourth
+generation.)
+
+If you read
+`the Spritely blogpost <https://dustycloud.org/blog/spritely/>`_
+you'll know that distributed games are part of the long con here.
+This isn't the first time I've written a game system on top of one of
+these actor model implementations; in fact if you scroll down on
+`8sync <https://www.gnu.org/software/8sync/>`_ website you'll
+(currently) see a video of me
+`presenting on Mudsync <https://archive.org/details/feb_2017-live_network_coding_8sync>`_,
+a multi-user dungeon written in 8sync, where in the talk instead of
+slides I had rooms, and the audience was moving around in the world
+and I was changing it in response to their suggestions.
+
+But the drive of the actor model connected to social distributed games
+goes back further for me.
+I initially got interested in an actor model the first time I tried to
+work on the whole multiplayer game front about a decade ago.
+A friend and I spent a couple hours experimenting with threads and locks
+and after the first demo it was obvious that was never going to work.
+I remembered I had been told by a former coworker that they had used a
+system that had an actor model + coroutines as its basis;
+I didn't know what either of those things were yet, but as I looked into
+them it became clear to me that this was the right route.
+But one piece since then until recently remained a mystery to me, which
+was how to manage the complex web of authorization between the objects.
+
+Last year at TPAC, the World Wide Web consortium's conference, I was
+staying with some people who asked me what I would do if I had
+unlimited time to work on whatever I wanted.
+I sheepishly admitted to my dream of a federated social web as a
+distributed game, and expected to be laughed out of the room.
+I was surprised to find out that nearly everyone I was working with
+had some background in this same work and dream.
+This gave me some hope that I wasn't completely foolish, and the
+observation that even failure in persuing this ambitious dream would
+probably result in useful artifacts.
+
+And last year at Rebooting Web of Trust, I hit a big breakthrough.
+I had the chance to meet Mark S. Miller in person, someone who's work
+I read but barely understood at the time, and this meeting in some
+ways changed the direction of my career.
+For one thing, it lead to us collaborating on the foundation for the
+`ocap-ld specification <https://w3c-ccg.github.io/ocap-ld/>`_,
+which came out of
+`a paper we collaborated on from that event <https://github.com/WebOfTrustInfo/rebooting-the-web-of-trust-fall2017/blob/master/final-documents/lds-ocap.md>`_
+(also available in
+`nicely formatted PDF form <https://github.com/WebOfTrustInfo/rebooting-the-web-of-trust-fall2017/raw/master/final-documents/lds-ocap.pdf>`_).
+But what I also discovered was that Mark Miller and company had actually
+built the distributed *and secure* social network dream in the late 1990s
+and called it Electric Communities
+(`rare video of it being demonstrated <https://www.youtube.com/watch?v=KNiePoNiyvE>`_,
+and a
+`rare video of some of the out-there ideas <https://www.youtube.com/watch?v=kOFzisF7aNw>`_).
+What I found out was that they had solved most of the remaining questions
+about authorization and security through object capabilities, and that
+was through a pile of object capability patterns built on top of the
+actor model.
+While Electric Communities did not survive, its foundation of the
+`the "E" programming language <http://erights.org/>`_ lived on,
+pulling in many of its good ideas with it.
+I proceeded to read as much
+`documentation about E <http://www.skyhunter.com/marcs/ewalnut.html>`_
+and surrounding `capability patterns <http://erights.org/elib/capability/index.html>`_
+as I could, and this has majorly influenced Goblins' design.
+(Don't underestimate the depth of ideas on
+`erights.org <http://erights.org/>`_
+just because it looks like an ancient Geocities page... it did come
+from that era after all...)
+
+Another key insight came from discovering the
+`Object-Capability Security in Virtual Environments <https://www.uni-weimar.de/fileadmin/user/fak/medien/professuren/Virtual_Reality/documents/publications/capsec_vr2008_preprint.pdf>`_
+paper.
+I won't go into details on this except to say that it's a must-read
+for this problem domain, with the caveat that it pulls in a lot of
+terminology baggage from the object capability (aka ocap) community.
+The ocap community is one of those groups that has so many of the right
+ideas but which unfortunately is also drowning in its own verbiage,
+despite true efforts to make the ideas more accessible.
+We (and I guess I'm part of this group now, so "we" is appropriate)
+need to do better, but
+`it isn't easy <https://en.wikipedia.org/wiki/Curse_of_knowledge>`_.
+
+Goblins is still in its very early days.
+Its api is unstable and it surely has bugs
+(`this one in particular <https://gitlab.com/spritely/goblins/issues/8>`_
+I need to deal with, and which even exposed an
+`underlying bug in Racket <https://github.com/racket/racket/issues/2341>`_,
+which `did get fixed quickly <https://github.com/racket/racket/commit/d1fe6a6e3e26df403f650ae821aa0adbd3df491d>`_
+because the Racket community is amazing).
+Please don't build anything production-oriented on top of it yet.
+That said, I'd love users to try things.
+`Check out the docs <https://docs.racket-lang.org/goblins/>`_, see
+if they jive with you.
+And keep watching here; more Spritely demos/artifacts/releases
+on the horizon.

+ 1 - 1
content/spritely.rst

@@ -7,7 +7,7 @@ Spritely: towards secure social spaces as virtual worlds
 :tags: spritely, foss, federation
 
 If you `follow me on the fediverse <https://octodon.social/@cwebber>`_,
-maybe you already know.
+maybe you `already know <https://octodon.social/@cwebber/100866264755512782>`_.
 I've sent an announcement to my work that I am switching to doing a
 project named `Spritely <https://gitlab.com/spritely/>`_ on my own full time.
 (Actually I'm still going to be doing some contracting with my old