#social 2018-08-13

2018-08-13 UTC
#
aaronpk
anyway, you're saying that if there is no "url" then I can assume "id" can be used as a URL, according to activitypub?
#
puckipedia
yes
#
puckipedia
what else would you use
#
puckipedia
the ID is guaranteed to be dereferencable
#
aaronpk
well i wouldn't have assumed "id" is a URL at first
#
aaronpk
but that is nice
#
puckipedia
how else would you get e.g. the actor
#
aaronpk
well i also don't understand the relationship between "attributedTo" and "actor"
#
aaronpk
right now i just look for both and treat them equally
#
puckipedia
actor is for activities, attributedTo is for the rest of the objects
#
puckipedia
so if you create an object, the Create has an actor, and the e.g. Note has an attributedTo
#
aaronpk
omg whyyyy
#
puckipedia
because you can e.g. Announce a post which is attributed to someone else
#
puckipedia
and attribiutedTo, apparently, is more generic
#
aaronpk
so i should *only* be looking for actor on Announce objects?
#
puckipedia
(an object can be attributed to another object)
#
puckipedia
aaronpk: no
#
puckipedia
{type: Announce, actor: puckipedia.com, object: {type: Note, attributedTo: someoneElse, content: henlo}}
#
puckipedia
for Creates, you can consider it to be equal to the object it's holding, I guess
#
puckipedia
and for others, it's always {actor} {type}d {object}
#
aaronpk
well i'm pretty confused
#
aaronpk
anyway, the problem that actually happened with your permalinks i can fix by treating "id" as "url" if there is no "url" right?
#
puckipedia
yes
#
puckipedia
aaronpk: if you give it an Announce activity, you probably want to parse it as "{user} boosted {post}"
#
aaronpk
and also understanding that attributedTo might be an object
#
puckipedia
it can also be inverse. {type: Create, object: hxxps://puckipedia.com/asdf} is a valid object
#
puckipedia
which is what some tools will output and what litepub might just require
#
puckipedia
from what I understand
#
aaronpk
it's really hard having like 5 different ways to do everything
#
puckipedia
eh, what I do is usually create a class ActivityPubHandler { Map<String, Object> Cache; Object get(String url); }
#
puckipedia
and get() GETs the url, then recursively flattens the object, so every object is replaced with an ID string
#
puckipedia
which makes processing it 10x easier
#
aaronpk
well xray is completely stateless, it's both a web API and also a library and I don't really want to add a cache to it for a variety of reasons
#
puckipedia
I mean, like, per-thing cache
#
puckipedia
the cache doesn't have to be long lived, it's all in memory per request for me
#
aaronpk
ah yea
#
puckipedia
also allows you to easily trust same-origin inlined objects only
timbl, puckipedia, kaniini, xmpp-social, vasilakisfil, cwebber2, distopico and cdchapman joined the channel; minty-hime left the channel
#
kaniini
so, right now, mastodon has a feature where
#
kaniini
you can have foo@domain but the actual AP server is foo@mastodon.domain
#
kaniini
the way this works is by using webfinger
#
kaniini
it'd be nice to have a preferredHostname field in addition to preferredUsername
#
aaronpk
that's how https://fed.brid.gy is able to be your AP server
#
aaronpk
i don't think that's necessary for that to work?
#
kaniini
it's not, because mastodon hacks it with webfinger
#
kaniini
but pleroma is pure AP, we don't care about webfinger except to find AP links
#
aaronpk
oh you want to do it without webfinger?
#
kaniini
yes :)
#
kaniini
when you @foo@domain in pleroma, it generates that using preferredUsername + the host of the URI the AP actor is found at
#
aaronpk
AP actors always include a hostname anyway tho, can't you use that?
#
kaniini
we presently do
#
kaniini
but people want to be
#
kaniini
@foo@foo.com
#
kaniini
not @foo@mastodon.foo.com
#
kaniini
hince, preferredHostname
#
aaronpk
right, so make sure the actor is "https://foo.com/@foo"?
#
aaronpk
not mastodon.foo.com
#
kaniini
they don't want to do that :)
#
aaronpk
now i'm confused
#
kaniini
an example would be
#
kaniini
it responds with
#
kaniini
acct:Sir_Boops@sergal.org
#
kaniini
and mastodon sets up the mapping as @Sir_Boops@sergal.org
#
kaniini
pleroma does not care about the subject field
#
sknebel
.oO
#
puckipedia
hmm.
#
kaniini
and sets up the mapping as
#
kaniini
@Sir_Boops@mastodon.sergal.org
#
puckipedia
so, hm
#
sknebel
Without further authentication that the second domain is fine with that?
#
puckipedia
I don't know if preferredHostname would be the "best way" to implement this. I'm thinking about this now
#
aaronpk
yeah in any case the other domain needs a way to confirm that, otherwise it's impersonation city
#
kaniini
sknebel it is only allowed for cases where the AP server is a subdomain
#
kaniini
and the other domain responds with webfinger
#
sknebel
That's still... Iffy
#
puckipedia
sknebel: I'd consider a subdomain a sub-origin, the person controlling the main domain can always control subdomains
#
kaniini
i think depending on webfinger for this is a horrible idea
#
puckipedia
yeah
#
puckipedia
I mean. this might hook into my idea a bit
#
kaniini
i don't want to make webfinger a critical component of pleroma
#
sknebel
puckipedia: but in practice they can be run by totally different entities
#
kaniini
in pleroma if you want to, you can disable webfinger
#
kaniini
(this is not really documented, but it is possible)
#
puckipedia
sknebel: the entity owning example.com can control what is on whatever.example.com
#
puckipedia
no matter what
#
puckipedia
assuming anything else is bad form imo
#
kaniini
anyway, it would be nice to have an AP way of signalling this
#
puckipedia
kaniini: so. I've been thinking about this relative to nomadic-ish identities, I guess? did:[public key of user]:[some other id] e.g. did:AAAA[..]AAA:/status/asdf
#
aaronpk
whoever controls example.com can control whatever.example.com, but the inverse is not true, which is what this is trying to claim
#
puckipedia
you'd definitely need some kind of 'preferred host' in this case too
#
kaniini
aaronpk it proves it by forwarding webfinger
#
aaronpk
i thought you didn't want to do webfinger?
#
kaniini
aaronpk i think it would be ok to prove it by forwarding the actor URL too
#
puckipedia
mmh, wondering
#
kaniini
but the problem is
#
kaniini
then you have servers who know the actor as
#
puckipedia
oh yeahmm.
#
kaniini
and also
#
kaniini
so i think internally it is best to know the actor as http://mastodon.sergal.org/users/Sir_Boops
#
puckipedia
yes
#
kaniini
and use some sort of display hint
#
aaronpk
i think it's worth solving this in a way that it can work cross-domain too
#
aaronpk
so that things like fed.brid.gy can still work
#
kaniini
fed.brid.gy works fine with pleroma
#
kaniini
to my knowledge
#
sknebel
Through webfinger
#
puckipedia
I guess aaronpk means that you could do @example.com@example.com and it'd point to fed.brid.gy/example.com?
#
aaronpk
the goal of bridgy fed is to not have any activitypub code running on your primary domain, letting it handle all of that for you
#
puckipedia
right
#
aaronpk
but having your primary domain be the canonical identity in the fediverse
#
kaniini
sknebel pleroma does not use webfinger to validate identities at all
#
puckipedia
aaronpk: hm. adding a scope to public keys in activitypub
#
aaronpk
and also so that if you swap out bridgy fed for something else later, your identity doesn't change since it was tied to your domain
#
kaniini
quite literally, it just queries webfinger to see if there is an AP url, and that is it
#
puckipedia
so you can say "this host and this host can host objects that are signed with this key"
#
sknebel
There really shouldn't be any difference between a solution for Subdomains and for entirely different domains
#
puckipedia
(where 'signed' is "returns http signature in the response header" imo?)
#
aaronpk
which is why i'm not sure that storing the canonical account as the subdomain is the right thing
#
puckipedia
aaronpk: right, that's what my suggestion is now, the scoped keys thing
#
dansup
a wild outbox appears :D
#
puckipedia
dansup: don't forget mentions
#
aaronpk
oh that reminds me, the outbox seems to have nothing to do with server-to-server federation, correct?
#
puckipedia
nope
#
dansup
puckipedia: yup, still have some work to do for the outbox :)
#
puckipedia
also lol am I really the only one who changes `to: ["[..]Public"]` to `to: "[..]Public"`
#
aaronpk
i stubbed my outbox, then everything ended up working fine even though there are no items in mine
#
puckipedia
well, I'm not even doing it on purpose
#
aaronpk
i would have thought at least that mastodon would fetch things from your outbox when you search for an account it doesn't know about yet, solving the "why can't i see this person's toots even though it says they have 100" problem
#
puckipedia
RecursionError: maximum recursion depth exceeded in comparison
#
puckipedia
nice
#
dansup
pixelfed uses outbox to import posts of new remote users
#
dansup
the most recent 20 posts
#
puckipedia
well wh-oh
#
puckipedia
WHAT
#
puckipedia
dansup: hey hey
#
puckipedia
don't give activites and the objects the same id
#
puckipedia
nothing likes that
#
puckipedia
and will break for boosts
#
dansup
yeah, the id will contain /activity like mastodon
#
puckipedia
currently it doesn't and my frontend really doesn't like it
#
puckipedia
also haha there's like, an Image type for objects
#
puckipedia
and noone uses it
#
dansup
heh
#
puckipedia
kinda hoped pixelfed'd use it
#
kaniini
puckipedia it has limitations
#
kaniini
if you use an Image it will not show right in other software which will convert it to a Note somehow internally
#
puckipedia
ow, yeah, the mastodon conversion is bad
#
kaniini
pleroma has good support for non-note objects
#
puckipedia
yeah, same in Kroeg
#
kaniini
did you see how it renders plume articles? ;)
#
puckipedia
I haven't
#
puckipedia
kaniini: so hey. random q:
#
puckipedia
what're your opinions on e.g. `actor: ["a", "b"]`
#
kaniini
litepub disallows it
#
puckipedia
or `to: "https://www.w3.org/ns/activitystreams#Public"`
#
puckipedia
also, what about an array for attributedTo
#
puckipedia
the to thing is a thing I actually have
#
puckipedia
the attributedTo array is ... peertube iirc
#
kaniini
the to thing is fine
#
puckipedia
right
#
puckipedia
I suggest Pleroma fixes that then :P
#
puckipedia
(pretty sure that's the reason it won't federate)
#
kaniini
puckipedia ...?
#
dansup
puckipedia: I forgot to update the outbox transformer, will fix! https://github.com/pixelfed/pixelfed/blob/dev/app/Status.php#L55
#
kaniini
puckipedia what wont federate with what
#
puckipedia
kroeg to pleroma
#
kaniini
puckipedia which issue...?
#
puckipedia
the to being not-an-array?
#
kaniini
pleroma doesn't care
#
puckipedia
mm
#
puckipedia
I was pretty sure that was the limiting thing for kroeg->pleroma federation
#
kaniini
do you have an activity
#
kaniini
that i can fetch
#
kaniini
i will check it against our linter
#
Loqi
[HACKER TEEN PUCKIPEDIA 👩‍💻] henlo from my Psion netBookmessage sent from my Psion netBook
#
kaniini
ok give me a moment
#
puckipedia
the JSON is basically what you get posted, bar some slight differences (due to authentication)
#
dansup
kaniini, puckipedia: Can you fetch my actor object properly? https://pixelfed.social/dansup
#
puckipedia
ehm eek
#
puckipedia
answer: no
#
puckipedia
because I don't follow redirections
#
kaniini
dansup no
#
kaniini
https://pixelfed.social/users/dansup returns 404 when Accept: application/activity+json
#
kaniini
very bad, not litepub compliant
#
kaniini
tsk tsk
#
puckipedia
kaniini: it's actually a 302 but
#
puckipedia
also /me mumbles follower_count instead of followers -> totalItems (with empty array if required)
#
kaniini
puckipedia that is IR leak
#
kaniini
oh
#
kaniini
pixelfed
#
kaniini
lol
#
puckipedia
yeah
#
kaniini
manuallyApprovesFollowers = 0
#
kaniini
:D :D :D :D
#
dansup
ok, thanks the the feedback
#
dansup
for the*
#
puckipedia
imagine if that'd be like, 5
#
puckipedia
jkust what would happen
#
kaniini
featured should be
#
kaniini
or similar
#
puckipedia
or, well
#
kaniini
that's your own extension to the vocab ;p
#
puckipedia
kaniini: so.
#
puckipedia
technically, it'd be "http://joinmastodon.org/ns#featured": {"@id": "[..]"}
#
kaniini
no i don't want to hear your json-ld sales pitch
#
kaniini
;P
#
puckipedia
which is a pain
#
puckipedia
... but the inverse is a pain for me
#
puckipedia
and other json-ld-using implementations
#
kaniini
yeah?
#
kaniini
i was informed that URI keys with values was fine by cwebber2
#
puckipedia
yes, however
#
puckipedia
"https://example.com/ns#whatever": "asdf" gets parsed as a string "asdf"
#
puckipedia
"https://example.com/ns#whatever": {"@id": "asdf"} gets parsed as an *id* "asdf"
#
puckipedia
because objects
#
kaniini
yeah? litepub doesn't care about that :P
#
puckipedia
I guess you could put {"http://joinmastodon.org/ns#featured": {"@type": "@id"}} in the context
#
aaronpk
oh gosh, please don't make people have to dive an extra level deep just to get that string out
#
kaniini
i will make a note of it in the JSON-LD compatibility guidelines
#
kaniini
but as JSON-LD compatibility is optional, you may wind up just ignoring some extensions :P
#
puckipedia
kaniini: also like, how deep will pixelfed embed objects
#
kaniini
that's a question for dansup
#
kaniini
idk anything about pixelfed :p
#
puckipedia
s/pixelfed/litepub/
#
dansup
puckipedia: what do you mean?
#
puckipedia
freaking names
#
puckipedia
now it's a kaniini question again
#
puckipedia
:P
#
kaniini
puckipedia not deep at all. litepub requires the use of pointers URIs to do capability enforcement
#
puckipedia
but like, is it expressly defined for every property
#
puckipedia
like, can/may/may not be embedded
#
kaniini
yes, embedded objects are not allowed
#
puckipedia
mm
#
puckipedia
i guess
#
cwebber2
oh I need to catch up
#
cwebber2
hold on
#
kaniini
a litepub implementation will dereference the ID from object.id if an embedded object is supplied
#
puckipedia
that's different from "not allowed"
#
puckipedia
that's a "should not" :P
#
puckipedia
anyways, aaronpk: ^ it could happen anyways
#
kaniini
puckipedia it is not allowed for an implementation to *send* over the wire
#
kaniini
if it *receives*, then it handles it by doing the object.id thing
#
puckipedia
rubs hands
#
kaniini
and if the object is not fetchable at it's ID
#
kaniini
then the message is discarded
#
puckipedia
{"attachment": [{"id": "[..]"}]}
#
puckipedia
what now
#
puckipedia
:P
#
kaniini
it's the root object that is like that
#
kaniini
attachments are supposed to be fully defined
#
kaniini
anyway, kroeg can interop with litepub implementations or it can do crazy shit
#
kaniini
it doesn't matter to me
#
puckipedia
anyways how's the linting of the activity going?
#
cwebber2
I don't understand why preferredHostname is getting pulled in at all
#
cwebber2
imo hostname / origin stuff is very webfinger'y and same-origin'y
#
cwebber2
I've said it multiple times but I consider moving into any territory where we consider things based on their "origin" to be dangerous
#
cwebber2
anyway puckipedia is right
#
cwebber2
in that the context carries other important information
#
cwebber2
about whether or not something is a link vs a string
#
cwebber2
by leaving that out in the litepub full-uri approach, it does jeapordize json-ld backwards compatibility in some ways because you actually don't know the type
#
cwebber2
is it a string? is it a uri? you can't really figure that out anymore
#
aaronpk
considering we only care about known URL schemes, seems like matching ^http is good enough to know if it's a URL
#
cwebber2
that's another thing that's specified in the json-ld context, is type information
#
cwebber2
aaronpk: urgh
#
cwebber2
that's very... "stringly typed"
#
cwebber2
it has several problems
#
puckipedia
aaronpk: I'm totally building a gopher-hosted acitivtypub server now
#
cwebber2
it cuts us off from other interesting p2p based applications of activitypub, and
#
aaronpk
puckipedia: do it :)
#
cwebber2
stringly typed systems tend to have tons of security vulnerabilities
#
cwebber2
matching on regex? that's a nightmare
#
aaronpk
cwebber2: in practice things are gonna have to work very differently in order to actually work with alternate URL schemes so im not super concerned about that use case right now
#
puckipedia
anyways it takes like two seconds to add an @context saying "hey this extension is an id"
#
aaronpk
as long as you can do it so that the JSON doesn't end up with {"@id":"foo"} everywhere i don't really care
#
cwebber2
puckipedia++
#
Loqi
puckipedia has 11 karma over the last year
#
puckipedia
aaronpk: yup. add {"https://example.com/extension": {"@type": "@id"}} to the context
#
cwebber2
I think people are trying to escape json-ld contexts and are complexifying the ecosystem a lot :|
#
cwebber2
there's other things you want to mark with types
#
cwebber2
is something a datetime or is it just a string or what?
#
cwebber2
json doesn't give you enough system
#
puckipedia
shrug, those at least get parsed the same way
#
kaniini
there are things *you* want to mark with types, there are things where we have the type information separate
#
kaniini
anyway
#
cwebber2
puckipedia: not in my system, I conver them locally to datetime objects
#
kaniini
this isn't productive
#
cwebber2
kaniini: it is raising an important point at which we might have a break in compatibility though
#
kaniini
cwebber2 can you remove preferredUsername if you do not wish to have preferredHostname then
#
kaniini
since it only exists for @foo@bar addressing
#
kaniini
thx
#
puckipedia
meh, I'm ok with that
#
cwebber2
kaniini: not necessarily, there's another use case
#
puckipedia
but then, what would you use as @
#
puckipedia
like, @whomever as mention
#
cwebber2
though I agree it's not as critical
#
cwebber2
which is if you're setting up links in your rich text editor it gives suggestions of what the link names should be
#
kaniini
yeah? well
#
kaniini
that is all pleroma uses preferredUsername/preferredHostname for
#
puckipedia
i mean yeh pet names but
#
kaniini
but
#
kaniini
yeah
#
kaniini
expecting socialcg to care about actual users
#
kaniini
what was i thinking
#
kaniini
adds fixing this mess to the growing litepub todo
#
puckipedia
kaniini: the thing is, I don't think preferredHostname is the best way to do it, but I do think there has to be a way
#
kaniini
here's what i know
#
kaniini
your average mastodon user
#
kaniini
is not interested in typing @https://foo.com/~alice
#
kaniini
and
#
cwebber2
pump.io had a good system for this
#
kaniini
your less than average mastodon user wants to be addressed as @user@domain, not @user@mastodon.domain
#
cwebber2
the interfaces for them
#
cwebber2
and they used preferredUsername
#
cwebber2
you type @ and the interfaces would offer a suggestion for who to fill in based off of *your* contact list
#
kaniini
yes
#
kaniini
pleroma does that
#
cwebber2
and the addresses and preferredNames in there
#
kaniini
again
#
kaniini
people care about vanity
#
cwebber2
it had a dropdown
#
cwebber2
so you could select from them
#
cwebber2
you didn't have to type it
#
cwebber2
then it would complete it in markdown
#
kaniini
i giveu p
#
cwebber2
and you could just send it that way
#
puckipedia
cwebber2: that still doesn't fix the gap in finding users
#
puckipedia
and showing e.g. shorter handles in the UI
#
kaniini
people care about email-style addressing
#
kaniini
i am sorry
#
kaniini
that is the reality
#
kaniini
i get that they shouldn't, but they do
#
kaniini
also, pleroma and mastodon already have a dropdown
#
cwebber2
the UI *would* show it in the short version once you completed it...
#
puckipedia
cwebber2: no not those
#
kaniini
can you let me finish
#
puckipedia
kaniini: there's use in having @whatever@mastodon.social vs https://mastodon.social/users/whatever
#
Loqi
gore blog
#
puckipedia
ehm
#
puckipedia
s/kaniini/cwebber/
#
cwebber2
sure, go ahead
#
kaniini
this isn't about the UX experience of mapping users to URLs
#
kaniini
there is already a dropdown
#
kaniini
and you select the user
#
kaniini
and it completes it and so on
#
kaniini
this is about the @whatever@mastodon.domain vs @whatever@domain
#
kaniini
some people want to be @whatever@domain
#
kaniini
and refuse to use pleroma since it has no answer to this
#
kaniini
mastodon does this using webfinger
#
kaniini
if you want to push pleroma, and by effect, litepub into mandatorily requiring webfinger, not acknowledging this concern leads to that path
#
cwebber2
two things
#
kaniini
i do not want to do it the way mastodon does it
#
kaniini
i want to do it in a pure AP way
#
cwebber2
a) I'm not totally against this property, I'm just nervous about the increasing drive towards assuming that origins are special, which is going to bake us into some current web antipatterns... that's my reluctance there
#
kaniini
to get the @whatever@domain identifier, pleroma uses @whatever@<host part of URI of actor>
#
cwebber2
b) activitypub also does have a way to do this even in the https:// version
#
cwebber2
like so:
#
kaniini
where preferredUsername = whatever
#
cwebber2
{"to": ["https://social.example/@person"]}
#
puckipedia
now you're considering "/@[username]" special
#
csarven
<kaniini> expecting socialcg to care about actual users -- would you mind refraining from using this tone?
#
cwebber2
puckipedia: I was just using it as an example and hadn't finished
#
cwebber2
{"@id": "https://social.example/@person", "inbox": "https://ap-app.social.example/person/inbox"}
#
cwebber2
I was just saying that your inbox doesn't have to be on the same domain as your actor profile
#
cwebber2
nor does your "url"
#
aaronpk
for the sake of argument, can you consider the case where someone's personal domain is essentially delegated to an activitypub server on a different domain? that's how I was trying to set mine up at first. e.g. "aaronpk.com/aaronpk" with inbox "fed.brid.gy/inbox"
#
cwebber2
aaronpk: that's exactly what I was just arguing
#
aaronpk
makes it more obvious that there is no security tie between the two URLs by the fact that they share a domain
#
kaniini
look
#
kaniini
this is all great and good but it doesn't solve the industrial problem
#
kaniini
the problem is that mastodon allows you to use a separate *displayed* domain
#
kaniini
for the shorthand
#
kaniini
all the URLs etc they all remain the same
#
kaniini
they presently do this by returning an alternate subject in their webfinger response
#
puckipedia
looks at Profile type in AS2
#
kaniini
what i am asking
#
kaniini
and would appreciate help with
#
kaniini
is finding a way to do away with that webfinger hack
#
kaniini
while achieving the same goal
#
cwebber2
kaniini: just to be clear, in your use case: while also using webfinger/email-like addressing, right?
#
kaniini
yes
#
kaniini
if pleroma does not see a preferredUsername it just displays the URI
#
puckipedia
kaniini: would this require dynamic code on the preferred hostname?
#
kaniini
if mastodon does not, well, i do not know what it does
#
cwebber2
and also wouldn't you still have to do a webfinger-like lookup on that preferred hostname?
#
cwebber2
to make sure you really can resolve that
#
kaniini
you would, but the problem is
#
puckipedia
kaniini: it requires preferred username
#
aaronpk
wouldn't that just require the subdomain to report the actor url on the vanity domain?
#
aaronpk
s/on/of
#
kaniini
some people want the actor
#
kaniini
to be on subdomain
#
kaniini
so having a 302 to the actor would be fine for example
#
kaniini
look
#
kaniini
if it were up to me
#
puckipedia
I don't think having a 302 would be acceptable for a lot of people
#
kaniini
i wouldn't have even allowed this
#
kaniini
to begin with
#
puckipedia
like, imagine e.g. activitypub.smallcompany.com
#
kaniini
i am just trying to do this as close to "the right way" as possible
#
puckipedia
annoyingly this would require active validation
#
dansup
puckipedia: whats wrong with 302?
#
puckipedia
dansup: what if the reason you don't want an AP server on the root is because it would conflict with site contents that are already there
#
dansup
ah, I see
#
cwebber2
part of the challenge we're hitting here is a conflict between:
#
cwebber2
"build the easiest to implement federation standard that resembles the federated social web we've had since 2008"
#
cwebber2
"leave open the ability to incrementally move to more interesting things"
#
cwebber2
that's at the source of a lot of the conflicts at the moment
#
cwebber2
eg puckipedia correctly noted that I was hinting at a petnames like approach
#
kaniini
i guarantee you that if you don't give the implementors what they need they will move to a different protocol
#
kaniini
or, back to OStatus
#
cwebber2
and also whether or not we should encode type information in the context and etc
#
puckipedia
I once implemented OStatus according to spec and it didn't federate with anything lol
#
kaniini
the diaspora protocol is also attractive
#
kaniini
zot is also attractive
#
puckipedia
turns out "optional" is not that optional when all the implementations implement and expect it
#
kaniini
you can summarize it as a conflict, but these are frequently what users expect
#
kaniini
and as implementors we have to provide what users want
#
csarven
users or developers?
#
csarven
did you do a survey?
#
puckipedia
are you willing to break existing behavior? :P
#
csarven
Not to mention that the current behaviour didn't emerge out of nothing - it wasn't some armchair spec writing. There is a long history of implementation experience as well as observing and building for "actual users"
#
csarven
I find it awkward that all of that is somehow should be tossed out because of some (personal) pedantic cases.
#
puckipedia
did GNU social support the disconnect between domain and displayed host?
#
kaniini
anyway
#
cwebber2
I don't think so (but GNU Social's remote interactions weren't great either)
#
kaniini
every interaction i have in here makes me believe that adopting activitypub was a grave mistake
#
cwebber2
kaniini: so, with the workflow you're describing here
#
kaniini
i am asking for the ability to *not* depend on webfinger, and being told email addressing is stupid
#
cwebber2
trying to work it out, 1sec
#
cwebber2
{"@id": "https://social.foo.example/~person", "preferredUsername": "person", "preferredHostname": "foo.example"}
#
cwebber2
that would look like the person (as a shorthand, ignoring all the context and full uris and etc) right?
#
puckipedia
kaniini: btw, do you have any idea for a webfinger replacement for identity /discovery/ yet?
#
cwebber2
and then, what happens... if I do that and in my interface I type
#
cwebber2
@person@foo.example
#
cwebber2
what does the system do at this point?
#
cwebber2
it must know to look up
#
cwebber2
@person@social.foo.example
#
cwebber2
so how does it verify this?
#
cwebber2
does it use webfinger on that address?
#
cwebber2
or has it just "seen" someone with this preferredUsername and preferredHost before
#
cwebber2
it seems like it still needs to make a webfinger like request
#
cwebber2
otherwise it opens a security vulnerability where I can claim I'm in a place that I'm not
#
cwebber2
kaniini: am I missing something?
#
puckipedia
honestly the simplest webfinger replacment would be .well-known/activitypub?username=person -> returns the AS2 object for person@[whatever domain]
#
puckipedia
assuming .well-known usage
#
cwebber2
puckipedia: yes, that seems like that's the right answer to me
#
aaronpk
.well-known is the exact thing that we were trying to avoid by avoiding webfinger
#
cwebber2
because you're going to still need to hit a webfinger like thing on the preferredHost anyway
#
cwebber2
or else you're going to have a security vulnerability
#
aaronpk
.well-known breaks the "follow-your-nose" rule
#
kaniini
puckipedia i don't want the federation protocol to depend on webfinger
#
cwebber2
aaronpk: I agree
#
kaniini
i mean, there's a lot about AP i really like
#
cwebber2
but I don't see any way you can do this email-like addressing without doing something webfinger-like
#
puckipedia
aaronpk: I mean, everyone's usage of federated social networking so far breaks fyn
#
kaniini
it is just very frustrating to come here, and ask a question as somebody who has implemented this thing
#
kaniini
and get told that email addressing is stupid
#
cwebber2
kaniini: I'm trying to work through the example with you
#
cwebber2
could you reply to my question about the steps taken?
#
cwebber2
it would help me understand
#
puckipedia
cwebber2: the webfinger at foo.example still points to social.foo.example/~person
#
cwebber2
I didn't say email addressing was stupid fwiw, and I understand the motivation to include it... I don't want the *protocol* to depend on it, but if some applications add it as an optional feature I understand
#
cwebber2
puckipedia: ok, so webfinger is still used?
#
puckipedia
I guess?
#
cwebber2
because you have to confirm with the preferredHostname right
#
cwebber2
otherwise multiple people at multiple domains can claim they belong there
#
cwebber2
kaniini: wdyt?
#
puckipedia
I mean, some username -> ID mapping still has to happen
#
puckipedia
no matter webfinger or osmething else
#
kaniini
cwebber2 i was going to have it only allow if has the same root domain
#
cwebber2
kaniini: so let's imagine a scenario where we have something like google's appengine, where iirc a bunch of people run things on a subdomain of something google had
#
cwebber2
various usersite.foohosting.com thing
#
puckipedia
I just remembered there's a public prefix list
#
puckipedia
but yeah..
#
kaniini
that domain isn't google.com
#
kaniini
anyway
#
kaniini
i will just say that since AP does not allow this
#
kaniini
you are screwed
#
kaniini
and then those users will not use pleroma
#
kaniini
because i give up
#
kaniini
this isn't worth my time or your time
#
cwebber2
kaniini: we're workin gthorugh the problem?
#
kaniini
and in 2 years when pleroma is using diaspora protocol to federate, nobody will be surprised
#
cwebber2
wouldn't that allow *all* users who spin up an application at foohosting.com to claim they're at foohosting.com?
#
cwebber2
kaniini: have fun
#
cwebber2
I was just trying to work through it to understand the security implications
#
kaniini
i was going to require that the actor be reachable at the main domain somehow
#
kaniini
but really, it's not worth it
#
cwebber2
kaniini: ok, how is it done?
#
cwebber2
when you go to the main domain, how do you check?
#
kaniini
"alsoKnownAs": ["https://foohosting.com/~foo"]
#
kaniini
and then if https://foohosting.com/~foo has the same ID
#
kaniini
then it is allowed
#
cwebber2
kaniini: you mean if I did a GET request against that address, and got a document back with that info?
#
puckipedia
I was actually kinda surprised AS2 didn't have any predicate like that
#
cwebber2
thought we did at one point
#
cwebber2
could have been culled not sure
#
cwebber2
guess we don't, only a relationship property
#
cwebber2
whines about the issue they filed about case insenstive anchors on the as2 vocab doc never being addressed before it went to rec
#
cwebber2
annoyin
#
kaniini
cwebber2 yes
#
kaniini
but
#
kaniini
again
#
kaniini
i just need this identifier standardized
#
cwebber2
kaniini: sure, you're proposing a new workflow, so trying to understand it
#
kaniini
since W3C controls the AS2 vocabulary
#
kaniini
i am asking nicely for this
#
csarven
cwebber2: Possibly in favour of owl:sameAs or contact:preferredURI?
#
kaniini
i do not want it buried in some JSON-LD thing
#
kaniini
i want it in AS2 core vocabulary
#
cwebber2
kaniini: ok, right, all the more reason to understand the workflow :)
#
cwebber2
kaniini: so are we talking about alsoKnownAs then?
#
kaniini
we are talking about
#
cwebber2
kaniini: would it be, I fetch https://foohosting.com/~foo and have an alsoKnownAs that back-points at the other document?
#
kaniini
binding preferredHostname to a hostname mentioned in alsoKnownAs
#
kaniini
cwebber2 no
#
kaniini
cwebber2 in this case it would literally be
#
puckipedia
cwebber2: if I'm reading it properly, it'd be alsoKnownAs is just URLs, returning the same document as the main object's ID
#
kaniini
the same ID
#
kaniini
so we extend alsoKnownAs (as discussed at #300) to also be URIs that return the *same* actor
#
puckipedia
mm
#
cwebber2
kaniini: ok, though I'm trying to figure out how we get from the email addressing to there
#
cwebber2
so back to the previous example
#
kaniini
*you* don't have to worry about it
#
cwebber2
so I type @person@foo.example in my application
#
cwebber2
well I do have to worry about it if we're going to discuss standardizing it
#
kaniini
i'm back to giving up
#
kaniini
reads up on diaspora protocol that already has this feature
#
kaniini
i consider it a feature that AP does not standardize email addressing
#
kaniini
i am not even requesting an extension to AP
#
kaniini
i am requesting an extension to AS2
#
kaniini
so i fundamentally do not understand why we need to discuss email-based addressing
#
kaniini
*you* use mastodon
#
kaniini
*you* already know how this works
#
cwebber2
kaniini: I thought you were arguing earlier that email-based addressing was critical
#
kaniini
it is critical to users of pleroma
#
cwebber2
and so I assumed that was still aprt of this workflow
#
cwebber2
if it isn't then great
#
kaniini
that is not related to activitypub
#
kaniini
i just need the field
#
cwebber2
so that's why I was at that step
#
kaniini
we can figure it out from there
#
puckipedia
kaniini: you're not the only one implementing activitypub btw
#
cwebber2
if you need the field, and the CG agrees on providing it
#
cwebber2
then we need to understand how it works
#
cwebber2
we would do a very bad job of standardizing if we didn't do that, especially for something proposed for AS2 core
#
kaniini
i already explained this: it is one of the domains that appears in alsoKnownAs
#
kaniini
as a *display hint*
#
cwebber2
(which, I think Evan considers AS2 core closed anyway, we have another extension mechanism we're going to, but even there we'd want to work together to understand the flow)
#
cwebber2
kaniini: ok great, but I think we still haven't worked out the flow
#
cwebber2
having the property appear there is fine
#
cwebber2
but we need a user story explaining how this works so we can see if multiple applications can implement it
#
kaniini
mastodon already implements this
#
kaniini
with webfinger
#
cwebber2
right, using webfinger
#
cwebber2
so we're discussing how to do it without
#
kaniini
you guys don't want AP servers to become married to webfinger, right?
#
kaniini
yes/no
#
cwebber2
we don't, though it's ok for users to optionally use it
#
cwebber2
we have a way to do the domain thing you described if using non-webfinger
#
puckipedia
<puckipedia> turns out "optional" is not that optional when all the implementations implement and expect it
#
cwebber2
it's already used by bridgy fed
#
cwebber2
so I'm not sure what we need if it's not the email-style addressing
#
kaniini
it is the addressing
#
kaniini
but i don't see how it is needed
#
kaniini
to be in activitypub
#
kaniini
i just need the field
#
kaniini
or more specifically, i just need to ensure the W3C will not collide that field
#
kaniini
if i have that, i can work this out with Gargron directly
#
puckipedia
kaniini: hm, so, hear me out: {id: mastodon.example.com/~a, "alsoKnownAs": [example.com/~a], url: example.com/~a} -> use example.com
#
kaniini
puckipedia except the mastodon users will have
#
kaniini
url: mastodon.example.com/~a
#
puckipedia
mmm.
#
cwebber2
<kaniini> i just need the field
#
kaniini
they want it to go to mastodon.example.com
#
cwebber2
see, that statement sounds like "you don't need to worry about how I'll use it though to give it"
#
puckipedia
kaniini: however, if Mastodon were to implement your suggestion, they'd have to redirect example.com/~a to mastodon.example.com/~a anyways
#
cwebber2
maybe I misread though
#
puckipedia
am I not mistaken?
#
kaniini
puckipedia the admin can redirect it in their apache.conf/nginx.conf with accept activity+json
#
kaniini
just as they redirect .well-known right now
#
cwebber2
so, my understanding is:
#
cwebber2
nm I'll hold up
#
cwebber2
till you two resolve this
#
puckipedia
kaniini: mm. feels kinda icky to only redirect as2
#
kaniini
meanwhile, pleroma is failing to get users who want this mastodon feature
#
cwebber2
- we have a feature that does this as long as you are doing URI based addressing, used by bridgy fed
#
cwebber2
- so apparently this is for a way to do this via email-like addressing though
#
cwebber2
- but when we look at how to do it via email-like addressing without using webfinger, it seems like we still need something webfinger-like
#
cwebber2
but I could not understand
#
cwebber2
which is why I wanted to go through the whole flow
#
cwebber2
diaspora has something, but diaspora uses webfinger
#
puckipedia
cwebber2: also. bridgyfed still uses the webfinger thing
#
kaniini
i just want an OPTIONAL DISPLAY HINT like preferredUsername
#
kaniini
i give up
#
kaniini
it's not important
#
kaniini
"don't use webfinger", yet no help with not using webfinger
#
kaniini
thankfully i do not believe in webfinger
#
cwebber2
I'm trying to work through it!
#
kaniini
otherwise i would just do what mastodon does -_-
#
cwebber2
that's why I was trying to do the workflow
#
cwebber2
kaniini: so, willing to work with me on the workflow, top to bottom?
#
cwebber2
the good case:
#
cwebber2
in the ui:
#
cwebber2
"Hi @alice@social.example, how's it going"
#
cwebber2
but alice is actually at
#
cwebber2
so from this very step, right here, we need to select alice
#
cwebber2
question is, does it require having seen alice before
#
puckipedia
cwebber2: it uses existing :handwave: to find the purpoted ID of @alice@social.example, which then contains a referral to an URL on social.example, which redirects back to the original ID to prove ownership
#
cwebber2
puckipedia: so you must have already seen alice
#
cwebber2
correct?
#
puckipedia
no
#
puckipedia
handwaving is webfinger in this case
#
cwebber2
that's what I'm getting at
#
cwebber2
handwave seems to be webfinger here
#
puckipedia
but it could be any protocol that does this mapping
#
cwebber2
it can be any protocol, that's fine
#
cwebber2
but it's probably webfinger-like, there's some sort of step here where we need to check agains social.example for the right hting
#
kaniini
yes, we have established that pleroma will use webfinger to bootstrap it
#
kaniini
that's not the point
#
kaniini
pleroma does not actually use webfinger to do the user@domain mapping
#
kaniini
we use preferredUsername for this
#
kaniini
which is what the AP spec says to do
#
cwebber2
the AP spec doesn't say anything about preferredUsername use
#
puckipedia
well, it's heavily implied
#
cwebber2
it's implied that it's a hint, yes
#
puckipedia
cwebber2: webfinger is only used to establish that alice@social.example's ID is probably at ap.social.example/~alice
#
cwebber2
puckipedia: so the point is to do webfinger on a *different* server then?
#
puckipedia
you webfinger social.example
#
cwebber2
ok that's fine
#
cwebber2
here's why I was confused:
#
cwebber2
<kaniini> you guys don't want AP servers to become married to webfinger, right?
#
cwebber2
<kaniini> yes/no
#
cwebber2
there may be a use case for it but that statement made it sound like this was a way to make it less tied to webfinger than mastodon's use case
#
kaniini
cwebber2 if i do what mastodon does
#
kaniini
cwebber2 then pleroma becomes married to webfinger
#
kaniini
right now
#
kaniini
you can run pleroma with webfinger completely disabled
#
kaniini
(this involves going deep into the config system, but it is possible)
#
puckipedia
I don't evne have webfinger in kroeg :D
#
cwebber2
kaniini: for the c2s side you mean?
#
puckipedia
cwebber2: s2s
#
puckipedia
I assume
#
cwebber2
wait, once you go s2s it doesn't even matter
#
cwebber2
because you use to and etc
#
kaniini
pleroma s2s does not use webfinger at all
#
puckipedia
like, no @a@b anywhere
#
kaniini
this is for c2s
#
cwebber2
right ok
#
kaniini
anyway
#
kaniini
my point is
#
kaniini
right now
#
kaniini
you can run pleroma with webfinger completely disabled
#
kaniini
and get generally what you would expect with @ addressing
#
cwebber2
kaniini: using an AP c2s client with email-like addressing fields, I'm guessing?
#
cwebber2
oh, using @-addressing?
#
cwebber2
you're able to skip the webfinger step entirely?
#
kaniini
yes
#
puckipedia
well, you wouldn't be able to resolve new webfinger-style references I guess?
#
cwebber2
so what do you do for *handwave* mentioned above
#
kaniini
so
#
kaniini
what you do is
#
kaniini
you click ADD USER
#
kaniini
and then you put in the URI of the user
#
kaniini
and then it will set up a @-address for them
#
kaniini
based on preferredUsername
#
kaniini
and the domain
#
cwebber2
at that point you probably don't even need email like addressing because you could just have an email-like interface
#
cwebber2
where you enter the addresses in a to: line
#
cwebber2
but anyway
#
cwebber2
kaniini: so okay, one thing was discussing the workflow
#
kaniini
ok, yes, i agree that you could have that, but pleroma uses mastodon/gnu social APIs right now, not c2s
#
cwebber2
another thing was discussing where the property would go
#
cwebber2
kaniini: as said, we've spent the last several months going through the AS2 extension workflow
#
cwebber2
my impression is based on everything we've done is that we won't be adding new properties to core, but we'll have the XEP like extensions
#
cwebber2
so there could be a sub-namespace established for such properties if this goes through
#
kaniini
look, i don't care what the field is called
#
cwebber2
kaniini: you mean whether in the core ns or an extension?
#
kaniini
this XEP stuff scares the bejesus out of me
#
cwebber2
(including a sub-as2 namespace)
#
cwebber2
gotta go, dinner
#
saranix
I think this obsession with "email-like addressing" is wholly unhealthy. It flattens zooko's triangle into a pancake. Human-meaningful and decentralized are supposed to be 2 separate corners. To me 'My friends name' is human meaningful *NOT* 'myfriendsprefferedshortname1975'
#
nightpool[m]
mm
#
nightpool[m]
that's you, I guess.
#
nightpool[m]
people on the internet are very used to usernames.
#
puckipedia
saranix: the most difficult part here is /getting into the system/
#
saranix
directory services. a look up. hell, we *are doing a lookup anyway*. Might as well stop flatting things and breaking everything.
#
puckipedia
saranix: note, we're actually doing this
#
puckipedia
at least the undoing email like addressing
#
puckipedia
piece by piece
#
saranix
plus, I'll just add, zot. nomadic id. 'nuff said
timbl joined the channel
#
kaniini
nightpool[m] would y'all be opposed to using something like preferredHostname instead of the webfinger hack
#
saranix
+1 alsoKnownAs
#
kaniini
saranix i agree fwiw, but i also have users to satisfy
#
kaniini
some of us are actually trying our best to make use of this stuff in the real world with real people
#
kaniini
and *they* want email-like addressing
#
saranix
fwiw, if the point is to emuklate email addressing then efforts should be made to emulate it's lookup as well. MX records are a thing.
#
kaniini
we do make efforts
#
kaniini
that's not the point
#
saranix
I don't think it's true that real people in the real world *want* email addressing. I think it is that they are just stuck thinking it is the only possibility and they don't know any better (yet). Education and providing alternatives can help.
#
puckipedia
ehh
#
saranix
You also have to be careful about giving the public what they *say* they want. What they think they want is daddy corporation manufacturing a feed for them.
#
saranix
"Users don't see the connection between their choices and the pain they are feeling. I do." - RMS... possibly paraphrased wrong