#dev 2023-12-29

2023-12-29 UTC
[KevinMarks]1, [jacky], [tantek] and [manton] joined the channel
#
Soni
we're glad we didn't use headers for fedilinks heh
#
Soni
sure it requires more webserver setup which isn't always viable but eh
#
[tantek]
[snarfed] is there an AP or other method in Mastodon to indicate pinned posts so they show up when someone views your profile on their own instance?
#
[tantek]
What is pinned?
#
Loqi
πŸ“Œ pin or pinning is a feature that allows the author to choose a post to put at the top of their profile (or homepage) which is then called a pinned or sticky post https://indieweb.org/pinned
#
[snarfed]
[tantek] I haven't looked into pinned posts at all. afaik they're not explicitly in AS2/AP, but there might be something in the JSON anyway, I can look
#
[tantek]
Some considerations in https://indieweb.org/pin#Brainstorming and apparently [KevinMarks] saw a "pinned" Boolean in the Masto API
#
[tantek]
I’m more interested in the use-case indieweb h-entry -> BridgyFed -> show as pinned in a Mastodon profile view
#
[tantek]
No other consuming code use-cases I know of but maybe that's enough?
#
[snarfed]
right, understood
#
[tantek]
It's something someone can do with a "native" Masto account but can't (yet) do from their personal site via BF
#
[snarfed]
in the "Extensions not defined by ActivityStreams" section
#
[snarfed]
feel free to file a feature request!
#
[tantek]
This sounds worthy of documenting on the /pinned page and maybe some publishing brainstorming.
#
[tantek]
No current indieweb pinned posts have any special markup AFAIK (which makes sense since we couldn't come up with a consuming code use-case)
#
[tantek]
One detail that seems worthy of consideration is that some indieweb pinned posts are only pinned in the context of a specific stream or feed
#
[tantek]
Like how aaronpk has pinned posts for tag pages. Those pinned posts are only pinned on those tag pages, and not on the rest of his site
#
[tantek]
First thought is perhaps a u-pinned-on property inside h-entry that's a URL of the page the post should be pinned on if/when displayed on that page.
#
[tantek]
Eg you could have u-pinned-on "/" for your home page, or a URL to a specific tag aggregation page on your site
#
[tantek]
That way BF could only translate the u-pinned-on "/" posts to Mastodon profile pinned posts
chris1 and gRegor joined the channel
#
[snarfed]
I'd be curious to hear from aaronpk and other people who have actually done pinned posts in the wild
#
[tantek]
Indeed! And other indieweb folks who have a mastodon account with pinned post(s)
#
gRegor
I've implemented them for some work projects, no microformats though
AramZS joined the channel
#
gRegor
pinned posts on their own website that is, not anything on Mastodon
geoffo, gRegor, AramZS and bterry joined the channel
#
[pfefferle]
I have implemented pinned posts for the WordPress plugin too!
#
[tantek]
[pfefferle] does WordPress have its own native pinned post functionality in the UI that you're re-using? Or did you create a new UI for this?
#
[pfefferle]
It already has pinned posts functionality, I simply made them available through AP.
AramZS joined the channel
#
[tantek]
with the "featured" collection extension from Mastodon? https://docs.joinmastodon.org/spec/activitypub/#featured
#
[tantek]
[pfefferle] is that pinned post functionality in the WP AP plugin docs?
#
[pfefferle]
Yes, with the featured collection and in WordPress it’s called sticky posts https://developer.wordpress.org/themes/functionality/sticky-posts/
#
[tantek]
what are stick posts
#
Loqi
It looks like we don't have a page for "stick posts" yet. Would you like to create it? (Or just say "stick posts is ____", a sentence describing the term)
#
[tantek]
what are sticky posts
#
Loqi
It looks like we don't have a page for "sticky posts" yet. Would you like to create it? (Or just say "sticky posts is ____", a sentence describing the term)
#
[tantek]
what is sticky
#
Loqi
πŸ“Œ pin or pinning is a feature that allows the author to choose a post to put at the top of their profile (or homepage) which is then called a pinned or sticky post https://indieweb.org/sticky
#
[tantek]
sticky posts is /pin
#
[tantek]
stick posts is /pin
#
[pfefferle]
There is also a collection to have featured (hash)tags, but it is not really well documented and my first try produced a lot of 500 errors on the Mastodon UI 😞
#
[tantek]
[pfefferle] I added a note about the WordPress support here: https://indieweb.org/pin#WordPress take a look and LMK if anything needs fixing/improving
AramZS joined the channel
#
[pfefferle]
perfect, thanks! :)
geoffo, gRegorLove_, [KevinMarks], [Paul_Robert_Ll] and jacky joined the channel
#
jacky
this is a very fair assessment of AP (from the few times I've tried implementing it) https://hachyderm.io/@hrefna/111662739576534724
#
jacky
and kinda the same here? (to a degree)
[snarfed] joined the channel
#
[snarfed]
definitely poetic. yeah AP and IndieWeb are both combinations of push-style message passing and pull-style data fetching, and both center domains and SSL in their trust models
#
[snarfed]
one alternative on the rise is efficient data synchronization algorithms: git, blockchain, ATProto, etc
#
[snarfed]
(which tend to have more key-centric trust models)
[tantek] joined the channel
#
Soni
are you familiar with poisoning?
#
[snarfed]
um, I'll need more context, sorry
#
[snarfed]
I'm guessing you mean cache poisoning?
#
Soni
here's a draft of a blog post we're writing https://soniex2.autistic.space/draft/poisoning.xhtml
#
Soni
(about poisoning)
#
Soni
anyway personally we don't trust so-called "trustless" systems (blockchain etc) to behave properly in the face of poisoning.
#
[tantek]
pin << Software Support: [[Mastodon]] has pinned posts on [[user profile]]s that they support communicating and displaying across instances by extending the [[ActivityPub]] "actor" object with a "featured" property that has a URL to a collection of posts which have been pinned by that actor (author) to their profile. https://docs.joinmastodon.org/spec/activitypub/#featured
#
Loqi
ok, I added "Software Support: [[Mastodon]] has pinned posts on [[user profile]]s that they support communicating and displaying across instances by extending the [[ActivityPub]] "actor" object with a "featured" property that has a URL to a collection of posts which have been pinned by that actor (author) to their profile. https://docs.joinmastodon.org/spec/activitypub/#featured" to the "See Also" section of /pin https://indieweb.org/wiki/index.php?diff=91705&oldid=91694
#
[snarfed]
security is hard, everything has vulnerabilities, nothing is perfect. it's pretty rare that any single type of vulnerability should disqualify an entire class of systems/solutions
#
[snarfed]
(eg spectre/meltdown happened, and still exist, but we couldn't realistically throw away all of CISC or speculative execution)
#
[tantek]
exactly [snarfed]. if you're thinking about security in any absolute terms (secure/insecure), instead of measuring/estimating time, effort, layers (defense in depth) or other resources necessary (barriers being raised) to overcome, you're thinking about security in a simplistic and likely very incorrect way.
#
[tantek]
[snarfed] curious what you think of the u-pinned-of brainstorm (as noted last night in chat: https://chat.indieweb.org/dev/2023-12-29#t1703814447760500 ), and making "pinning" a property of individual posts, rather than a property of a h-feed or an h-card for that matter (the apparent path that Mastodon took with extending "actor").
#
[tantek]
they key reason for the different approach (and a URL property rather than a boolean) is posts that want to be pinned (or not) differently in different contexts (homepage, tag feed pages, perhaps archive pages,e tc.)
#
Loqi
[preview] [[tantek]] First thought is perhaps a u-pinned-on property inside h-entry that's a URL of the page the post should be pinned on if/when displayed on that page.
#
[tantek]
pretty sure aaronpk's examples (and all the rest on /pin#IndieWeb_Examples) could be represented (published) that way, so the larger question is would that work reasonably for consuming code, or be too hard to make work
#
[snarfed]
I get the idea, but we need a way to discover a given feed's pinned post from the feed itself too, right?
#
[snarfed]
otherwise you have to crawl all posts on a site to determine which posts are pinned to a given feed?
#
Soni
it's not a vulnerability
#
Soni
misplaced trust (trusting the packet headers instead of the DNS server, for example) is a vulnerability
#
Soni
even that doesn't prevent poisoning (what prevents the actual server from sending different responses to different resolvers?)
#
[tantek]
[snarfed] you say "discover" I hear link rel=pinned from a home page or tag feed page to the individual posts
Triptych joined the channel
#
[tantek]
Or, since BF works via webmention from individual post permalinks, u-pinned-of on that post permalink should be sufficient to do direct discovery
#
[tantek]
Under what BF Auser flow would you need to "crawl all the posts on a site"?
#
[tantek]
u-pinned-on* that is
#
[snarfed]
[tantek] rel=pinned works!
#
[snarfed]
I'm still curious about the consuming use case for indicating pinned on a post rather than on a feed or h-card
#
[snarfed]
per post is definitely useful _internally_, for rendering a site
#
[snarfed]
but is it useful to external consumers?
#
[snarfed]
(BF would only need to crawl all posts if it needed to discover a given feed/card's pinned posts, and that was only available per post. I definitely don't actually want to do that)
#
gRegor
interesting question, would we expect a pinned post on a feed to be pinned in a reader?
#
[snarfed]
pinned posts seem publisher-centric; readers seem user-centric
#
gRegor
Think I agree, just thought of it since you mentioned consumers
#
[snarfed]
even then, a reader would want to consume that from the h-feed
#
gRegor
yeah. I guess on an individual post right now the only consumer would be BF, so it's more of a special utility mf2 like the u-bridgy-omit-link
#
gRegor
our /pin dfn is singular post, but Mastodon at least supports multiple pinned posts. Looking for a good example I can screenshot and add
#
Soni
even DNSSEC* doesn't prevent poisoning
#
Soni
sorry
Wikomaya joined the channel
#
[snarfed]
gRegor how would BF consume pinned-of on an individual post?
#
[snarfed]
it would definitely need something per feed, but I don't see a use case per post
#
[snarfed]
(and I think single vs multiple pinned posts per feed is separate, that's doable either way)
#
gRegor
I don't know the AP side of it so maybe I'm off, but I publish a post with u-pinned-of, send a wm to BF, BF uses that property to set the pinned flag when delivering the post
#
[snarfed]
pinned in Mastodon is on the profile, not post(s). https://docs.joinmastodon.org/spec/activitypub/#featured
#
[snarfed]
(it's not in AP/AS2 at all afaik)
#
gRegor
Interesting
#
[snarfed]
which, again, makes sense for external consuming use cases
#
gRegor
Then I guess BF could add the post to that collection in the actor. But then the q becomes how to un-pin :)
#
[snarfed]
remove u-pinned-of and send another wm
#
[snarfed]
but again, when BF sees a new site, if pinned-of was per post, BF would have to crawl every post on the site to correctly know which posts are pinned where
#
[snarfed]
which isn't realistic
#
gRegor
Ah, I was only thinking this would be a feature going forward
#
[snarfed]
I guess, but that inconsistency is weird and unnecessary
#
gRegor
I mean, I didn't expect all my past notes to show up in BF when I joined
#
[snarfed]
right, but you did expect your profile to appear correctly
#
gRegor
Meaning name, photo, url?
#
[snarfed]
it's debatable, sure, but the opportunity for inconsistency seems unfortunate, and unnecessary
#
[snarfed]
links, featured image, etc
#
[snarfed]
arguably pinning is just as much a property of the feed as of the post
#
gRegor
huh, yeah, but I don't think of pinned posts as part of that
#
[snarfed]
sure. apart from mental model, maybe the more important thing is, I still don't think I've heard an actual external consuming use case for pinned on posts instead of feeds
#
[tantek]
[snarfed] gRegor sounds like y'all are figuring it out in ways that make sense
#
gRegor
[snarfed], yeah, I think we're agreeing :) I guess I'm confused though, is BF going to change so when someone signs up it federates their last X posts, and will include pinned posts if they exist?
#
[tantek]
yes Social Readers could either ignore the pinned aspect/property of posts, OR, optionally, if a Reader implements a "profile" view (which frankly I think Readers should, since we should be following people, not feeds, in the UI/UX), then it could *optionally* display the pinned posts as part of that profile view
#
[tantek]
[snarfed] there is never a reason for BF to crawl to take care of pinned posts with a u-pinned-on property. Two use-cases
#
gRegor
needs to re-read, might have confused myself with `u-pinned-on`
#
[tantek]
1 already on BF, the current (normal) user flow is, publish a post, webmention Bridgy from that post permalink. add to this: BF checks for u-pinned-on property on that post with value of the homepage of that user. if that exists, then BF adds it to the profile of that user and sends a profile update to Mastodon followers. if not, then BF checks the profile of that user to see if that post was pinned for that user previously, and if so,
#
[tantek]
removes it from the "featured" collection (from an AP/Masto perspective), and also sends a profile update to Mastodon followers.
#
[snarfed]
gRegor we're just brainstorming, I don't have any concrete BF changes planned yet
#
[tantek]
note that nowhere in that flow is there any need for BF to crawl or otherwise parse the user's h-feed etc.
#
[tantek]
2 new user on BF, sets up their profile as is their current (normal) user flow, and shows zero pinned posts. this is ok, this is expected/current behavior. if the user wants to then show/pin posts on their personal site and propagate them to Mastodon profile views, they opt-in webmention BridgyFed directly from those pinned posts as in (1)
#
[tantek]
again, no need for BF to crawl
#
[tantek]
I believe this is the simplest (both for publisher and consuming code) way to implement this with minimal markup and minimal code additions
#
[snarfed]
sure, that works. it does require additional work on those users' parts, which I expect many (most?) of them won't know to do
#
[snarfed]
vs, if pinned is a property of h-feed and/or h-card, BF can consume that automatically
#
[tantek]
if you are using BF, you already have to do "additional work" of linking to fed.bridgy from your post permalink(s) so that the webmention works. adding another u-pinned-on link is basically the same kind of step, except you only do it on pinned posts
#
[snarfed]
the effort I was thinking of is the additional webmentions for existing, already-published posts
#
[tantek]
that's already true today, if you sign up for BF, and want to federate existing, already-published posts
#
[tantek]
same effort
#
[tantek]
unless BF is now auto-federating everything in your h-feed when you sign-up?!?
#
[snarfed]
no it's not
#
[tantek]
right, so same problem/opportunity then. until BF is auto-federating everything in your h-feed when you sign-up, there is no need to worry about auto-federating already pinned posts on your home page when you sign-up
#
[tantek]
in fact it would be weird (surprising to users) if BF did one of those but not the other
#
[snarfed]
it sounds like this comes down to the difference of mental model. do you see pinned posts as a) integral to a user's profile/feed, and should always appear with that profile? or b) somewhat optional, visible if eg the user has "pushed" them via wm, or if they've been federated to your instance by another trigger
#
[snarfed]
my mental model is pretty firmly a. but I get that for you and gRegor it's more like b
#
gRegor
yeah, b for me
#
[snarfed]
I can't speak to the broader user base, but b is definitely surprising me here 🀷
#
gRegor
I basically viewed starting to use BF as if I was starting a new Twitter account, no posts in it.
#
[tantek]
exactly that gRegor++
#
Loqi
gRegor has 21 karma in this channel over the last year (88 in all channels)
#
[tantek]
[snarfed] I would argue that (b), that is, the "only subsequent actions/posts matter" mindset is exactly how ActivityPub is designed, with zero consideration for history, archives, etc.
#
[tantek]
thus I would argue all AP-based UIs/UX, like Mastodon, are also of mindset (b)
#
[snarfed]
yeah but that's arguably more due to technical limitations than user expectations or good product design
#
[tantek]
even if that's not how we think of "classic" feeds, blogs etc., where the presumption is you show up, or subscribe to a feed, and you immediately see old/recent stuff
#
[snarfed]
previous centralized networks obviously _don't_ behave like that
#
[snarfed]
which the vast majority of people are coming from
#
[tantek]
it's not "due to technical limitations" it's literally the philosophical basis of ActivityPub. it's by design
#
[snarfed]
sure, I'm happy to give you that. doesn't change the point
#
[tantek]
which was previously ActivityPump, PumpIO etc., all about pumping new things through a system, not backfilling
#
[tantek]
another piece of evidence: the fact that identity migration is a thing, and folks got working first, on Mastodon, and have not yet figured out post migration (the past)
#
[tantek]
this philosophy is pervasive in the Masto/AP-sphere (hesitate to call it "fediverse" because that seems like a broader term at this point)
#
[snarfed]
we're agreeing violently. yes that's the status quo; doesn't mean it's the best or least surprising design. it's also not universal, eg it's not necessarily the web philosophy, and BF is multi-protocol
#
[tantek]
snarfed, if you want a happy medium/compromise that involves zero additional crawling, BF could check for u-pinned-on properties only directly on posts in the user's homepage h-feed
#
[snarfed]
right, that's what I proposed earlier
#
[snarfed]
in any case, I still see a meaningful difference in mental models. I understand that you all expect and are comfortable with b. I guess I'm still not yet, it feels like an unpleasant surprise. pinned posts in my mental model (a) are just as much a part of the profile as they are standalone posts
#
[tantek]
because presumably, if a user has pinned posts on their homepage, those posts are also in their homepage h-feed, and thus should include the explicit u-pinned-on markup.
#
[tantek]
no reason for BF to bend over backwards for anything else
#
[tantek]
so I'm missing the user scenario that necessitates crawling of any sort
#
[tantek]
for either a or b
#
[snarfed]
yes, it's an ongoing brainstorm, we're evolving ideas as we go 😁
#
[snarfed]
reading pinned-on from h-entries inside an h-feed works
#
[tantek]
ok that's enough of a go ahead that I will document the brainstorm on the /pin page then
#
[snarfed]
it was largely rhetorical anyway, I don't really expect to have BF crawl any site's entire history in general
#
[snarfed]
yeah the next meaningful step is to have someone actually publish this in the wild
#
[tantek]
including the brainstorm "how to markup" and then I'll bug gRegor and aaronpk to consider experimenting with publishing the markup, since I know gRegor is a BF user, and aaronpk can then decide if he wants to implement that Masto AP "featured" collection on "actor" himself
#
[tantek]
next meaningful step is documenting the brainstorm on the wiki so we have something we can link to, to make sure we are talking about the same thing!
#
[snarfed]
it is still interesting that historical precedent of at least Mastodon and iirc Twitter, and I expect others, is to put this on the profile, not the posts. we'd be diverging from that
#
[snarfed]
which is fine, but worth noting
#
[tantek]
yes I already noted that because we have more/broader IndieWeb use-cases for pinning than the simplistic Maso/Twitter use-case of "pin means on your profile"
#
[tantek]
you can blame aaronpk for coming up with pinning posts on his tags feed pages πŸ™‚
#
[snarfed]
makes sense!
#
[tantek]
goodness how was that 7 years ago
#
Loqi
[preview] [Aaron Parecki] Day 8: Pinned Posts #100DaysOfIndieWeb
#
[schmarty]
s/blame/credit/ ✨
#
[tantek]
/ inspiration
#
[tantek]
or inspo as the kids call it
#
[tantek]
and well well well would you look at this Discourse feature request for that exact feature (pinning a post on a tag page) https://meta.discourse.org/t/pinned-posts-dont-work-on-tagged-pages/126565
#
[tantek]
pin << [[Discourse]] feature request (no support yet AFAIK) for pinning post(s) on tag pages: 2019-08-22 [https://meta.discourse.org/t/pinned-posts-dont-work-on-tagged-pages/126565 Pinned posts don't work on tagged pages]
#
Loqi
ok, I added "[[Discourse]] feature request (no support yet AFAIK) for pinning post(s) on tag pages: 2019-08-22 [https://meta.discourse.org/t/pinned-posts-dont-work-on-tagged-pages/126565 Pinned posts don't work on tagged pages]" to the "See Also" section of /pin https://indieweb.org/wiki/index.php?diff=91712&oldid=91705
AramZS, sebbu2 and bterry joined the channel
#
Soni
(also, this is what we meant by "passive activitypub poisoning" https://github.com/lexi-the-cute/block-meta-from-fedi/issues/1 )
#
Loqi
[preview] [SoniEx2] #1 Support custom responses
angelo and jacky joined the channel