#dev 2023-05-02

2023-05-02 UTC
#
[chrisbergr]
[tantek] okay. I identified "app.bsky.unspecced.getPopular" as app related.
#
[chrisbergr]
but if the param is indeed on protocol level, I'd agree with you.
#
[tantek]
anything that impacts how an "app" (whether web or native or whatever) communicates across the network or receives information *is* protocol level
#
[tantek]
and if "queryparam: 'includeNsfw'" is an app-specific setting, is that really sensible/practical to put the burden on every clientside app of any kind to make that kind of locale/law-specific determination itself?
#
[tantek]
how can a random app know what is safe or not For your Work(place)
#
[tantek]
IMO this shows exceptionally poor design by folks who have not thought through the (rather potentially dark & dire) implications of the assumptions built into an "nsfw" framing
#
[tantek]
like what, are they going to determine what "could be safe"? and leave it up to users to give feedback? or are they going to upfront only allow content that is "known" to be "safe" across all jurisdictions?
#
[tantek]
because that's how you get really dark stuff. the trivial humorous example is that's how you get any/all Winnie the Pooh references censored
#
[chrisbergr]
Do you mean the Winnie the Pooh censorship in China?
#
[chrisbergr]
Yes, by implication, of course, it would have to indicate that anything not flaged with nsfw must be safe. That can't work at all.
#
[chrisbergr]
And does not match the law, e.g. hate speech is not allowed at work in my area.
#
[tantek]
sure, that's part of my point, "For Work" is usually *more* restrictive than the local laws
bender_909 joined the channel
#
[tantek]
Bottom line, there is no such thing as "global nsfw", and if you naïvely try to create something by the intersection of all "safe" restrictions across all local laws, you will create something that is frankly, authoritarian & fascist and censors & suppresses all kinds of minorities, for example all the anti-LGBTQ laws in various US states and a handful of countries: https://en.wikipedia.org/wiki/Censorship_of_LGBT_issues
#
[chrisbergr]
So, the name of the flag is an issue. And it is an issue what everything is tagged with this flag. Do you have a suggestion how it could be implemented in a better way? As you have already described, there must be something on the protocol level.
#
[tantek]
not implementing anything of the sort would be "implemented in a better way".
#
[tantek]
my point was not "there must be something" but rather, if you attempt to put something at the protocol level, you are going to get it wrong
#
[chrisbergr]
Okay, got your argument of client side implementation wrong.
#
[tantek]
and it's too hard for any client to attempt to get it right, especially again, globally
#
IWDiscordRelay
<c​apjamesg#4492> aaronpk https://github.com/capjamesg/bsky-link-preview
#
Loqi
[preview] [capjamesg] bsky-link-preview: Generate embeddable link previews to posts on Bluesky.
#
IWDiscordRelay
<c​apjamesg#4492> It is server side
#
IWDiscordRelay
<c​apjamesg#4492> Feel free to file a PR to add mf2 if you want.
#
IWDiscordRelay
<c​apjamesg#4492> The URL validation logic is broken. I should comment that out while I put together test cases.
#
aaronpk
for example, the staging.bsky.app view of my post is https://staging.bsky.app/profile/aaronpk.com/post/3juasablkof2o
#
[tantek]
aaronpk, does it make sense as a fallback to support pruning the bsky app prefix? e.g. aaronpk.com/post/3juasablkof2o
#
[tantek]
and have that redirect to the original post on your site?
#
[tantek]
I mean if a bunch of y'all started doing it reliably and teaching users they could do it, then others would too (or else their sites would seem more "broken") and then you would no longer need bsky app gatekeeping to view those posts from those URLs
#
aaronpk
interesting
#
aaronpk
that is the next logical progression from this other post i just saw
#
aaronpk
"amazing what the last couple days on bluesky have done for me-- i quit twitter, bought a domain, found a reason to make a website (you kept going to my domain wtf)"
#
[tantek]
bsky as incentive/motivation/pressure to make an indieweb site is not something I expected
#
aaronpk
right?
#
[tantek]
maybe this is bsky folks really working hard to prove [snarfed] wrong when he said "they hate DNS"
#
aaronpk
i think i can make this work
#
aaronpk
almost done
bender_909_1 joined the channel
#
aaronpk
hahahah it works now
#
Loqi
awesome
#
[tantek]
wait, does that work for all your bsky links?
#
aaronpk
it should now
#
aaronpk
because I was already POSSEing all my bluesky posts, my website already has the URI for the post recorded as a syndication link
#
aaronpk
https://aaronparecki.com/original-of is a service that redirects to the canonical post given a syndication URL of a post
shreyanjain[m] joined the channel
#
Loqi
[preview] Aaron Parecki
#
[tantek]
what is bluesky
#
Loqi
bluesky is a project proposed by Jack Dorsey, Twitter CEO, to “develop an open and decentralized standard for social media – The goal is for Twitter to ultimately be a client of this standard.” https://indieweb.org/bluesky
#
aaronpk
so I made the aaronpk.com URL redirect to the full bluesky URI given that short post ID
#
aaronpk
then my website takes over and looks up the syndication URL
#
[tantek]
add it as a feature of your setup! https://indieweb.org/bluesky#Aaron_Parecki
#
[tantek]
aaronpk++
#
[tantek]
This is the way
#
Loqi
aaronpk has 30 karma in this channel over the last year (85 in all channels)
#
[tantek]
gives Loqi a new motivator
#
Loqi
investigates the new motivator
#
shreyanjain[m]
aaronpk: that's a really awesome way to do it
#
[tantek]
aaronpk, that's worth a blog post, which you syndicate to bsky of course
#
Loqi
[preview] [Aaron Parecki] Just added a new feature to my website's BlueSky integration: If you remove the `staging.bsky.app/profile` part of the URL from one of my BlueSky posts, it will redirect you to the canonical post on my website! Try it!
#
[tantek]
nicely done
#
[tantek]
let's see if anyone else on bsky will step-up and do the same with their domain
#
aaronpk
so far i am very pleased with how i've been able to integrate bluesky with my website
#
aaronpk
i have spent barely any time on this, and made WAY more progress with bluesky vs my activitypub integration
#
shreyanjain[m]
domain usernames are nice
#
aaronpk
tho i guess to be fair, i haven't actually implemented an atproto server like I did with activitypub
#
[tantek]
aaronpk, are they (bsky) even ready to peer with another atproto server tho?
#
shreyanjain[m]
rn it would be kinda pointless
#
shreyanjain[m]
they aren't
#
shreyanjain[m]
they say federation is arriving around next week?
#
aaronpk
Well then
#
aaronpk
I don't have to feel guilty about it then
#
shreyanjain[m]
when the time comes though i assume youve already seen snarfed's arroba: https://github.com/snarfed/arroba
#
Loqi
[preview] [snarfed] arroba: Python implementation of Bluesky PDS and AT Protocol, including repo, MST, and sync methods
#
aaronpk
Oh wow no I have not
#
Soni
you're representing protocols wrong
#
Soni
yes, they carry data, but they're not data structures
#
Soni
well, some *kinda* are (protobuf, asn.1, etc...)
#
Soni
but even then there's usually more to it than that
#
aaronpk
who are you responding to lol
#
Soni
no one in particular
#
Soni
it'd be cool if there were a framework or something for protocol research tbh
#
Soni
ah, too bad we missed it
#
Soni
also it's still funny that nobody proposes Proof of IPv4 as a serious solution to the "lack of IPv6 adoption" problem
#
Soni
we guess nuking ipv4 out of existence is too extreme a step for most ppl to be willing to take?
#
Loqi
fluffy has 2 karma in this channel over the last year (20 in all channels)
#
Loqi
[preview] [fluffy 💜] Ugh, there’s a rare but troublesome security vulnerability in Flask 2.2 which makes it so I really need to update Publ to 2.3. But there was a major API change in 2.3 which makes this update nontrivial and which also breaks compatibility with every...
#
aaronpk
wow that sounds drastic
[lifeofpablo] and hi joined the channel
#
[chrisbergr]
aaronpk, the origin-of is a great functionality of your website! And making your bsky urls work that way on your site is very clever and inspiring 🙂
#
[chrisbergr]
I just noticed that this origin-of functionality is also a build in *Syndication Links* feature. 🙂
#
[chrisbergr]
Thank you, GWG++
#
Loqi
GWG has 8 karma in this channel over the last year (63 in all channels)
#
Loqi
[preview] [dshanske] syndication-links: Add and Display Syndication Links in WordPress
[Jo], rocto and geoffo joined the channel
#
[KevinMarks]
I'd argue that you do need the equivalent of NIPSA in aggregation apis because otherwise first your mean time to penis gets very low, then gore posting becomes a game for trolls.
bterry and [Caleb_Hearth] joined the channel
#
[tantek]
[KevinMarks] how do you avoid NIPSA being used to suppress LGBTQ content then because some jurisdictions disallow it?
geoffo, IWSlackGateway, Nuve and [KevinMarks] joined the channel
#
[KevinMarks]
I was thinking mainly of imagery, rather than text
holiday_medley and [tantek] joined the channel
#
[tantek]
[KevinMarks] same thing. https://indieweb.org/Instagram#Censorship_beyond_community_guidelines IG censoring a gay kiss etc.
#
[tantek]
[manton] re: https://micro.blog/manton/18796259, when you get Bluesky distribution setup for your posts, add yourself to https://indieweb.org/bluesky#IndieWeb_Examples
#
Loqi
[preview] [manton] @aaronpk That’s cool. I may need to copy that.
[capjamesg], bret and geoffo joined the channel
[manton] joined the channel
#
[manton]
[tantek] Thanks, will do. I have it set up now so I’ll update the wiki.
geoffo joined the channel
#
[manton]
[aaronpk] Looks like I’m not storing enough data to copy your Bluesky URL trick. I’m storing the `cid` in the response, but not the `uri`. I just assumed `cid` as better to keep.
#
aaronpk
the at:// URI?
#
aaronpk
isn't that just the account ID and post ID combined? you should be able to reconstruct it
#
[manton]
Hmm. Not seeing an obvious way… At least, the post ID isn’t “contained” in the CID.
#
aaronpk
maybe i don't remember what cid is
#
aaronpk
here's what I'm storing with my posts: at://did:plc:s2koow7r6t7tozgd4slc3dsg/app.bsky.feed.post/3juasablkof2o
#
aaronpk
but everything except that last part I can reconstruct
#
[manton]
Yeah, that’s the uri. I’m only storing the cid.
#
[manton]
Example response:
#
[manton]
"uri": "at://did:plc:4w56h7fhfozctgifvjlcyaxa/app.bsky.feed.post/3jur35a5oup2p",
#
[manton]
"cid": "bafyreih6aubfi6vtwoho4gkajac5biqkfabi7x64us6bl3l4tid2lvadsu"
#
[manton]
I guess I’ll change my code to store both .
#
aaronpk
ok yea i have no idea what cid is
#
[manton]
I guess it’s meant to be a unique identifier across servers, whereas the post ID in uri doesn’t need to be.
#
[manton]
Shrug. Thanks for clarifying what you’re doing.
[schmarty] joined the channel
#
[schmarty]
I wonder if cid is a hash
Nuve and [snarfed] joined the channel
#
[snarfed]
CID is an IPLD thing, a formal standard abstract hash. https://ipld.io/glossary/#cid
#
[snarfed]
Bluesky's storage data model and linking model is all IPLD objects that reference each other by CID, specifically DAG-CBOR for data encoding/transfer
#
[snarfed]
specifically CID is a content hash, so all nodes (records, commits, MST nodes) in Bluesky repos are content addressable and identified by their CID
#
[schmarty]
Nice. Thanks, snarfed!
#
[snarfed]
the IPLD data model feels like a lot when you first jump into it, but it turns out to be not too bad, especially the subset they're using
#
[snarfed]
also the at:// URL structure is pretty strictly specified as [repo DID]/[collection]/[record key aka rkey], where rkey has to be either a TID (timestamp id, speical base32-encoded POSIX timestamp in microseconds) or occasionally a special name. https://atproto.com/specs/atp#uri-scheme , https://atproto.com/guides/data-repos#identifier-types
#
[snarfed]
their TID encoding isn't documented yet but here's code: https://github.com/snarfed/arroba/blob/main/arroba/util.py#L43-L118
#
[manton]
Great info, thanks [snarfed].
#
[snarfed]
welcome! also if you're only working at the Bluesky app level, ie the app.bsky.* XRPC methods, you should be able to ignore almost all of this ^ and just use the JSON, plus maybe cross referencing with CIDs as record ids
geoffo joined the channel
#
[manton]
I think I’m good for now. I’m now storing more info so I can better track cross-posted posts. I mostly ignore the CIDs except when uploading photos.
#
GWG
Hi, [manton]
#
GWG
Was just talking about your latlng thing yesterday
[jacky] joined the channel
#
Loqi
[preview] [Mauve 👁💜] Hey folks! Distributed.Press is venturing into the world of federated social and are working on our moderation tools. Specifically this will be on getting #WebMentions into #p2p published blogs.What sorts of tools do you wish you had for making #mode...
Nuve joined the channel
#
superkuh
Off-topic, but it's such a delight to see an html mastadon page.
#
[snarfed]
lol since it's an old 3.x instance
#
[tantek]
interesting, is cid a replacement for ipfs?
#
[tantek]
hey capjamesg, bsky.link is great, only thing it's missing is a u-url link to the original
#
[tantek]
that way if/when someone who uses bsky comes across such an embed, they can click through to the original to interact with it if that's what they want
#
[tantek]
who uses bsky.link that is
#
[tantek]
if you did that, I might patch my auto_link function to use bsky.link to wrap all bsky.app links accordingly (since clicking on a bsky.app link is a poor experience for most folks)
#
[snarfed]
[tantek] CID is a core part of IPFS, notably IPLD, the data model and storage plumbing underneath IPFS
#
[tantek]
ah good at least there's some re-use going on there
[campegg] joined the channel
#
IWDiscordRelay
<c​apjamesg#4492> I’m open to all feature requests!
#
IWDiscordRelay
<c​apjamesg#4492> If you have more suggestions, let me know so I can add them in one swoop.
#
[schmarty]
tantek: you may not like what IPLD is an acronym for 😏
#
[tantek]
[schmarty] thankfully it's too irrelevant to have a Wikipedia article (or even be mentioned in one!) so I can safely ignore what IPLD stands for 🙂
#
[snarfed]
[schmarty] eh it's just a bit of name overlap, doesn't really share many ideas, definitely not the abstract architecture astronomy
#
[tantek]
what I meant to say: IPLD is not notable per WP absence 🙃
#
[schmarty]
hmm. i don't support "inclusion on wikipedia" to be a reliable measure of relevance without at least a dozen caveats.
#
[tantek]
taking it to #indieweb-chat
#
IWDiscordRelay
<c​apjamesg#4492> https://graysky.app/ - bsky is getting client implementations...
#
capjamesg
[snarfed] I'm doing it all in JS on the fly.
#
[snarfed]
sure! I was curious to compare the results regardless of plumbing
#
capjamesg
The feed doesn't support embedded images yet.
#
[snarfed]
sorry, which, where? yours?
gRegor joined the channel
#
IWDiscordRelay
<c​apjamesg#4492> Mine, apologies.
#
IWDiscordRelay
<c​apjamesg#4492> It looks like you need to do a lookup to get it and I’m getting a bit tired.
#
[snarfed]
tomorrow!
#
IWDiscordRelay
<c​apjamesg#4492> Yes indeed!
[fluffy] joined the channel
#
Loqi
[preview] I have finally gotten around to setting up my Mastodon account.
#
Loqi
[preview] I have finally gotten around to setting up my Mastodon account.
#
[tantek]
capjamesg++ nicely done!
#
Loqi
capjamesg has 28 karma in this channel over the last year (95 in all channels)
#
[tantek]
This will make quote-posting toots much more presentable
#
capjamesg
I have seen services like this for Toots but they have more style / bells and whistles.
#
[tantek]
minimal++
#
Loqi
minimal has 1 karma over the last year
#
gRegor
capjamesg++ nice!
#
Loqi
capjamesg has 29 karma in this channel over the last year (96 in all channels)
#
gRegor
I think you want `p-author h-card` instead of just `h-card` for authorship info to parse correctly
#
gRegor
`u-url u-uid` on the permalink too
#
[capjamesg]
Will add.
#
capjamesg
gRegor Feel free to file a PR if you'd like! https://github.com/capjamesg/mf2.link
#
Loqi
[preview] [capjamesg] mf2.link: Generate embeddable links with mf2 markup for use within inline text and when sharing.
#
capjamesg
s/mf2/bsky/ if you want to modify the Bluesky link code.
[pfefferle] and geoffo joined the channel
#
[tantek]
capjamesg, could you have mf2.link handle the bsky.app links as well (redirect to bsky.link if you like)
#
[tantek]
as in "just" mf2.link/?url=
#
[tantek]
where any URL (Mastodon or bsky.app) is allowed for the url param
#
aaronpk
sounds like an HTML version of xray
#
[tantek]
HTML+mf2+CSS but yes
#
[tantek]
like what's returned "looks nice" enough to embed in an iframe
#
IWDiscordRelay
<c​apjamesg#4492> My main use case is embedding / sharing content.
#
IWDiscordRelay
<c​apjamesg#4492> ++
#
[tantek]
since it has mf2 it's *both* nice enough to embed *and* a data source
#
gRegor
capjamesg, getting a 502 error on mf2.link now
#
IWDiscordRelay
<c​apjamesg#4492> 😦
#
IWDiscordRelay
<c​apjamesg#4492> Will fix tomorrow.
#
gRegor
Submitted a PR for the mf2
#
[jacky]
looks up how people here have implemented AT support for their sites
#
IWDiscordRelay
<c​apjamesg#4492> https://github.com/capjamesg/pyatproto
#
Loqi
[preview] [capjamesg] pyatproto: A wrapper for interacting with the AT Protocol API.
#
aaronpk
what is atproto?
#
Loqi
It looks like we don't have a page for "atproto" yet. Would you like to create it? (Or just say "atproto is ____", a sentence describing the term)
#
aaronpk
what is AT Protocol?
#
Loqi
bluesky is a project proposed by Jack Dorsey, Twitter CEO, to “develop an open and decentralized standard for social media – The goal is for Twitter to ultimately be a client of this standard.” https://indieweb.org/AT_Protocol
#
aaronpk
capjamesg: add that!
#
[jacky]
oh this looks easy enough to use
#
[jacky]
could make a little syndication endpoint for my site
#
[snarfed]
tries to avoid the pedantic complaint about distinguishing the Bluesky app API from the actual AT protocol 😆
#
[snarfed]
ignore me!
#
[jacky]
ha I think that'll be needed tbh
#
IWDiscordRelay
<c​apjamesg#4492> [snarfed] it is valid.
#
[tantek]
^ new page time