Spritely – leveling up the federated social web
Hi!  Wow, the website just got up a couple days ago... that was fast for hitting the HN homepage...<p>But the work has actually been happening for a couple of years, and the foundational layer, Spritely Goblins, is already something you can use: <a href="https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;goblins&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;goblins&#x2F;index.html</a><p>I think people don&#x27;t tend to get very excited until they see the time travel demo, and then they say &quot;whoa, something cool is going on here&quot; <a href="https:&#x2F;&#x2F;dustycloud.org&#x2F;blog&#x2F;goblins-time-travel-micropreview&#x2F;" rel="nofollow">https:&#x2F;&#x2F;dustycloud.org&#x2F;blog&#x2F;goblins-time-travel-micropreview...</a><p>But that&#x27;s not really the most interesting part of Spritely Goblins... the safe to run in a mutually suspicious network distributed programming environment is.<p>Some background: I was one of the co-authors&#x2F;co-editors of the ActivityPub social network standard... you might know it because it&#x27;s the protocol used by Mastodon, but it&#x27;s also used by Peertube, NextCloud, Write Freely, Funkwhale, Pixelfed, etc.  I actually got involved in standardization because we needed it for the previous project I worked on, MediaGoblin.  After standardization of ActivityPub ended, it turned out that a number of ActivityPub-using applications such as Peertube and Pixelfed and Funkwhale were using the protocol we worked on standardizing to do the kinds of things we meant to work on in MediaGoblin.  So I asked myself, given the finite amount of time I have on this planet, what&#x27;s the best use of my time?  At this point I thought (and with a lot of feedback and phone calls with close friends): I should work on advancing the things that the federated social network <i>can&#x27;t</i> do.  And there are quite a few of those because ActivityPub left some gaps in the spec, especially around authentication and authorization, but also because people aren&#x27;t building as rich of experiences as I think are interesting and possible yet... they&#x27;re mostly mimicing contemporary social networks.<p>So you can see in that long list of things on the Spritely website that one of them is Fantasary, which is the goal of bringing distributed virtual worlds to the fediverse.  That may sound like a hyper-ambitious and also kind of strange goal, but consider that modern social networks are really degenerate versions of massively multiplayer games; you can chat in both, but most social networks don&#x27;t have the sense of space and rich interaction that games do.  But I also want to make more obscure peer-to-peer technologies available and in the hands of users without the usual &quot;Oh no those are only for the bad people on the internet&quot;... normalizing things can help.  Those of us old enough remember when demanding https was similarly brought up with the &quot;well, that&#x27;s only for people who have something to hide&quot;.  A use case of e-commerce changed that.  Well, I want another use case... but one that involves fun.  Hence the distributed game stuff.  We can see how motivating building worlds together is by the success of minecraft.<p>But what if the Fantasary component fails?  It&#x27;s the most ambitious piece!  That&#x27;s actually okay, because it&#x27;s really a <i>driver</i> for all the other layers.  Distributed programming that&#x27;s safe to run in a hostile network, portable encrypted storage, the ability to safely run untrusted code... all of these are useful things, and useful things to bring to users generally, even if the game approach fails.<p>But actually all of these layers are quite well researched and possible.  Part of the reasons that Spritely <i>development</i> happened before two years before the launch of the Spritely <i>website</i> is because when we ran MediaGoblin, we opened up the project and within a couple of weeks had dozens of developers... but that was quite feasible to accomodate because MediaGoblin was a fairly &quot;traditional&quot; web application, easy enough to point to how it works by other similar web applications.  Spritely is treading a lot of what appears to be &quot;new ground&quot; to most people, so I had to figure out how it works enough, and lay enough of the foundation, before I was comfortable making a public image for it and asking people to start looking at it.  But with the last release of Goblins with the beginnings of distributed network programming and with a fairly reasonable tutorial, that&#x27;s starting to change.<p>But I said &quot;new ground&quot; to most people, but few of these are actually new ideas.  Most of them are old, well researched ideas, from a somewhat obscure (but becoming quickly less so) branch of computer science called &quot;object capability security&quot;.  I&#x27;ve been very fortunate that the object capability security community has been willing to take the time to walk me through how many of these concepts work... Spritely wouldn&#x27;t be possible without their help.<p>If you want to hear more, the video embedded on the site is a good overview, but here&#x27;s a direct link: <a href="https:&#x2F;&#x2F;conf.tube&#x2F;videos&#x2F;watch&#x2F;18aa2f92-36cc-4424-9a4f-6f2de946fbd2" rel="nofollow">https:&#x2F;&#x2F;conf.tube&#x2F;videos&#x2F;watch&#x2F;18aa2f92-36cc-4424-9a4f-6f2de...</a><p>Anyway, happy to answer questions if anyone has any.  And feel free to join our irc channel... we&#x27;re #spritely on irc.freenode.net!