#social 2017-06-16
2017-06-16 UTC
timbl joined the channel
#
@JefferyRPowers The latest De La Crème Marketing Daily! http://paper.li/JefferyRPowers/1425169611?edition_id=7c6ef500-522a-11e7-b4c4-0cc47a0d1605 Thanks to @SocialWebWG @sejournal #seo #socialmediamarketing (twitter.com/_/status/875509937807536132)
timbl, cristomc, ben_thatmustbeme, thebaer, ajordan and cwebber2 joined the channel
#
puckipedia https://github.com/puckipedia/Kroeg I published the code for my ActivityPub server finally :)
#
puckipedia it kinda runs at lol.puckipedia.com while I work on it
#
puckipedia (currently: turning it on)
#
puckipedia it should be online (https://lol.puckipedia.com/auth/login) - but there's a stupid bug somewhere with inbox and IDs exisitng already
#
puckipedia (it tries to add duplicate ids)
#
puckipedia okay, I think I have oauth2 added now
cristomc joined the channel
#
puckipedia yup OAuth2 is there now too
#
puckipedia so I should now support fragments in IDs too (getting e.g. example.com/test#object will probably get example.com/text, with #object embedded) - makes https://github.com/w3c/activitypub/issues/224#issuecomment-302737846 work
#
puckipedia I also registered #kroeg on freenode for this project
#
puckipedia (also, Kroeg is dutch for pub :P)
#
puckipedia cwebber2: there's currently no server->server auth
#
puckipedia I was working on implementing JWS (per oshepherd's idea)
#
puckipedia also I have to do something for remote retrieval of entities (currently it's unauthed too)
#
puckipedia ooh I just realise that I misread how LD signatures would be used
#
puckipedia I assumed the client was in control of the private key, not the server
#
puckipedia yeah. that means e.g. wrapping an object with a Create (in client->server) can't be done, afaik?
#
puckipedia right, woops :P
#
puckipedia provideClientKey and signClientKey, right?
#
puckipedia I looked at HTTP signatures and I'm not sure how you would communicate "this key is signed by the actor's key"
#
puckipedia oh fun
KevinMarks joined the channel
#
puckipedia ah, the signature part isn't in the http signature spec?
#
puckipedia right, explains a lot
#
puckipedia ...
{ "type": ["Create", "Post"], "id": "https://example.com/thing", "object": "https://example.com/thing", "content": "Hello.", "actor": "https://example.com/me" }
#
puckipedia I'm scared that this might be valid
#
puckipedia yes
#
puckipedia ..... I think this might be valid
#
puckipedia I'm scared
#
puckipedia yeah. I was thinking of ways to avoid having different IDs for activities and their objects
#
puckipedia and honestly I am scared by what I made
#
puckipedia I use a bunch of First() for the Type
#
puckipedia so it'd store the object as a Create in the database
#
puckipedia and it'd probably indicate it's an Activity, which means it'll probably stack overflow the HTML renderer
#
puckipedia my AS2 renderer though, will be just fine (it only unflattens each object once)
#
puckipedia so if you e.g. have a CollectionPage with 10 objects, and each is attributedTo the same person
#
puckipedia it'll only render the person's object for the first object
#
puckipedia true
#
puckipedia it's just the static frontend, so I might fix that there
#
ben_thatmustbeme testing a recursive object might be a good thing to put in the test suite

#
puckipedia also maybe the AP spec should just plain out disallow someone from Creating another Activity?
#
ben_thatmustbeme make sure that implementations don't break on things like that

#
puckipedia (at least, if I understand the spec correctly that is not supposed to happen)
#
puckipedia same with liking activities, as those are technically objects too
#
puckipedia well, the HTML renderer would be a static client
#
puckipedia so that might fall under 'testing clients'
#
puckipedia hm. another fun test might be: server->server federating a create with an object with an attributedTo with id=a, and the create has an actor with id=a but different values
#
ben_thatmustbeme yeah, thats what i mean, its good to give people things that are easy to get tripped on

#
puckipedia maybe fragments in IDs is fun as a test case
#
puckipedia I retrieve the object by GETting without fragment
#
puckipedia then I store that object flattened in the DB, and try to extract the ID *with* fragment
#
puckipedia so e.g.
{ "id": "example.com", "object": { "id": "example.com#object" } }
worksKevinMarks_ joined the channel
#
puckipedia I think it's actually a really nice way to fix the issue of having sub-objects
#
puckipedia yeah, I get it for mostly-cheap because of the way I store entities in the DB
#
puckipedia as you would in a nosql db, so I remove all subobjects and store them separately
#
puckipedia e.g.
{"id": "example.com/create", "type": "Create", "object": {"id": "example.com/note", "type": "Note", "content": "hi"}}
#
puckipedia is stored as "object": "example.com/note", and example.com/note is stored separately
#
puckipedia and when rendering as JSON I just say "render with max depth 3"
#
puckipedia currently this is just a hard-coded list of id-having properties, but once I have JSON-LD I can store the proper context and separate them by which property has a type mapping of @id
#
puckipedia I do not do json-ld @context yet
#
puckipedia was thinking of a few interesting ways to fix this
#
puckipedia e.g. having a database table that is just a mapping from short IDs to context URIs
#
puckipedia and then having those short IDs be global, and just import the contexts that each item uses
#
puckipedia hmmm
#
puckipedia looks at their ActivityPub server
#
puckipedia https://github.com/puckipedia/Kroeg
#
puckipedia https://github.com/puckipedia/Kroeg/blob/master/Kroeg.Server/BackgroundTasks/DeliverToActivityPubTask.cs it sends the plain object
#
puckipedia I shooould probably change that to send an unflattened object
#
puckipedia fixed
#
puckipedia it now unflattens to a depth of 3 before sending the delivery
#
puckipedia going to bed now, bye