joelving, to fediverse
@joelving@mastodon.joelving.dk avatar

Every time I take a stab at building for the Fediverse, I'm immediately drained for motivation by the ambiguities and contradictions of the AP/AS2 family of specs.

Oh, you want to do some validation of the actor property of activities posted to the Outbox? Good luck. It can have any number of values, and can even (per examples in the AS2 spec) mention actors from different instances.

Big respect for those of you who muddle through.

box464, to threads
@box464@mastodon.social avatar

Threads has added achievement badges during special events. I wondered if the fediverse has similar and sure enough there are ideas around this! I know Sharkey has achievements but not sure they are federated.

https://activitybadges.org

devnull, to fediverse
@devnull@crag.social avatar

As expected, when an instance attempts to respond to a Note with a larger audience than the note replied to, Mastodon will silently drop it from processing.

I don't actually know if this is codified anywhere in or spec, but looking into it now. 💪

Edit: Might be it actually is processed, but doesn't link up to the more-restrictive parent. Also good I think. Not quite sure how I'd handle this in ...

blake,

@devnull Pro tip: for testing against Mastodon (or really AP in general), you could try to run the activitypub.academy software, which shows the activities it receives (and maybe sends?) in a log. I would have recommended activitypub.academy itself but it seems to be down.

devnull,
@devnull@crag.social avatar

@blake thanks! I do use it actually, although as you say, it's a little fragile at times. I tried using it to send stuff back and forth and the entire thing went down momentarily 🫤

Also activitypub.academy is like Mastodon but isn't quite... might be a fork of an earlier version? There were some minor differences that would've caused headaches if I didn't test it live, so to say... 😅

antolius, to fediverse

So, I looked into ActivityPub the other day. I wanted to play around with it, maybe make some small project.

It quickly turned into a rabbit hole of specifications with #ActivityPub#ActivityStreams#JSON-LD → #IRI

It is at this point that I noticed a lack of native supported for IRI in JVM languages. "Up the spec chain" situation was spotty; I found a couple of libs implementing parts of it. But lacking a standard representation of basic concept such as links seemed troublesome.

antolius,

Then I had an epiphany! #Mastodon itself has an official, native Android client. I could check how it's handled there!

I opened the project, looked around, & to my surprise I found nothing. It turns out that Mastodon in fact only implements half of the ActivityPub spec. Client side is an arbitrary HTTP API.

At that point I just gave up. If the most popular app on the network can't implement more than half of the spec it all seemed kinda overwhelming & pointless.

FenTiger,
@FenTiger@mastodon.social avatar

@antolius Welcome to the rabbit hole!

There are quite a few of us down here.

There's always room for more. It's a very deep hole.

jonny, to fediverse
@jonny@neuromatch.social avatar

i'll say more about what this is in the morning, but anyway here's a #LinkML transcription of #ActivityStreams that will also get the implicit definition of an Actor in #ActivityPub later, along with all the other fun stuff that brings like generic dataclasses and pydantic models for programming with, sql, graphql, json schema... yno all the formats.

https://github.com/p2p-ld/linkml-activitypub

Cmungall,

@linkml @jonny I would to see something like bioportal for schemas, it could include both native linkml and imported schemas. Fairsharing has the potential to be this but I don’t think it’s in their plans

jonny,
@jonny@neuromatch.social avatar

@Cmungall with a little cli interface magic one could integrate this s.t. one could publish a linkml schema so that some standard prefix like registry.linkml.io/schemaname dereferenced to eg. the schema in a git repository, so if an absolute prefix url wasn't set in the schema the generators assume that standard one... idk could be fun to experiment with until it's time to have p2p schema world without the constraints of expensive DNS space :). i'll PR into this once this schema is finished, sort of 4 steps removed for me atm, thx for linking!

jonny, to random
@jonny@neuromatch.social avatar
hrefna,
@hrefna@hachyderm.io avatar

@jonny Imagine it written out formally!

"There exists at least one potential collection that we do not impose strict ordering based on reverse chronology on."

Good on the spec to clarify that.

I think, from the conversation that led to it being there, that it was supposed to say "OrderedCollections other than inbox outbox etc do not need to adhere to this rule," but… that's not what it says.

jonny,
@jonny@neuromatch.social avatar

@KatS meanwhile me: I can fix him

pieceofthepie, to fediverse
@pieceofthepie@n8e.dev avatar

Is anyone aware of any OSS project that enables Disqus like commenting on static file blogs powered by ActivityPub?

I've found https://github.com/oom-components/mastodon-comments and https://github.com/dpecos/mastodon-comments which are really close to what I envision.

What I really want is something more akin to the Wordpress plugin. i.e. a full integration with the protocol. A blog author that can be followed by a Mastodon user etc.

pieceofthepie,
@pieceofthepie@n8e.dev avatar

https://hatsu.cli.rs/intro.html seems like it could be it but it's very early days for the project so I'm not sure.

pieceofthepie,
@pieceofthepie@n8e.dev avatar

@michaeljpdx Yeah. I use a project called https://remark42.com/ which is a FOSS Disqus replacement and it works great. But I want to bring the #Fediverse into it.

I want a fediverse account/instance that posts my blog posts to its followers and a blog theme that renders the replies and likes in a good looking way that lets people comment (in an easy a fashion as possible) using their fediverse accounts. Bonus points if it acts a proper ActivityPub citizen with "author@blog.org" actors.

