Relaxing treatment of non-notes by Mastodon
-
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
this is like saying “i’m going to email every scrobble to my entire contact address-book and it’s their job to filter out such emails”
-
Der Pepe (Hubzilla) ⁂ ⚝replied to julian on last edited byIf I remember correctly, Mastodon simply implemented a link to the source as the ‘solution’ for as:Article. This is not what users expect, it is not what the author had in mind, but it is probably considered ‘sufficient’ by Mastodon.
Mastodon shouldn't ‘adapt’ to other services either, but it should implement the AP standard properly. The way it has been handled so far, it feels rather arrogant. -
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
i don’t find this to be the case. in this case the “post” is not the Audio object, it’s that you Listened to it. it’s actually far more common for the activity to be more important than the object.
-
Erin 💽✨ 🔜 38C3replied to infinite love ⴳ on last edited by@trwnh @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap we don't really have a way of knowing what activities our followers are interested. In fact in the general case that's impossible; if I started using a music suggestion system based upon my friends listening habits today, I'd like to be able to use their historic listening data that they have been broadcasting to seed it.
Alternatively, consider that I decide to make my listening history public and it hits a relay. My as:Listen activities are going to absolutely carpet bomb the federated timeline.
Aside from the Annointed Two (Create, Announce) we really need to treat most activities as ephemeral and largely unimportant -
Erin 💽✨ 🔜 38C3replied to Erin 💽✨ 🔜 38C3 on last edited by@trwnh @hongminhee @julian @michael @mike @pfefferle @renchap @thisismissem the idea that every activity should turn into an entry in my home feed is utterly ludicrous. Imagine if this applied to Like or EmojiReact
-
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
This is why we need to allow people to specifically follow certain Collections which are exposed as streams. It’s also why we need to allow people to send activities to arbitrary audiences which might not include all followers.
If a relay is set up for the purpose of aggregating Listen activities and you follow it, that’s on you. You asked for it.
Create is the exception, not the rule
-
Erin 💽✨ 🔜 38C3replied to infinite love ⴳ on last edited by@trwnh @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap You're right that create is the exception: it's just one of two activities that you actually want to directly see in a microblogging context
-
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
Why shouldn’t it? This is an app/impl decision. I could add name/summary/content to a Like. You can ignore those fields and “downgrade” it to being “just” a like, or you could render it in its entirety as a post (which is likely my intention in adding content in the first place!)
-
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
Ironically in a micro/blogging context, the Create is mostly not interesting, it’s just a wrapper for the inner object which is the real “post”. Although, this doesn’t have to be the case — the Create might have metadata of its own that is interesting. Or you might want to preserve the Create for the consistency guarantee that everything is a stream of specifically Activities.
-
infinite love ⴳreplied to infinite love ⴳ on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
In any case I’m arguing that the criteria for “post” or “status” in something like Mastodon ought to be “does it have content?” If it doesn’t, then there’s nothing to really convert into a status, unless you get clever about interpreting the Activity type and generating a status from the statement “<actor> <type> <object>” or “<actor> <type> <object.type>”
-
Erin 💽✨ 🔜 38C3replied to infinite love ⴳ on last edited by@trwnh @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap therein lies the point - activities mostly *aren't* interesting. Create and Announce are interesting not in and of themselves but because of what they carry.
Things just work much better in many ways if activities can be thought of as largely ephemeral.
If the podcast listen is important enough that it's worthwhile keeping around in my feed - say, it has commentary or something like that - then perhaps it's better framed as commentary, not as a pure listen -
Erin 💽✨ 🔜 38C3replied to Erin 💽✨ 🔜 38C3 on last edited by@trwnh @hongminhee @julian @michael @mike @pfefferle @renchap @thisismissem I think our fundamental disagreement here is that I think activities shouldn't have content; it really opens many cans of worms
AS1 had a much more robust activity/object distinction and TBH I'm still kinda upset at how much AS2 muddled every type of object together into sludge -
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
This just feels like the justification for shoving everything into the Create-Note-shaped hole.
I think that any object, Activity or not, can be considered a “post” if it has content. Sure, there are additional semantics, which you can ignore if you’re Mastodon. You’re also free to add explicit support for certain contentless activities, such as contentless Like or contentless Announce
-
Erin 💽✨ 🔜 38C3replied to Erin 💽✨ 🔜 38C3 on last edited by@hongminhee @julian @michael @mike @pfefferle @renchap @thisismissem @trwnh if you treat activities as first class objects indeed of second class, it really opens up various cans of worms. What does it mean to like a like? Can you reply to an EmojiReact? Can you Like a Listen?
The end result of dividing things might be some semantic overlap between "small" Activities and "large" Objects, but that's probably not the worst possible argument
I do think there's an argument for a world with an activity-object merge but it's probably the world in which the Create activity never existed -
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent that’s probably it. I think whatever “can of worms” that contentful Activity objects bring to the table is just normal everyday expressivity. Why force yourself to publish exclusively a Create Note or even a Create Article when you can be more semantic and publish something more accurate to what you really did? Why treat the myriad Activity types any differently? If it were just about objects, we might as well generate feeds of exclusively objects and skip the Create entirely.
-
Erin 💽✨ 🔜 38C3replied to infinite love ⴳ on last edited by@trwnh I love how as we hash this out it turns out the two of us are in violent agreement and we're just disagreeing on the way to proceed from what exists
-
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap
You can do all of those things and they mean whatever the negotiated meaning is between the human author and the human audience.
From an AP machine view, Liking a Like just means that your Like SHOULD be added into the `likes` collection of that Like. From a human view, it simply means “I like that you liked this.”
-
Darius Kazemireplied to infinite love ⴳ on last edited by
@trwnh @erincandescent fwiw I'm 100% on board for following Collections exposed as streams. It seems to me the reasonable solution to the as:Listen-spamming issue here. If you subscribed explicitly to get as:Listen then it is completely reasonable to expect your client to know how to handle it in a way that is not annoying to the end user
-
infinite love ⴳreplied to Erin 💽✨ 🔜 38C3 on last edited by
@erincandescent haha, I don’t think it’s violent! nor do I think it’s completely agreement, either — we probably still disagree about the fundamental nature of an Activity, for example.
To summarize, how I think we should proceed is that we should implement more generic support for text reprs of arbitrary objects, including arbitrary activities. My happy default is that any object with content is a “post”, and beyond that, you MAY choose to support contentless Activity types with side effects.
-
Erin 💽✨ 🔜 38C3replied to infinite love ⴳ on last edited by@trwnh @julian @mike @hongminhee @thisismissem @pfefferle @michael @renchap and I agree, but I think this approach if actually implemented really combinatorially explodes the protocol. An implication of this direction of thought is that your like has a likes collection, and that likes collection has it's own likes collection, ad infinitum.
You really can express absolutely everything in ActivityPub/AS2 and it's it's biggest flaw IMO. The combinatorial explosion really paralyses implementers