#social 2017-11-15

2017-11-15 UTC
timbl and bengo joined the channel
rowan joined the channel
#
@rektide
I need to re-review Social Web Protocols (https://www.w3.org/TR/social-web-protocols/) with an eye towards whatever specs are closest to the dev-ships general common practical ReST.
(twitter.com/_/status/930633013721010176)
cdchapman, ajordan and rowan joined the channel
#
ajordan
oh btw cwebber2 I felt like I should share this with you earlier but forgot: https://cloud.strugee.net/index.php/s/jM7Exe9KkUP2fmK
#
ajordan
^^^ poem I wrote in the first couple minutes of the WG call, for the class I went to directly after the WG call :'D
#
ajordan
I'm a terrible student tbh
sknebel, xmpp-social and Loqi joined the channel
#
puckipedia
lol, my instance's view of the entire federation network https://puckipedia.com/_dumpAll (I hacked Kroeg to dump every activity in my sharedInbox into this collection)
timbl and rowan joined the channel
#
csarven
It seems like the object of as:object has to be in the payload. Is a URI permitted as the value of as:object or it must be the complete AS Object
#
puckipedia
csarven: so what's the use of as:object in a Create being a URI
#
puckipedia
because obviously it's created already
#
csarven
puckipedia: Apparenrlt i misunderstood
#
cwebber2
csarven: it's best practice for it to be part of the payload for sure
#
cwebber2
I mean, you could be "informing" people that it's created but
#
cwebber2
there's another reason you'd want to do it too: if you're signing the object, it's useful to know that yes, this specific version was the version being created
#
cwebber2
rhiaro: oh nice
#
puckipedia
cwebber2: is that actually useful information
#
cwebber2
puckipedia: which specific version is being created or "just informing it's being created"
#
puckipedia
which specific version
#
csarven
cwebber2: What's the outbox at the test suite?
#
csarven
that I can send test payloads to
#
cwebber2
csarven: currently the test suite posts to *your* outbox if you're a C2S server, but tests where you're the client ask a bunch of questions instead... having ones that fake an outbox are still on the horizon though
#
cwebber2
puckipedia: I'd say it is... say you signed a {type: Create, object: {whole object here}}
#
cwebber2
csarven: January probably
#
cwebber2
in that case, you actually know what the contents of the object were that were created and you can verify that it's a thing that was said
#
cwebber2
if you just sign {type: Create, object: <id>}
#
cwebber2
that doesn't say anything about what the contents were
#
cwebber2
someone could bait & switch you
#
csarven
I suppose I'll have to ask you folks to manually check whether ym example payload is okay before submitting a test report?
#
cwebber2
csarven: happy to do that
#
csarven
IIRC the WG ends this year?
#
puckipedia
cwebber2: "someone could bait & switch you"? so someone sends a Create, then changes the contents?
#
puckipedia
... how about those contents being signed as well
#
puckipedia
or, how about someone posts a Note containing sensitive content. someone likes that note. does that mean that you can't censor the private content without invalidating the like?
#
erincandescent
One reason for Create to be a URI is because you created an object on a third party server
#
cwebber2
you could sign it separately yes
#
erincandescent
e.g. you might have an ActivityPub connected bug tracker, which would post {type: Create, object: https://bugs.example.com/issue/2938} to your outbox
#
cwebber2
puckipedia: well, if you had a CAS backend it's not a problem, you know the like was for a specific version, *and* you can know there's a new version eventually, but not everyone is going to do that
#
puckipedia
cwebber2: now imagine that the delete/update happened between the like being signed and the like being delivered
#
puckipedia
(I still totally think signing every object separately is way more than enough)
#
erincandescent
But you also don't want to be serving up old versions of objects, e.g. they might have had data redacted intentionally or the object might have been deleted
#
cwebber2
that's true
#
cwebber2
it's way too early in the morning for me to be thinking about these things! ;)
#
puckipedia
it's 15:42 somewhere in the world :P
#
cwebber2
good points anyway, I'm stepping away for shower + breakfast
rowan joined the channel
#
csarven
How much of the object that's to be Created needs to use AS2 as per AP spec?
#
puckipedia
effectively? nothing, I think
#
puckipedia
at least, I am 90% sure that Kroeg could Create an empty object
#
puckipedia
but I would suggest audience (to/bto/cc/bcc) and type to at least be something that's AS-y
#
puckipedia
you can even have non-AS2 Activities
#
csarven
I'm creating an annotation
#
csarven
I don't think to/bto/cc/bcc are relevant
#
puckipedia
I use to/cc to determine who can see the object
#
csarven
There is no constraint on that at the moment
#
rhiaro
to/bto/cc/bcc are for the client to instruct the server on how to access control the post
#
csarven
ie. "attention" is to anyone that can access the resource
#
rhiaro
not sure what the default server behaviour is if that's missing altogether. Probably to make it completely private
#
csarven
Which URI do you use to indicate "Anyone"?
#
rhiaro
otherwise you can address to as:Public
#
puckipedia
csarven: as:Public / Public / https://www.w3.org/ns/activitystreams#Public
#
puckipedia
rhiaro: mine makes it entirely private, *except* if it's in a collection, then the owner of that collection can view it
#
csarven
You mean 'to': { 'type': 'Public' } ?
#
puckipedia
(and I need to check if I do access control if you POST something into a collection)
#
puckipedia
csarven: "to": "Public"
#
csarven
That's weird
#
puckipedia
it's mostly a JSON-LD thingy
#
csarven
so the range is a class as oppoosed to a thing?
#
csarven
an instance i Mean
#
puckipedia
range?
#
csarven
expected/allowed value for 'to'
#
puckipedia
just IDs / URIs
#
puckipedia
it's defined as a fake Collection inside AP
#
puckipedia
JSON-LD just kinda turns https://www.w3.org/ns/activitystreams#Public into as:Public
#
csarven
https://www.w3.org/TR/activitystreams-vocabulary/#dfn-to says as:Object .. and I take it that as:Public is added by AP
#
csarven
Object|Link
#
rhiaro
so you can infer that as:Public is an object from that, if you're inferring things
#
rhiaro
no reason why not
#
rhiaro
it doesn't say it's not
rowan joined the channel
#
rhiaro
tis an 'individual'
#
rhiaro
I think that's the LD terminology for these things
#
csarven
alright, i can add that i guess
#
erincandescent
Shame we couldn't have made it an urn
#
@kevinmarks
#FHIRdevdays17 @GrahameGrieve: Kevin provided a link to Websub https://www.w3.org/TR/websub/ - we should look at it to see how it maps
(twitter.com/_/status/930816265576501248)
#
xmpp-social
[ajordan] erincandescent: why isn't a URL not good enough? Just curious
#
csarven
erincandescent: why
#
erincandescent
Because its a non-dereferencable resource
#
erincandescent
It names a concept not an actual thing
#
rhiaro
80% of RDF is concepts not things :p
#
rhiaro
mutters something about httprange14 and goes for a walk
#
erincandescent
Most RDF concepts named with URLs are types, though
#
rhiaro
I mean if we can have http://www.w3.org/2006/time#Wednesday we can have as:Public
#
erincandescent
Also more so its because its the one https URI which is a special case
#
rhiaro
maybe special for AP but in the grand scheme of LD it's normal
#
csarven
URN doesn't mean that it can't be resolved. They are just not required or expected to "globally"
#
erincandescent
Its more that if it was a special urn (or other uri scheme) then software which foolishly attempted to deliver to it would automatically fall over :p
#
rhiaro
and as:Public resolves to a description of it (where the description is a link to the bit of the AP spec which describes it)
#
xmpp-social
[ajordan] *sits back, gets some popcorn and watches the bikeshedding*
#
csarven
erincandescent: A system shouldn't be foolishly sending stuff to whatever is att the end of as:to. The point there as I understand it is that, if your system acknowledges that particular value, it can deliver to it.
#
rhiaro
the spec says that a server must try to deliver to things in to
#
rhiaro
not sure what 'acknowledges that particular value' means
#
csarven
What does it do with 'to': 'Public' ?
#
erincandescent
csarven: ActivityPub says to attempt to deliver to objects with https URIs in the audience properties, except for special value as:Public
#
rhiaro
and even if it did try to deliver, it just sends one post request and nothing else happens. Not the worst thing ever seen in the web.
#
rhiaro
I mean, I don't think the w3c ns does anything hilarious if you post to it
#
rhiaro
but should probably find out
#
erincandescent
Well it'll do a GET request to look up as:Public as an application/ld+json object first :p
#
csarven
it connects to timbl's pond computer and dispatches a message to every connected computer out there
#
rhiaro
erincandescent: oh yeah
#
erincandescent
Which I assume will get the context returned to it
#
rhiaro
and then it won't find an outbox
#
rhiaro
and the cycle ends
#
rhiaro
some wasted effort I guess but hopefully not server-crashingly bad
#
erincandescent
If you wanted to be crazy you could actually define as:Public in the context :p
#
rhiaro
as:Public *is* in the context..
#
rhiaro
that's not crazy
#
rhiaro
it needs it for expansion
#
erincandescent
Its defined as an LD term, but not as a LD object
#
rhiaro
oh okay
#
erincandescent
@graph [{id: as:Public, type: ???}]
#
rhiaro
we could rig a w3c server to email anything sent there to everyone we don't like
#
csarven
In my notifications, as:to points to the article's URL that was annotated
#
csarven
But i think i'll be using that as part of the Create activity as opposed to the object description (As discussed earlier re to/cc..)
#
ajordan
rhiaro++ for being an evil genius :P
#
Loqi
rhiaro has 164 karma in this channel (286 overall)
cdchapman joined the channel
#
csarven
This @graph not being allowde really restricts things
#
csarven
It is not that I want @graph but existing libraries use it when transformed from non-JSON-LD RDF
#
csarven
hmm no, that's not th case..
#
csarven
now I'm confused. where the heck did i see graph
#
rhiaro
it'll probably generate @graph by default if there's more than one subject
#
rhiaro
but if there's only one it won't
#
rhiaro
I dunno your lib though
#
rhiaro
might be able to work around it with framing if it's implemented
#
csarven
On disk, it is in HTML+RDFa
#
csarven
mayktso is transforming based on rdf-ext parsers
#
rhiaro
error
#
rhiaro
what changed
#
csarven
that's what i'm pizzled about
#
csarven
i think it was at distiller
#
csarven
that showed graph
#
csarven
but that content does have different sbjects
#
rhiaro
compaction algo puts it in a graph I think
#
rhiaro
that looks expanded
#
csarven
so in the form of [{}, {}..]
#
csarven
Spaking of which, is expanded okay for AP outbox?
#
csarven
that's what dokieli will send
#
csarven
What you see there will be value of as:object
#
rhiaro
I think @graph comes out of flattening, reading the jsonld spec
#
rhiaro
or.. flattening AND compacting together
#
csarven
So, AS2 and AP combined.. just constraints to the most basic thing and anything 'fancy' is no good
#
csarven
Vritualy no one is hand coding this, and it is bunch of scripts converting stuff.. so the restrictions make no sense to me right now
#
rhiaro
yeah but we're supposed to be accommodating people without rdf libraries
#
rhiaro
who are just processing plain json
#
csarven
in fact, to have it work, one has to write even more code to hack it up
#
rhiaro
so they're definitely not compacting
#
csarven
AP uses JSON-LD no?
#
rhiaro
though cwebber2 implemented JSON-LD himself, and I think puckipedia did too?
#
rhiaro
re: nobody is hand coding :p
#
csarven
I meant that the constraint is on a subset of JSON-LD
#
rhiaro
if you have a lib that does json-ld framing you should just be able to write a frame and have it do the nesting for you
#
rhiaro
if there's no nesting then it should work out okay with just compaction
#
csarven
that's exactly it. that's all sorts of work that I don't want todo
rowan joined the channel
#
csarven
because a simple from/to JSON-LD parser will keep things isomor[hic
#
csarven
any way
#
csarven
THat ship sailed
#
cwebber2
csarven: the goal is to uphold two things simultaneously: that json-mindset users are able to work with data, and graph people are able to work with data (and in fact, the json-mindset users will be able to get some of the robustness of having unambiguous terms without much thinking about it)
#
cwebber2
the alternative for AP's sake would have been not "triples only without framing" but "no graph at all" :)
#
cwebber2
indeed you can see that the biggest current user of AP at this point came from a REST+JSON'ish type background. Here at least we were able to bridge that divide with linked data... that wouldn't have happened if we went "graph soup only".
#
cwebber2
I don't mean graph soup disparagingly because it's indeed really what the world boils down to :)
#
cwebber2
so anyway, I think we struck the right balance with AP / AS2 by choosing json-ld.
#
csarven
hmm, hang on.. I think the as:object is all oa:Annotation stuff, so since that's not in the AS2 land, can it just stay as is? Bcecause right now, I'm going to take as:Create with some other as stuff (and sure we can have that in compact) and then the as:object will just include whatever is there. would that be valid?
#
cwebber2
csarven: I'm lost... can you pastebin an example?
#
csarven
Have a look at curl -iLH'Accept: application/ld+json' https://linkedresearch.org/annotation/csarven.ca/dokieli-rww/b6738766-3ce5-4054-96a9-ced7f05b439f -- that will be the valu of as:object
#
csarven
and as:Create will be wrapped around that
#
cwebber2
so first of all, I recommend you compact to the activitystreams context
#
cwebber2
you are using schema.org/name not activitystreams anyway
#
csarven
[15:58:44] <csarven> How much of the object that's to be Created needs to use AS2 as per AP spec?
#
cwebber2
csarven: AP the protocol doesn't require it
#
cwebber2
though for the AP terms of Create, etc, I do recommend including and compacting to the as2 context so that a json-minimal server will know what Create is
rowan joined the channel
#
csarven
Does AS2 forbid using other vocabs (contexts) alongside? (I think not)
#
cwebber2
it doesn't
#
cwebber2
you can certainly do so
#
csarven
I'm strictly talkiung about the objct value there, not hte activity (Create0
#
cwebber2
yeah it should be fine, though!
#
csarven
okie dokie
#
cwebber2
you may want to do separate Creates for these
#
csarven
now we are getting somewhere
#
cwebber2
I don't think the spec requires it
#
csarven
ahhh.. why
#
cwebber2
but probably many implementations expect it, at present
#
csarven
I don't think there is a single consumer out there that receives oa:Annotation at an as:outbox :)
#
csarven
server/consumer
#
cwebber2
you mean at an as:inbox :)
#
bigbluehat
...as much as I'd love to fix that...csarven is probably right...
#
cwebber2
csarven: I bet Kroeg could
#
cwebber2
puckipedia's server
#
csarven
Firs tthing first.. if i'm not breaking rules, then we are good to go.
#
cwebber2
I think Pubstrate would (and I need to double check) accept it but treat it as a vanilla Object
#
csarven
otherwise there is an interop gap in the specs
#
cwebber2
yes, Pubstrate would accept it, looking at it
#
cwebber2
it wouldn't accept an activity it didn't know
#
cwebber2
but it would accept a create of an object it didn't know
#
cwebber2
because it expects it would have to handle the side effect for the wrapping activity
#
cwebber2
csarven: you're right that the spec doesn't prevent that though
#
cwebber2
re: multiple objects at once
#
cwebber2
and indeed we defer to AS2, which its example of the "object" property includes an example where multiple values are given
#
csarven
Incoming long URL:
#
csarven
org%2Fdc%2Fterms%2Frights%22%3A%7B%22%40id%22%3A%22https%3A%2F%2Fcreativecommons.org%2Flicenses%2Fby%2F4.0%2F%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23canonical%22%3A%7B%22%40id%22%3A%22urn%3Auuid%3A48355bb0-0afd-4f73-9a18-f1e8b6fb415b%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23hasTarget%22%3A%7B%22%40id%22%3A%22http%3A%2F%2Fcsarven.ca%2Fdokieli-rww%23abstract%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23hasBody%22%3A%7B%22%40id%22%3A%22https%3A
#
csarven
3A%22en%22%2C%22%40value%22%3A%22Sarven%20Capadisli%20replies%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23motivatedBy%22%3A%7B%22%40id%22%3A%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23replying%22%7D%2C%22http%3A%2F%2Fschema.org%2Fcreator%22%3A%7B%22%40id%22%3A%22http%3A%2F%2Fcsarven.ca%2F%23i%22%7D%2C%22http%3A%2F%2Fschema.org%2FdatePublished%22%3A%7B%22%40language%22%3A%22en%22%2C%22%40value%22%3A%222017-04-15T21%3A24%3A58.293Z%22%7D%2C%22http%3A%2F%2Fpurl.
#
csarven
%2F%2Flinkedresearch.org%2Fannotation%2Fcsarven.ca%2Fdokieli-rww%2Fb6738766-3ce5-4054-96a9-ced7f05b439f%23note-b6738766-3ce5-4054-96a9-ced7f05b439f%22%7D%7D%2C%7B%22%40id%22%3A%22http%3A%2F%2Fcsarven.ca%2F%23i%22%2C%22%40type%22%3A%5B%22http%3A%2F%2Fschema.org%2FPerson%22%5D%2C%22http%3A%2F%2Fschema.org%2Fimage%22%3A%7B%22%40id%22%3A%22http%3A%2F%2Fcsarven.ca%2Fmedia%2Fimages%2Fsarven-capadisli.jpg%22%7D%2C%22http%3A%2F%2Fschema.org%2Furl%22%3A%7B%22%40id%
#
csarven
2Fwww.w3.org%2Fns%2Foa%23hasSelector%22%3A%7B%22%40id%22%3A%22https%3A%2F%2Flinkedresearch.org%2Fannotation%2Fcsarven.ca%2Fdokieli-rww%2Fb6738766-3ce5-4054-96a9-ced7f05b439f%23fragment-selector%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23renderedVia%22%3A%7B%22%40id%22%3A%22https%3A%2F%2Fdokie.li%2F%22%7D%7D%2C%7B%22%40id%22%3A%22https%3A%2F%2Flinkedresearch.org%2Fannotation%2Fcsarven.ca%2Fdokieli-rww%2Fb6738766-3ce5-4054-96a9-ced7f05b439f%23fragment-
#
csarven
22%3A%22http%3A%2F%2Fcsarven.ca%2F%22%7D%2C%22http%3A%2F%2Fschema.org%2Fname%22%3A%7B%22%40language%22%3A%22en%22%2C%22%40value%22%3A%22Sarven%20Capadisli%22%7D%7D%2C%7B%22%40id%22%3A%22http%3A%2F%2Fcsarven.ca%2Fdokieli-rww%23abstract%22%2C%22%40type%22%3A%5B%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23SpecificResource%22%5D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23hasSource%22%3A%7B%22%40id%22%3A%22http%3A%2F%2Fcsarven.ca%2Fdokieli-rww%22%7D%2C%22http%3A%2F%
#
csarven
selector%22%2C%22%40type%22%3A%5B%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23FragmentSelector%22%5D%2C%22http%3A%2F%2Fpurl.org%2Fdc%2Fterms%2FconformsTo%22%3A%7B%22%40id%22%3A%22https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc3987%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23value%22%3A%7B%22%40type%22%3A%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23PlainLiteral%22%2C%22%40value%22%3A%22%23abstract%22%7D%2C%22http%3A%2F%2Fwww.w3.org
#
csarven
%2Fns%2Foa%23refinedBy%22%3A%7B%22%40id%22%3A%22https%3A%2F%2Flinkedresearch.org%2Fannotation%2Fcsarven.ca%2Fdokieli-rww%2Fb6738766-3ce5-4054-96a9-ced7f05b439f%23text-quote-selector%22%7D%7D%2C%7B%22%40id%22%3A%22https%3A%2F%2Flinkedresearch.org%2Fannotation%2Fcsarven.ca%2Fdokieli-rww%2Fb6738766-3ce5-4054-96a9-ced7f05b439f%23text-quote-selector%22%2C%22%40type%22%3A%5B%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23TextQuoteSelector%22%5D%2C%22http%3A%2F%2Fwww.w3.
#
csarven
org%2Fns%2Foa%23prefix%22%3A%7B%22%40language%22%3A%22en%22%2C%22%40value%22%3A%22rchitecture%20and%20implementation%2C%20%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23exact%22%3A%7B%22%40language%22%3A%22en%22%2C%22%40value%22%3A%22demonstrating%20advanced%20document%20authoring%20and%20interaction%20without%20a%20single%20point%20of%20control%22%7D%2C%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23suffix%22%3A%7B%22%40language%22%3A%22en%22%2C%22%40value%22%3A%
#
csarven
22.%20Such%20an%20environment%20provides%20t%22%7D%7D%2C%7B%22%40id%22%3A%22https%3A%2F%2Flinkedresearch.org%2Fannotation%2Fcsarven.ca%2Fdokieli-rww%2Fb6738766-3ce5-4054-96a9-ced7f05b439f%23note-b6738766-3ce5-4054-96a9-ced7f05b439f%22%2C%22http%3A%2F%2Fschema.org%2Fname%22%3A%7B%22%40language%22%3A%22en%22%2C%22%40value%22%3A%22Note%22%7D%2C%22http%3A%2F%2Fpurl.org%2Fdc%2Fterms%2Frights%22%3A%7B%22%40id%22%3A%22https%3A%2F%2Fcreativecommons.org%2Flicenses%
#
csarven
2Fby%2F4.0%2F%22%7D%2C%22%40type%22%3A%5B%22http%3A%2F%2Fwww.w3.org%2Fns%2Foa%23TextualBody%22%5D%2C%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23value%22%3A%7B%22%40type%22%3A%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23HTML%22%2C%22%40value%22%3A%22What%20are%20you%20trying%20to%20tell%20me%3F%20That%20I%20can%20dodge%20bullets%3F%22%7D%2C%22http%3A%2F%2Fschema.org%2Fdescription%22%3A%7B%22%40type%22%3A%22http%3A%2F%2Fwww.w3.
#
csarven
org%2F1999%2F02%2F22-rdf-syntax-ns%23HTML%22%2C%22%40value%22%3A%22What%20are%20you%20trying%20to%20tell%20me%3F%20That%20I%20can%20dodge%20bullets%3F%22%7D%7D%5D%7D&frame=%7B%7D&context=%7B%7D
#
csarven
So, that probably cut off for you all?
#
csarven
Couldn't get a short URL on that
#
cwebber2
you weren't kidding
#
cwebber2
csarven: could you pastebin it instead
#
cwebber2
it's line-wrapped
#
cwebber2
or at least
#
cwebber2
what are you linking it for
tantek joined the channel
#
csarven
So, is that valid 1) AS2 2) valid payload for AP outbox?
#
tantek
checks logs and sees a bunch of URL encoded spew wtf
#
csarven
tantek that's a label intended to be read (out loud) by humans
#
csarven
preferably in meetings
#
tantek
csarven ?
#
tantek
sees 0 people on the SWICG Mumble server, assumes call is over
#
ajordan
tantek: no call today
#
tantek
thanks ajordan
#
ajordan
btw congrats on the Quantum release!!
#
ajordan
"yoo omg I updated Firefox and it is SO FAST WTF - this update is all I've been waiting for to stick with Firefox" - my friend
#
csarven
uses Firefox Nightly so he diesn't understand the Quantum stuff
#
ajordan
csarven: same lol
#
tantek
csarven - you've been living it for a while then, and perhaps saw the speed increase gradually
#
csarven
certainly!
#
ajordan
though it's been unstable for me recently, maybe cause of e14smulti :/
#
ajordan
been meaning to report a bug but it's not reproducible UGH
#
tantek
edits the home page
#
ajordan
tantek++
#
Loqi
tantek has 74 karma in this channel (401 overall)
#
ajordan
alright real question is, is it worth hacking on my Webmention implementation for 7 minutes before I go to lunch
#
tantek
yes of course
#
ajordan
can't argue with that logic!
#
tantek
Draft agenda for next week up: https://www.w3.org/wiki/Socialwg/2017-11-21 please add as necessary!
timbl joined the channel
#
tantek
ajordan, are you working on sending or receiving?
#
ajordan
sending
#
ajordan
I receive via webmention.io
#
tantek
nice. so do I
#
ajordan
this is the implementation I mentioned yesterday, I *think* you were on the call at the time?
#
tantek
ajordan, do you support posting RSVPs?
#
tantek
yes I was
#
ajordan
generally? or via Micropub?
#
tantek
generally, like at your website with a permalink
#
ajordan
I build my site statically out of Markdown so in principal I can do any type of markup (that's how I RSVP'd to IndieWebCamp in June, I just manually wrote an RSVP)
#
ajordan
so yes
#
ajordan
it ended up on my blog though which was a little wird
#
ajordan
s/wird/weird/
#
ajordan
my site actually has relatively primitive IndieWeb support for me being in this group lol
#
tantek
ajordan cool! when you want to try sending a webmention, you can try RSVPing to today's HWC SF (even if the answer is "no" :) ) http://tantek.com/2017/319/e1/homebrew-website-club and you should see it show up very quickly there at the bottom
#
Loqi
Homebrew Website Club SF
#
ajordan
sounds great!
#
ajordan
I probably won't ship today though. _maybe_?
#
ajordan
lol the core has worked great for a while now, it's just polish stuff at this point
#
ajordan
a decent logging story and also not throwing Errors in the middle of requests and crashing Node
#
ajordan
although I _could_ just run it on localhost and send Webmentions anyway...
#
puckipedia
<rhiaro> though cwebber2 implemented JSON-LD himself, and I think puckipedia did too? <- I have, lol
#
puckipedia
csarven: my suggestion is to only Create a single object at a time
#
csarven
That's vague
#
puckipedia
also there's no as:actor on the as:Create
#
csarven
the 'object' makes sense as a whole
#
csarven
individual statements could just as well be objects, but why bother
#
csarven
Sure.. only wanted to show type Create and object
#
puckipedia
oh and the note fragment thingy
#
csarven
the primary object that's being created is the annotation (a note if you will)
#
csarven
the rest is descriptions based off that
#
csarven
But I'd like to understand why create single objects at a time
#
csarven
and whether that's a requirement
#
puckipedia
so technically, it isn't -- but the spec is ambiguous enough that, I think, every single implementation only supports a single object
#
puckipedia
and somehow I feel like you aren't creating your schema:Person every single time
#
csarven
Obviously not
#
csarven
again, the 'object' is about the annotation
#
puckipedia
then only as:Create that object
#
csarven
dissecting that into groups of statements centered around a subject is arbitrary i find
#
csarven
it has references ot parts that would need to exist somewhere
#
csarven
like the note itself
#
csarven
Can't simply remodel Annotation into AS
#
puckipedia
well, there's no requirement t hat you as:Create every single object. as:Create just notifies everyone that you created it (in s2s, in c2s it does store it as well)
#
csarven
if implementations only wish to support a single object for create, that's their call right?
#
csarven
the spec doesn't prevent multiple objects as I understand it
#
rhiaro
one of the triples in there is <> as:object <http://csarven.ca/#i>. Is that right?
#
csarven
doesn't seem right.. where at?
#
rhiaro
where <> is the Create, so semantically that means you created <http://csarven.ca/#i>
#
rhiaro
that's what puckipedia is saying
#
puckipedia
^ that's what I mentioned as well
#
rhiaro
the object value is a list
#
rhiaro
of things, including <http://csarven.ca/#i>
#
csarven
I think the example is wrong
#
csarven
basically i want that whole thing to be 'the' object
#
csarven
The array with multiple objects
timbl and distopico joined the channel
#
csarven
have to re nest that object starting with the annotation as root
#
csarven
Updated example
#
csarven
Are we good with that?
#
puckipedia
yep, though you can replace @id with id and @type with type - AS defines those aliases
#
csarven
using libs here to convert, not handcoding
#
csarven
i could postprocess.. but not sure what the gain is
#
puckipedia
ehm, why isn't your JSON-LD doing the above
#
puckipedia
it /should/ do the above
#
csarven
my lib gives me expanded
#
csarven
and i'm gong to process that to do the nesting
#
puckipedia
compact it with the @context?
#
csarven
Source is HTML+RDFa
#
csarven
I'm not sure I get a choice on the output unfortunately
#
csarven
hmm apparently it is there on a lower layer somewhere
timbl joined the channel
#
tantek
!tell ajordan were you able to get your RSVP post to automatically send a Webmention?
#
Loqi
Ok, I'll tell them that when I see them next
rowan and bengo joined the channel
#
xmpp-social
[ajordan] tantek: haven't posted it yet
#
xmpp-social
[ajordan] I just got out of class and now I have a meeting about doing some research in the spring :-)
#
Loqi
[Manuel Ortega] I'll be showcasing a mini #ActivityPub implementation in #Ruby during the November Ruby meeting in #Madrid http://www.madridrb.com/topics/mini-implementacion-de-activitypub-en-ruby-567 Here the code https://github.com/ortegacmanuel/hanatachi/blob/mas...
#
puckipedia
and I can client-side render emojis :)
tantek joined the channel
#
ajordan
lol alright tantek
#
Loqi
ajordan: tantek left you a message 1 hour, 29 minutes ago: were you able to get your RSVP post to automatically send a Webmention?
#
ajordan
I want to take a nap but I'm gonna try RSVP'ing before I do, just for you
#
tantek
woohoo!
#
Loqi
giggles
#
ajordan
alright, post deployed to production and I added some logging so I can actually see what's going on
#
ajordan
here goes nothin!
#
ajordan
lol I was like "GitHub has a Webmention endpoint????" and then realized my log message was misleading
#
ajordan
tantek: weird, it *definitely* sent (according to my logs) from the permalink to the right post, but I don't see it live on your website
#
ajordan
do you show rsvp nos? do you show mentions with no profile picture (I think my post pages don't have my full h-card)
#
ajordan
oh yikes I don't link to my profile picture *anywhere*
rowan_, bengo and tantek joined the channel
#
tantek
ajordan yes I show "no" RSVPs
#
tantek
pretty sure I saved an example of one that got lots of nos
#
tantek
it should work even without a profile pic
#
tantek
ajordan what was the URL?
timbl joined the channel
#
bengo
started federated conversation with @cwebber2 about the ActivityPub features at risk and which people can implement before next week (cc puckipedia )
#
cwebber2
federated pastebinnnnn
#
puckipedia
cwebber2: server:security-considerations:sanitize-fields, shouldn't that be client?
#
cwebber2
puckipedia: yes, you're right
#
cwebber2
I have a local TODO to switch it over ;)
#
puckipedia
anyways, I am working on ticking most of the No/(N/A) items to Yes :P
#
cwebber2
I guess I could do it now but I also need to update the test suite
#
cwebber2
puckipedia: :D :D :D
#
cwebber2
is also working on flipping as many of theirs to yes as possible! currently working on inbox:delivery:deliver-to-collection:recursively
#
puckipedia
server:security-considerations:do-not-post-to-localhost done
#
cwebber2
puckipedia: nice :D
#
cwebber2
puckipedia: you want to file an issue with all these updates or want me to flip 'em as you go?
#
puckipedia
the client tags, in order of page, yes/yes/yes/yes/(can't do Add/Remove)/yes/no/no/yes
#
puckipedia
so, ehm, do I add a quick "add to collection/remove from collection" thingy - yes I do
#
cwebber2
puckipedia: sounds like you're doing a bunch at once... when you feel like it, wanna open an issue with a list of ones to flip from no -> yes?
#
cwebber2
and ty ty ty ty ty ty
#
puckipedia
sounds good :P
#
puckipedia
also quick question: what *does* count for the filtering malicious content? :P
#
puckipedia
because Kroeg is trying to be as generic as possible...
#
puckipedia
it's easy enough to hook something into Kroeg to filter spam
#
cwebber2
if you have a hook into the application where you can plug in any sort of filter
#
cwebber2
that qualifies IMO
#
cwebber2
keeps it extensible too
#
puckipedia
well, Kroeg already processes every item going through an in/outbox by putting it through a bunch of filters
#
cwebber2
I think here meaning filtering specifically for unwanted content
#
cwebber2
but what "unwanted content" means is left open
#
cwebber2
hence me suggesting some kind of hook
#
puckipedia
right, so I'll pop in a bit of code that allows you to load external libs and then decide the order in which filters are ran inside the config :P
#
puckipedia
and add the """spam""" filter as an example
#
cwebber2
(thumbs up)
#
puckipedia
:D: I can't create Collections from the GUI
#
puckipedia
:D that's a collection containing an object I added with the "add" button :P
#
puckipedia
Remove didn't work
#
puckipedia
ugh ugh ugh I know why
#
puckipedia
I also know why deduplication didn't work
#
cwebber2
horray I implemented inbox:delivery:deliver-to-collection:recursively
#
puckipedia
aand I fixed deduplication *and* removing entities
#
puckipedia
post is gone again :D
#
puckipedia
ticks box
#
Loqi
woot
#
puckipedia
for recursively-add-targets, does a depth of 1 count? :P
#
puckipedia
... also I'm 100% sure my templating language is now turing-complete
#
cwebber2
puckipedia: that's... sneaky ;)
#
cwebber2
puckipedia: I don't think that counts.
#
puckipedia
okay I'll add multiple layers of recursion
#
puckipedia
wow this is broken
#
puckipedia
fixed
#
puckipedia
it recurses, but only 3 posts deep
#
cwebber2
puckipedia: cool, updating
#
puckipedia
not yet done :P
#
cwebber2
puckipedia: oh
#
puckipedia
eh
#
cwebber2
should I not have pushed?
#
puckipedia
it's one no/yes :P
#
cwebber2
lmk when to flip that last it
#
cwebber2
Kroeg is the coolest AP implementation because it's the completest ;)
#
cwebber2
is completest a word?
#
cwebber2
puckipedia: that knocked out all the client ones!
#
puckipedia
I know :P
#
puckipedia
tbh I had most of them
#
puckipedia
but the client part of Kroeg is weirdly wonky
#
puckipedia
time to test the """Spam""" filter
#
cwebber2
puckipedia: LGTM
#
cwebber2
I think since you made it extensible that meets the criteria
#
puckipedia
and I have a prepared Spam filter :P
#
puckipedia
tbh a config field that says "regex to filter content with" would be good enough I bet
#
cwebber2
seems like you could slot that in with the demo plugin
#
puckipedia
of course :P
#
cwebber2
and indeed that's not far from how early spam filters worked
#
puckipedia
a neural network that tries to decide which posts are okay:
#
puckipedia
Math.random() < 0.9 ? ok : not ok
#
cwebber2
one node to kind of rule them all
#
ajordan
tantek: sorry
#
Loqi
[AJ Jordan] Not going to today's HWC San Fransisco
#
cwebber2
puckipedia: I think with that I'm gonna flip Kroeg's final unflipped bit!
#
puckipedia
sooo, which ones do we still need an implementation of, heh
#
cwebber2
puckipedia: https://activitypub.rocks/implementation-report/ congrats on being AP's first totally-complete AP implementation :)
#
cwebber2
updooted
#
cwebber2
hm didn't nicely preserve newlines tho :)
#
puckipedia
yeah :<
#
puckipedia
gonna try to force a distbin object into Kroeg
#
cwebber2
that's 50% of them knocked out in one day though!
#
cwebber2
we're gonna make itttttt!
#
puckipedia
:)
#
cwebber2
so the rest of them I just need to do also... I think they should be pretty easy
#
puckipedia
I just realised I don't do s2s Add/Remove to local collection
#
puckipedia
... I very quickly fixed that
#
tantek
whoa scrollback
#
cwebber2
tantek: puckipedia is killin' it over here
#
tantek
ajordan: s/Fransisco/Francisco
#
tantek
wonders if ajordan's slugs are 1) editable, 2) redirect properly or 404 when edited
#
tantek
ajordan your markup looks like it produces an RSVP h-entry properly with author http://pin13.net/mf2/?url=https://strugee.net/blog/2017/11/not-going-to-todays-hwc-san-fransisco-2017
#
tantek
ajordan - does your lazymention tool have a log of Webmentions discovered/sent?
#
tantek
either of us could always manually send a webmention, but that's not the point - hoping to help figure out and make sure lazymention is working as expected
timbl and tantek joined the channel
#
ajordan
tantek: whoops, typo fixed
#
ajordan
tantek: slugs are just the Markdown filename so I just avoid renaming files once they're published
#
ajordan
if I ever did I'd have to redirect in Apache
#
ajordan
logs coming up
bengo joined the channel
#
ajordan
there's a filtered, pretty version at the bottom of the gist, or you can view the JSON locally with `bunyan`
#
ajordan
which is on npm
JanKusanagi joined the channel
#
ajordan
https://github.com/strugee/lazymention/blob/feeb87b99ad5408b825fe726ae66cd833fc69e86/lib/webmention.js#L61 here's where that's coming from - since the logs say it worked I'm inclined to think it's a bug in the Webmention library I'm using
#
ajordan
which tbh doesn't seem so great
#
ajordan
the underlying discovery library works fine but manually invoking the sending library returns success: false
#
ajordan
aand the only other thing it shows me is the HTML which isn't helpful
#
ajordan
sighs because this library is unnecessarily complicated
tantek joined the channel
#
tantek
which one the discovery or sending?
#
tantek
(library)
#
ajordan
sending. discovery might be too but it works so I say Ship It
#
tantek
ajordan, how do I lookup those libraries from your webmention.js source?
#
tantek
is there some magical code discovery that occurs upon a "require('webmention-client')" ?
#
ajordan
require() pulls from node_modules
#
ajordan
s/pulls/loads/
#
Loqi
[strugee] node-webmention-client: WebMention Client
#
ajordan
hang on, I'm busting out a debugger
#
tantek
logs seem to indicate you're passing in the right target URL
#
ajordan
I'm stepping through the library in a debugger and I just got back HTTP 200 from (I think?) the POST
#
tantek
the POST to webmention.io ?
#
ajordan
I think. I'm not sure
#
tantek
I didn't think it returned 200. I thought it returned one of the other 20x codes
#
ajordan
ah yeah the library checks success by seeing if the response is 202
#
ajordan
I get back HTML in the body too which is strange
#
tantek
no that's normal - in case the POST was the result of a form submission from a browser, the HTML returned is displayed!
#
tantek
helps with manual debugging of webmention endpoints
#
ajordan
ahhh right
#
ajordan
think I found the problem
#
ajordan
I think it's doing a GET, not a POST. I may have broken it when I upgraded a dependency
#
ajordan
or maybe it was broken already - come to think of it, the test suite didn't pass. but I assumed it was my machine
#
tantek
a-ha!
#
tantek
yes it definitely needs a POST
#
ajordan
RTFM's
#
tantek
I think a GET will return you an HTML form UI that you can use to manually send a POST :)
#
ajordan
lol no kidding
#
ajordan
yeah that's what I found strange about the HTML
#
tantek
in case someone decides to just browse to the URL to see what's there
#
ajordan
it had the <form>
#
tantek
there you go!
#
tantek
I think it's actually quite a nice API design pattern
#
tantek
fallback to a simple manual UI
#
tantek
serves as discovery, teaching, and manual testing all in one
#
ajordan
yeah it's nice
#
ajordan
content negotiation at its fniest
#
tantek
HTML can do all kinds of cool things
#
ajordan
s/fniest/finest/
#
tantek
technically not even conneg. just GET vs POST different verb handling
#
ajordan
Webmention is `application/x-www-form-urlencoded` yeah?
#
tantek
Webmention is default HTML form submission, which is yes that :)
#
ajordan
wonders how in the world this library shipped
#
tantek
turned out there was no need for XML-RPC in the first place. HTML had all the necessary features.
#
tantek
overarchitecture seems to be a common design anti-pattern in web related technologies
#
ajordan
alright let's try this again... I'm deleting the record that says we sent a mention already
#
ajordan
tantek++
#
Loqi
tantek has 75 karma in this channel (402 overall)
#
ajordan
also you'd like the design of lazymention - it doesn't fall into the db antipattern ;)
#
tantek
indeed!
#
ajordan
it works! \o/
#
ajordan
didn't show up on tantek.com though
#
tantek
ok let me check the stream.tmbu output
#
ajordan
pulls his changes out of the npm-managed directory before he accidentally blows away his bugfix
#
tantek
oh yeah! be sure to make a pull request to upstream your fix!
#
tantek
ajordan: it's showing up but without a profile pic, it's 0px wide and the not attending [x] overlaps the previous RSVP
#
Loqi
Homebrew Website Club SF
#
ajordan
I've already had to patch it to make it work on modern Node.js versions - sent a PR; upstream seems dead unfortunately
#
tantek
so that's something I need to figure out, better fallback for RSVPs without a profile pic
#
ajordan
I'll just publish my version to the npm registry. it'll show up on the front page since there aren't that many results for "webmention" :P