Email or username:

Password:

Forgot your password?
Darius Kazemi

Years ago I tried to learn ActivityPub. I succeeded, but it was difficult. I wrote this blog post which is a "what I wish I knew before trying to learn ActivityPub" guide. It is basically "how to read the specs in a way that will make them make more sense".

tinysubversions.com/notes/read

32 comments | Expand all CWs
π’€­π’‚—π’† 

@darius

Do you feel like it's gotten more accessible since then (or I should say, accessible *enough*)?

Darius Kazemi

@enkiv2 It has gotten better but I haven't dug in enough to say for sure exactly how much better

thurisaz

@darius Thanks! I was just sitting down to learn more about ActivityPub and fedi tech. :)

Sean Redmond

@darius So great, I've been looking for something like this. Thank you!

mushroom πŸ„
@darius thank you for sharing your notes
it's a few days since I'm diving in, and it's a little overwhelming
but I start finding my way step after step
thisisaaronland

@darius you are the best

Darius Kazemi

@thisisaaronland thank you Aaron that means a lot coming from you!!

Darius Kazemi

Was re-reading and this paragraph made me laugh.

> Is this technically 100% correct? No. But if you were the kind of person who cared about the difference between JSON-LD and JSON, you'd probably be writing your own spec right now instead of reading this article.

nasser

@darius yeah I cannot for the life of me make heads or tails of the difference between JSON and JSON-LD...

Darius Kazemi

@nasser yeah as far as I can tell it is just a series of conventions that when you encounter a property named X, you should do Y with it

nasser

@darius it feels vaguely like XML schemas? which are also URLs and I guess namespaces are nice but, fundamentally this stuff is all just conventions no?

Josh Lee

@nasser @darius the context stuff embeds typing information about what the properties refer to, so the processor can tell what's an IRI or a string literal or some other typed object etc. and it's exactly like XML schemas except we can mostly pretend that RDF never had anything to do with XML and it was all just a bad dream.

i do kind of wonder if fedi clients will handle fully baroque json-ld or are only pretending though.

nasser

@jleedev yeah I guess I'm curious as to what the "processor" is here. the implementations I've seen have all been just throwing JSON together as you would normally or parsing it normally with hard-coded rules. I haven't seen an implementation where the context gets consulted, but I'm also not well versed in this technology.

@darius if this is annoying LMK and I will take you off these mentions

tech? no! man, see...

@nasser @jleedev @darius right; I'm actually kinda curious about the difference between "all the stuff JSON-LD is capable of as a standard" vs "the way JSON-LD gets used by ActivityPub and its implementations"

I get the feeling that the latter is a lot more just "a document with hyperlinks" and the ontology stuff doesn't really come into play in a serious way, but maybe I've just been looking in the wrong places

Darius Kazemi

@technomancy @nasser @jleedev I've never encountered it as anything but "json with hyperlinks" in an AP context

nasser

@darius @technomancy @jleedev and, crucially, the differentiation between strings that are hyperlinks to be followed and strings that are just strings is captured directly in the software, as opposed to consulting some kind of schema in a meaningful way

Olivier Forget

@nasser @darius @technomancy @jleedev so are we saying that AP could have just used straight JSON and lost essentially nothing?

tech? no! man, see...

@darius @nasser that tracks with my understanding; it's like ... a way of splitting up data into separate documents using hyperlink references?

nasser

@technomancy @darius that's neat. I suppose it provides some mechanism to differentiate between hyperlink references to be followed and random strings?

jonny

@technomancy @darius @nasser a way of creating and reusing schema and then applying them in a way that reduces to triplet subject predicate object links. so instead of just having an autonomous JSON object it can reference terms from controlled vocabularies and ideally be made interoperable. v powerful way of describing things but also of making compound concepts, actions, etc. some examples and info here: json-ld.org/

Mike Lynch

@technomancy @darius @nasser not necessarily separate - it’s more that JSON-LD can represent a graph of things linked by relations (which can be internal to a document or point outside the document) and also associate the relations with an ontology somewhere

Paco Xander Nathan

@technomancy @nasser @darius think of being able to build composable graphs. there's 1:1 transformation with specs like RDF

Daniel D. Beck

@darius as a technical writer, I felt called out by that paragraph πŸ˜…

Sumana Harihareswara

@darius ha!!

Yoz

@darius BEAUTIFUL timing, I was literally thinking β€œI should go read the ActivityPub spec” a few minutes ago, and you have saved me so much pain

Tomas Ekeli

@darius using this to learn it - it's immensely helpful. thanks!

Jocelynephiliac :reclaimer:

@darius I just wanted to say that your express AP project has been a massive boon with trying to write a node lambda version. Thank you for that!

Darius Kazemi

@twipped oh I'm glad to hear it!

Jason Parker-Burlingham

@darius You don't see this kind of document very often but they're darned useful.

If nothing else there are lot of APIs out there that could use something like this to bridge the gaps between "here's all the things you can do" and "here's how to USE the API".

KyleH πŸ‡¨πŸ‡¦

@darius Couple years ago I wanted to build an ActivityPub application

I hate to admit that I still don't really get the secret sauce of it, but it eats away at me to try looking at it again

Justin du Coeur

@darius Ooh, neat -- I'm starting to noodle with a new library and have the spec on my To Do list, so this is super-useful. Thanks!

Go Up