aaronwinstonsmith, to fediverse

Some weeks ago I submitedd a pull request to the https://github.com/w3c/activitystream repository regarding the OWL representation of the ActivityStream vocabulary. As discussed in the last Issue Triage, these changes need reviews from Semantic Web expert. They are just few subclass assertions which aim to capture the activity subclasses definitions reported in

https://www.w3.org/TR/activitystreams-vocabulary/#activity-types

So I encourage semantic web folks, such as for example @dagoneye ;), to take a look to my pull request here

https://github.com/w3c/activitystreams/pull/562

and eventually to put comments here

https://github.com/w3c/activitystreams/pull/562

Thanks all and please share and mention other semantic web enthusiast! #ActivityPub #ActivityStreams

hrefna, to random
@hrefna@hachyderm.io avatar

#ActivityStreams has an Arrive object, but no Depart object. Leave does not specify that it is targeting a location.

I guess you can check in any time you like, but you can never leave?

bad dum tss

hrefna, to fediverse
@hrefna@hachyderm.io avatar

I'm trying to make sense of how audience is supposed to work in #ActivityPub and it feels like something is missing in the specification here both for AP and #ActivityStreams.

The documentation from AP:

  1. Never uses audience targeting even in its audience targeting example.
  2. Uses it almost identically to "to" or "cc"

On the part of AS it gets somewhat alluded to in 5.1.1, but not in the main section actually titled "Audience Targeting" (5.1) and says very little about it, just one example

7.1.1 Outbox Delivery Requirements for Server to Server When objects are received in the outbox (for servers which support both Client to Server interactions and Server to Server Interactions), the server MUST target and deliver to: The to, bto, cc, bcc or audience fields if their values are individuals or Collections owned by the actor. These fields will have been populated appropriately by the client which posted the Activity to the outbox.
Activities are rarely isolated events. Often, multiple individual activities will be performed around a similar context or audience. For instance, a collaborators working on a shared project might perform multiple related activities in the process of achieving some goal. Such activities can be logically grouped together using the context property, and scoped to a particular audience using the audience property.
audience, Notes: Identifies one or more entities that represent the total population of entities for which the object can considered to be relevant.

hrefna,
@hrefna@hachyderm.io avatar

This is irksome, because a) I already have to/cc b) I don't want the to/cc behavior when I specify an audience c) nothing specifies the behavior I do want, which is the behavior in the aforementioned ticket d) I can't tell how exactly audience is supposed to be used in #ActivityPub or how implementations may have interpreted all of the above.

But it seems like knowing this would be important

When people talk about the challenges of interoperability here, this is the sort of thing they mean

hrefna,
@hrefna@hachyderm.io avatar

@steve It's interesting to me that there are essentially three different interpretations going on here.

  1. There's the original request, which is a scoped universe of who might see the message. This matches what I see in the chat log.

  2. There's targeting, which is how ActivityPub handles it.

  3. There's "who might be interested in it" or who it might be relevant to, which is what made it into ActivityStreams.

Three radically different meanings that would interact in surprising ways.

hrefna, (edited ) to fediverse
@hrefna@hachyderm.io avatar

I sort of want:

  • To/cc to control where the message gets sent.
  • Audience to control who can see the message.
  • bto, bcc to not exist or be broadly disabled in AP (edit, to clarify: I want to and cc to take the meaning of bto and bcc in general; the functionality is useful, but in a social network it should be the default behavior and we have other mechanisms to tag people in)

#ActivityPub #ActivityStreams

hrefna, to random
@hrefna@hachyderm.io avatar
hrefna, to random
@hrefna@hachyderm.io avatar

I'm developing an increasing suspicion that I have a different definition of what makes a protocol difficult to implement than other people? Along with what partial, incremental progress means here?

https://hachyderm.io/@hrefna/111502056897571315

#ActivityPub #ActivityStreams #JsonLD

hrefna, (edited ) to random
@hrefna@hachyderm.io avatar

Okay, thinking about how to represent a #ActivityStreams in #OpenAPI some more, a few thoughts:

Q1: Why validate incoming values?

A 1.1: Per OWASP API6:2019: There are a lot of things that can go sideways very easily if you just openly accept values from the internet and write them into a database and, even to the extent this isn't a problem with the way it is written today, the extension mechanism means it might always become an issue in the future.

1/

hrefna, to random
@hrefna@hachyderm.io avatar

On the note of #OpenAPI

I really don't even want to think about what the schema definitions for all of #ActivityStreams weirdness looks like… -.-

I've seen some stabs at it, but most of them focused on the mastodon API and were incomplete.

That is a problem for Future Hrefna™ to solve, I think.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • mdbf
  • ngwrru68w68
  • modclub
  • magazineikmin
  • thenastyranch
  • rosin
  • khanakhh
  • InstantRegret
  • Youngstown
  • slotface
  • Durango
  • kavyap
  • DreamBathrooms
  • provamag3
  • GTA5RPClips
  • tacticalgear
  • normalnudes
  • tester
  • osvaldo12
  • everett
  • cubers
  • ethstaker
  • Leos
  • anitta
  • cisconetworking
  • megavids
  • lostlight
  • All magazines