#social 2018-08-12

2018-08-12 UTC
xmpp-social joined the channel
#
saranix
so it seems there really is a problem with impl requiring things that aren't part of activitypub (therefore not actually being compliant with or federating with activitypub as such). I tried simply viewing an actor on both pleroma and mastodon, and neither will accept my perfectly valid actor object. pleroma also tries to fetch host-meta and webfinger
#
saranix
further, there is no error feedback given to the user as to what it doesn't like about the actor object so I have no way to fix it without installing these softwares and reviewing debug logs I guess
#
stephank
saranix: Hmm, I haven't encountered that? At least for Mastodon, the inbox prop is required, and maybe some other props, but nothing outside spec.
#
stephank
Webfinger is a requirement for foo@bar.com type identifiers. I can search in Mastodon by actor URI, but not sure what kind of deps that has.
#
stephank
I _have_ seen _specific_ instances of Mast and Pleroma fail to find my actor, though. Or fail to post to my inbox. But I don't log as much detail, so don't yet know why.
#
saranix
the object has endpoints:[followers,following,inbox,outbox,sharedinbox], summary,name,type,id properties. mastodon doesn't webfinger, but pleroma does, using URI syntax
#
saranix
unless I'm skimming too fast the only 4 required properties are: type,id,inbox,outbox
#
saranix
even @context is a SHOULD (I added it but it didn't help)
#
aaronpk
I had the same frustrations when I was building mine
#
stephank
castling.club doesn't have an outbox, so it's not required
#
stephank
I think Mastodon at leat requires `preferredUsername`?
#
saranix
preferredUsername is a MAY. Adding it appears to have satisfied pleroma, but not mastodon
#
stephank
It'd be cool if they'd interop with the bare minimum, but I guess they just don't have the UI currently. Like, how to mention an actor that has no webfinger, just a URI?
#
stephank
But maybe you can link us your actor, so we can take a look?
#
saranix
@https://example works
#
stephank
Oh wow, haha, didn't know!
#
stephank
I'm also not sure how important `Content-Type` is in practice.
#
aaronpk
Very important in my experience
#
aaronpk
All sorts of things failed when I didn't include exactly "application/activity+json"
#
stephank
Ah, the ld+json works too in my experience. I only use activity+json for matching Accept.
#
stephank
(ld+json with profile)
#
saranix
oh durnit. testing is tricky because once it accepts the object it's cached so I can't make changes
#
saranix
hmm... I wonder if I can get away with not even using httpsigs...
#
saranix
you know what would be useful? A sitewide bulk fetch service. Not quite a shared outbox, because the requester is controlling all the semantics, not the server. e.g. POST example.com/bulk-fetch { itemCount: 25, items: [ 'user1/activity/12323','user5/activity/45454',... ] }
vasilakisfil joined the channel
#
saranix
ugh pleroma has a hard requirement for http sigs
#
nightpool[m]
mastodon documents it's requirements on https://activitypub.rocks/implementation-report/
#
saranix
nightpool: however, it does not even fetch webfinger, so something not listed there is also amiss
#
nightpool[m]
mm. not sure that's true.
#
nightpool[m]
are you sure the instance has never fetched the webfinger for that actor?
#
nightpool[m]
it could be caching it
#
saranix
never, not once
#
saranix
it just fetches the actor and stops. it fetches the actor every time I do a 'search'
#
saranix
but the UI shows '0 results'
#
saranix
from the 'search'
#
nightpool[m]
what actor is it?
#
nightpool[m]
like, can you give me a link?
#
saranix
I've been testing with a simple faker script. adding and removing fields and such. nothing works with mastodon. pleroma works but won't take a post without http sig
#
nightpool[m]
are you sure you're serving the actor with the right content-type?
#
saranix
application/json, same as pleroma, so if pleroma works with mastodon then that can't be the problem
#
nightpool[m]
nope
#
nightpool[m]
MUST present the ActivityStreams object representation in response to application/ld+json; profile="https://www.w3.org/ns/activitystreams"
#
Loqi
[Amy Guy] ActivityStreams 2.0 Terms
#
saranix
"in response to". I do.
#
saranix
you said content-type, not accept. don't confuse the 2
#
nightpool[m]
we send an Accept with atom and activity+json
#
nightpool[m]
and we use the returned content type to distinguish which of the two we got
#
nightpool[m]
also, the Accept header is the next line in the spec so
#
saranix
strange. wonder how pleroma works with mastodon then. I guess it doesn't? Because I'm literally just copying their behavior
#
nightpool[m]
i'm guessing pleroma produces the correct content-type if you include an accept header that asks for activity+json
#
saranix
no, I'm telling you, it doesn't
#
nightpool[m]
seems pretty conclusive lol
#
saranix
maybe version matters
#
saranix
anyways I changed the response to application/activity+json and no change in mastodon behavior, it still fetchs only the actor, and returns 0 results in the UI
#
nightpool[m]
can you give me the URL so I can test it?
#
stephank
Also, are you testing from live Mastodon / Pleroma instances, or something local?
#
nightpool[m]
probably just going to curl and look over it by hand.
#
saranix
grr stupid typo was causing 500 error. finally got mastodon to fetch webfinger after fetching the actor after throwing the kitchen sink in.
#
nightpool[m]
What did you add?
#
saranix
but now I'm unsure whether I want to continue to care about mastodon federation, because webfinger is anathema to AP's FYN
#
saranix
I added outbox, followers, following (I had commented them out), @context with w3id.org, and a publicKey object
#
nightpool[m]
hmm.
#
nightpool[m]
what was your context before?
#
saranix
just activitystreams
#
nightpool[m]
but it was definitely in there?
#
saranix
I can start commenting back out now that I know there was a typo
#
nightpool[m]
we only check for activitystreams context
#
nightpool[m]
ahhh, what was the typo?
#
saranix
meh, apparently it needs one of outbox,followers,following, or all 3. let's find out.
#
saranix
interesting. followers and following required but outbox not
#
nightpool
that's a bug then
#
nightpool
i'm looking at the code right now and all three of those are definitely optional
#
nightpool[m]
how are you determining what's "required"?
#
saranix
by wehter it fetches the webfinger after fetching the actor. I'm using a new fake actorid every time just in case
#
nightpool[m]
the only thing it checks before webfinger is supported_context? && expected_type?
#
nightpool[m]
and ofc preferredUsername and id.
#
nightpool[m]
because it needs those two properties to construct the webfinger url
#
nightpool[m]
it only processes the rest of the document after verifying the webfinger
#
saranix
weird. it definitely stops without followers and following
#
nightpool[m]
can you send me the document to see if I can reproduce it?
#
saranix
idk what the heck happened. I commented out just about everything and now it works
#
nightpool[m]
probably a JSON syntax error or some-such
#
saranix
*sigh* now I have to decide whether to do webfinger. I don't want to. even for just this one project. webfinger is lame
#
saranix
I don't want to do http signatures either
#
saranix
they actually aren't necessary
#
nightpool[m]
so, the reason mastodon requires webfinger is that it provides a non-ambiguous way for plain-text clients to mention actors
#
nightpool[m]
if we didn't require it, mastodon users wouldn't be able to reply or have a conversation with actors that didn't support it
#
saranix
nightpool[m]: meaning, older installations that only speak ostatus?
#
nightpool[m]
no, i mean mastodon users would be able to @ mention any users that didn't have a webfinger address
#
nightpool[m]
because mastodon is plain-text only
#
nightpool[m]
which is part of our microblogging focus
#
saranix
I still don't get it. @https://example/mention-me
#
nightpool[m]
hmm. it's possible we could support that as a fallback, but i think it would look pretty ugly to users.
#
saranix
what's even more ugly is requiring a requirement that isn't even required
#
nightpool[m]
I don't know, if you want to create a ticket with that justification it would probably generate an interesting discussion, at least.
#
nightpool[m]
Not sure what you mean. we definitely require webfinger.
#
donpdonp
even tim burners lee apologized for the look of a url. user@server.com is easier to read.
#
saranix
plus, once you have fetched the actor and they are in your address book, it should be @'Hey this is my friends name' not @nosssdklfjslfjdsf
#
nightpool[m]
that's not plain-text though, that requires additional metadata if you're just looking at the status
#
saranix
totally disagree
#
nightpool[m]
how so?
#
saranix
Here's how I know webfinger isn't really "necessary": my impl won't fetch webfingers and it'll still be able to do everything it wants. Even if I respond to webfinger, it will be merely to enable mastodon to get over itself
#
nightpool[m]
sure
#
nightpool[m]
i'm not saying webfinger is necessary in the general use case.
#
nightpool[m]
i'm saying it's required for mastodon's design and UX goals
#
saranix
and I just told you how it isn't, but ok
#
saranix
actor has preferredUsername. you can go by that.
#
saranix
although technically requiring that is a violation of activitypub too, but less offensive anyway
#
nightpool[m]
saranix: if you want to start a discussion about this on the github issue tracker, it's possible gargron would be open for discussion on falling back to @URI
#
nightpool[m]
ultimately we want to do as much as we can to interop with others and make it easier for people to interop with us
#
saranix
lol I refuse to sign up to github ;-)
#
nightpool[m]
email eugen@zeonfederated.com then
#
saranix
k
#
donpdonp
saranix: how would a system convert user@server.com into an email without webfinger?
#
donpdonp
into a url, i mean.
#
nightpool[m]
using the Mention records
#
saranix
donpdonp: first time anyone adds that contact on that server
#
nightpool[m]
AS2 is designed to be microsyntax agnostic
#
nightpool[m]
which is why we have Mention records
#
donpdonp
saranix: not sure what you mean
#
saranix
donpdonp: well it only takes once. The @foo@bar addressing scheme is literally defined by webfinger so yes you need webfinger to resolve it if that's all you have. But you can also use the AP preferredUserbane if the actor was discovered some other way first
#
nightpool[m]
you should never need to parse that syntax if you don't care about people authoring it
#
nightpool[m]
because federated statuses includes Mention records just for that reason
#
donpdonp
nightpool[m]: understood. that sounds like a different usecase. i was thinking of first-contact or bootstrapping a remote follow where only the user@server.com is known.
#
nightpool[m]
just use URIs instead
#
donpdonp
i cringe a little at @user@server.com but i can see how it evolved from twitter handles.
#
saranix
donpdonp: I hate it even more precisely because of that ;-)
#
saranix
although I'm telling myself the first @ means 'Address' not 'at' and it's helping a little
#
saranix
I still loathe using the word 'hash' to describe #. So not cool.
#
csarven
pound?
#
nightpool[m]
octothorpe
#
csarven
fragment thingy?
#
saranix
pound, number sign, or even 'channel' are acceptable
#
saranix
old irc days it was pronounced channel
#
nightpool[m]
haha
#
nightpool[m]
so it's okay if it has a platform-specific name
#
nightpool[m]
as long as it's old
#
csarven
I've learned to use different ones .. depending on context.
#
donpdonp
in a url its a fragment
#
saranix
no. it's not ok because hash actually is a totally different symbol, and always has been
#
saranix
not only that, but, for that matter, there is nothing hash about hash-tags.
#
csarven
because https://pbs.twimg.com/profile_banners/14188834/1448570914/1500x500 .. the person that was talking to didn't know how to input "#" on their keyboard.. adn i was saying "pound" over the phone. They spotted that but their UK/Irish or wahtever keyboard didn't have '#' visible. They had to use an alt of some sort.
#
nightpool[m]
1960s
#
saranix
I'd even be ok with waffle
#
saranix
or tic-tac-toe
#
saranix
nah
#
nightpool[m]
"1961 Ann. Rep. 1960 (Chicago Civil Service Comm.) A hash-mark (#) after a position means that a title has been recommended for this position that is different from the budget title."
#
saranix
I denounce the colonial oligarchies texts. No working class person ever used it that way
#
nightpool[m]
lol
#
saranix
*argh*
#
saranix
I went back to the full object, and decided to try direct messaging to see what happens, it stops after fetching the actor
#
saranix
it does a HEAD then a GET then stops
#
saranix
nightpool[m]: looks like DM is different code path. any suggestions?
timbl joined the channel
#
saranix
fun fact: pleroma requires http sigs to POST to the inbox, but allows anyone to fetch objects (posts) even if the channel is set to 'followers only' so long as you have the uri. seems though that this proves that http sigs *are* necessary unless everything is public
#
dansup
heh
#
aaronpk
WAFFLETAGS
#
aaronpk
that is the official name from now on
#
saranix
approves
#
donpdonp
waffletags https://pxlfd.me/p/donpdonp/168 #waffletag
#
dansup
heh
#
aaronpk
donpdonp: @ me
#
Loqi
[Aaron Parecki] what if they had been called #waffletags instead? @chrismessina?
#
donpdonp
what you do mean @ me
#
donpdonp
mention you in a new toot?
#
aaronpk
can you post a reply from pixelfed to that post with that photo?
#
donpdonp
ah
#
donpdonp
i cannot, pixelfed isnt federated yet :O
#
aaronpk
ohnoes
#
aaronpk
why not
#
donpdonp
its still in development
#
aaronpk
pixelfed apparently also doesn't support content negotiation or rel=alternate on links
#
aaronpk
dansup: if you add microformats, content negotiation, or a rel=alternate on your permalinks it will work better with things!
#
donpdonp
how would i respond to your post from mastodon?
#
dansup
aaronpk: Yeah, I'm planning on adding some indieweb stuff :) Each user does have an RSS feed, want to add pagination support to that and add the meta tag to profiles.
#
aaronpk
donpdonp: you shoudl see my post in mastodon if you're following me. if not, you can paste my permalink into the search bar and it should then show up
#
donpdonp
aaronpk: oh riiight
#
aaronpk
dansup: the permalinks could use some sort of structured data love
#
donpdonp
aaronpk: boom.
#
puckipedia
feeds Kroeg link into xray.p3k.app
#
puckipedia
yup that seem-- ow
#
aaronpk
uhoh what happened
#
puckipedia
text "henlo from my Psion netBookmessage sent from my Psion netBook"
#
puckipedia
html "<p>henlo from my Psion netBook</p><p>message sent from my Psion netBook</p>"
#
puckipedia
netBookmessage
#
puckipedia
aaronpk: oh fun
#
puckipedia
gives different results
#
aaronpk
whoa, what is this giant attributedTo object
#
aaronpk
i didn't know attributedTo could be an object
#
puckipedia
honestly everything can be an object
#
aaronpk
:sigh:
#
dansup
heh
#
puckipedia
I unflatten up to an arbitrary depth, any local objects or remote objects that I know to be public
#
aaronpk
heh there's no "url" property in your https://puckipedia.com/.json
#
puckipedia
correct
#
puckipedia
because, y'know, it's the same as the id
#
puckipedia
the rest is fine with it :P
#
aaronpk
i did not know that was a thing
#
aaronpk
is "id" always a URL?
#
puckipedia
yes
#
puckipedia
you can always GET ID values
#
aaronpk
where is that defined?
#
puckipedia
AP spec
#
puckipedia
"All Objects in [ActivityStreams] should have unique global identifiers. ActivityPub extends this requirement; all objects distributed by the ActivityPub protocol MUST have unique global identifiers"
#
puckipedia
" Publicly dereferencable URIs, such as HTTPS URIs, with their authority belonging to that of their originating server. (Publicly facing content SHOULD use HTTPS URIs). "
#
aaronpk
"id" is not even listed as a property on AS Object
#
puckipedia
because it isn't
#
puckipedia
it's part of JSON-LD
#
puckipedia
same as type
#
aaronpk
no wonder people want litepub
#
puckipedia
because AS2 doesn't define "id" because it's part of the spec it depends on?
timbl joined the channel
#
aaronpk
because i have to synthesize 3 different specs to figure out how to interpret any json i receive
#
puckipedia
actually nvm
#
puckipedia
In addition to having a global identifier (expressed as an absolute IRI using the id property) and an "object type" (expressed using the type property), all instances of the Object type share a common set of properties normatively defined by the Activity Vocabulary.
#
puckipedia
it's in the spec
#
aaronpk
which spec haha
#
aaronpk
anyway
#
puckipedia
the activitystreams core spec
#
aaronpk
but not activitystreams vocab lol