#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