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.
When we talk about "semantic meaning" this is exactly the sort of problem that we need to think about how we solve it. If I am searching for, or post, using "poly" it should be clear whether I am looking for "Polynesian" or "Polyamory". If I talk about rust it should be clear whether I am talking "Rust the movie" xor "rust lang"
I gave a look into the #CloudEvents spec, as I thought it was set up specifically mentioning subprotocols. I misremembered that, but it sorta kinda boils down to the same thing.
Reading the primer was interesting though. E.g. the layered architecture model of:
Base specification
Extensions
Format encodings
Protocol bindings
And also funny to find that Adobe once used #ActivityStreams in their event format (think now they use CloudEvents):
At the end of the day, if an implementor chooses to send everything as as:Note, that's their call, but more "correct" types should be used. Even as:Page is a step in the right direction as it is sufficient generic to encompass a lot.
Perhaps #nodebb will send topics as as:OrderedCollection, because at its core, what is a topic but an ordered collection of posts/notes?
Obviously, every implementor supporting every #ActivityStreams type differently is a tall ask, but moving away from "everything as as:Note" to "as:Note, as:Article, and as:Page" is a small but important evolution in protocol interpretation.
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 #ActivityPub or #ActivityStreams 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 #nodebb ...
Finally figured out why #nodebb posts weren't queryable via Mastodon, turns out it does Content-Type checking, and I was inadvertently breaking #ActivityPub spec by sending in application/json when I should've been sending in "application/activity+json" or 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'
Latter doesn't play nicely with express, so using the former and all's well!
Full credit to @bouncepaw who gave me key to figuring it out! 🏅
@AltCode It's tough because there's no direct #ActivityStreams object type for a collection of Notes.
"as:Article" is like a longer note, and "as:Page" is a generic web page.
"OrderedCollection" would fit but is a stricter sub-type of as:Object and I'm honestly not certain what other implementors would do if I served that up.
Its omission in FEP 1b12 might be unintentional, or it may be purposeful. Starting a separate thread about this...
🆕 blog! “Rebuilding FourSquare for ActivityPub using OpenStreetMap”
I used to like the original FourSquare. The "mayor" stuff was a bit silly, and my friends never left that many reviews, but I loved being able to signal to my friends "I am at this cool museum" or "We're at this pub if you want to meet" or "Spendi…
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.
As I read through the discussions around the creation of and revisions around #RDF three things are clear in my eye.
Usability was not the primary concern. It seems to have been widely believed that Other Tools™ would fill this gap and that RDF should focus first on a kind of expressibility.
Those Other Tools™ never materialized.
Most who use RDF-derived tooling seem to assume either that it gives them those tools or that Others™ will build them on top of their solution as well
Yes, they are, and I'm not even advocating changing any of them (except AS2, separate debate), what I'm saying instead is that maybe part of your protocol is that it needs to actually constrain the lexical forms, not just be defined in terms of semantics, and also constrain the semantics, not just aim to capture "that which is expressible."
You can only kick these decisions down the road so many times.
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.
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.
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
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:
Never uses audience targeting even in its audience targeting example.
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
"The scope indicates that the audience for the note is only members of the Organization."
But it seems likely that something got lost in the shuffle, because the final #ActivityStreams says that it is the audience it might relevant to (which is not the same thing) and gives only a peripheral example contrasting its use with context, and not mentioning it otherwise, and in AP it is the same as to/cc.
In actuality, I'm not even sure how you would use it in the way that it looks in the one example in #ActivityStreams, where it exists without any sort of attached unique identifier.
The example is descriptive, but not usable as written to infer behavior or meaning. I don't even have a good way to talk about who might be in said group: which actors or objects might be members?
I could use a collection, maybe, but what if I want to scope it to members of a server?
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)
I think overall a lot of #JsonLD-inspired protocols struggle with (3) in particular.
They are reasonably good at saying "this is that." They are very bad at giving me clues that "this is not that" without pulling them apart element at a time.
For instance, if I take an #ActivityStreams Article object in AP I can easily see what it is (an article, so a multiparagraph work).
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?
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.