It might take a year or so, but a direction of some devs on the #Fediverse around #ActivityPub is to make software that is fundamentally OCAP based. A big question will be: will there then be software that ignores it and effectively creates two fediverses? Or will existing software attempt to try to be a Swiss-Army-Knife implement-it-all? Or just migrate completely over?
I have no answers but it's an uncomfortable question on the horizon.
@cj I definitely won't be making my software support it if I am never able to understand it, which seems likely from all the discussions I've lurked!
@darius @cj Kinda why I wrote https://dustycloud.org/blog/if-you-cant-tell-people-anything/
I don't think I'm going to have much success in convincing anyone but the super-interested until I have things that are put in peoples' hands and them trying/using them.
People learn through immersion best. The main problem is that people don't have immersive experience in these ideas.
@darius @cj The likely problem will be, by the time people become sufficiently immersed, it may be too late. The adoption of ActivityPub will be too strongly in the "same-origin" set of assumptions. It may not be possible to undo that level of network effect.
I remain hopeful, or at least keep working, though, because I am fairly certain the alternative is a system that collapses under its own complexity.
I hope I can get tools in peoples' hands in time. :(
@cwebber @cj I definitely learned about the details of federation by actually building stuff and road testing it. All the discussions I happen to see are incredibly intimidating though, and it seems like it would be a high stakes thing for me to create something that uses OCAP but do it wrong (same as with federation over AP!)
"Where is the federation? Where is the security?"
It is automatic and all over the place, resembling doing normal programming. Ocap security is exactly the same as invoking functions and passing them arguments.
So let's try in bullet form. What is Spritely Goblins?
- a distributed programming environment that's safe to use even when you don't fully trust the network.
- ocap security is baked in, is just part of normal programming.
- It follows the "classic actor model"; kinda like Erlang but more correctly
- it even has such wild features as distributed garbage collection
- it is meant as the *foundational layer* for writing Spritely programs
@gargron @darius @cj
- The distributed programming stuff already works in the captp branch, but needs to be documented to be exposed for public use (in the next release within the next month)
- It has transactionality and "time travel debugging" built in, hence how Terminal Phase had trivial time travel (no more code than exposing it in the UI https://dustycloud.org/blog/goblins-time-travel-micropreview/
@gargron @darius @cj
- Its design means you can implement a distributed currency system in *fifty lines of code or less* and a toy authenticated chat system in *250 lines of code*. Both of these have been written but I haven't talked about them much yet. Yes, this means we could use this to bring payments to the fediverse.
- ActivityPub interop is planned as an easy-to-use shim library.
I have implemented that design on top of Racket/Scheme. The core ideas are portable.
E came out of a distributed virtual worlds game that unfortunately died in the late 90s crash but was very interesting called Electric Communities Habitat https://www.youtube.com/watch?v=KNiePoNiyvE
I talked about this in my apconf talk last year https://conf.tube/videos/watch/2b9a985b-ccdd-49ce-a81b-ed00d2b47c85
But because of Goblins, Spritely will be able to do things that seem absurdly, impossibly complex for contemporary fediverse applications like distributed virtual worlds. It's designed to make that kind of thing easy. And it is, because it was based on an architecture built *for that*
@gargron @darius @cj But I probably sound like I'm full of bullshit. All I can ask is that you be patient and believe that I might not be. Or actually you don't fully have to be, you can start learning now by reading the docs (which exist) https://docs.racket-lang.org/goblins/index.html
I don't want Spritely to be vaporware, that's why I'm taking the demo-oriented approach. Terminal Phase was the demo of how the basic programming system worked (pre-distributed). The next major demo will show off a distributed system.
@cwebber @Gargron @cj Okay so from this thread (thanks for the bullets points) I take it that Goblins is a programming environment, which means that if I plan to continue programming in say... Node.js or Ruby or Python I will likely never learn it or need to learn it? More likely I would be interacting with software that was built in the Goblins environment, via talking to that software through APIs and the like?
Although their marketing is currently towards blockchain stuff because that's where the money is, the tech is more interesting than that and doesn't require blockchains at all.
The Goblins *design* is portable to multiple languages. It's a programming environment, but is written as a library instead of a language to be portable.
The situtation for ocaps vs ACLs/origin-oriented programming is similar to the situation with functional programming: the ideas that are becoming popular today are mostly not new but were extremely obscure until enough people had reason (or interest) to explore them.
@cwebber @Gargron @cj yes I am actually pretty familiar with Habitat and Chip and Randy's work, as a former professional MMOG developer myself. I can see from the papers you link that OCAPs are decades old, my head was just spinning at the idea of a portable, language-independent programming environment. When I think of programming environments I imagine like, Smalltalk.
1) Spritely succeeds and is ActivityPub interoperable. Horray, everyone wins!
2) Spritely succeeds but the rest of the ActivityPub community won't adopt and grow. I'll be in the unfortunate state of abandoning the ActivityPub shim then and that means something resembling a fediverse fork which I DON'T want. But I won't abandon this direction.
3) I die from stress trying to make it happen
I expect to extrapolate some ocap patterns generally that even django/rails users can use in their applications.
AND, such applications should be able to *use* stuff that spritely-based servers provide (such as the distributed payments and etc stuff) even if they can't implement it themselves
@gargron @darius @cj See this post https://octodon.social/@cwebber/104814082932841391
I'm writing the initial thing in Racket because I like it and also because it's a nice place to do programming theory experimentation. But Goblins relies on 0 lisp/scheme specific abstractions. It could be ported to Ruby, it would just be work to do it.
@gargron @darius @cj You can also use Agoric's stuff but I am starting to outpace them; if what you care about isn't blockchains (which in general, the fediverse doesn't care about blockchains) then Goblins is probably closer to what you want right now.
I already have distributed garbage collection and time travel implemented; they don't.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!