#social 2017-07-03
2017-07-03 UTC
# ben_thatmustbeme Takyoji, Mastodon had been working to implementing it, and puckipedia has been working on a .Net implementation. But that's all I really know of personally. But I am not super involved in it
# Takyoji It seems the link for reference named "OAuth-Server-Metadata" on ActivityPub is dead. It's moved to: https://tools.ietf.org/html/draft-ietf-oauth-discovery-06
# ben_thatmustbeme cwebber2: ^^
# Takyoji cwebber2: Absolutely, I shall do so shortly.
# Takyoji I noticed a veeeery subtle syntax issue in Example 16: https://www.w3.org/TR/activitypub/#object-without-create
# Takyoji A comma was forgotten after the assignment for the "id" property, at the end of the line
# Takyoji Is it even worth raising an issue or anything for something so miniscule though? xP
# Takyoji And apparently after "actor" in Example 13 as well
# Takyoji And, well, in Example 11 as well
# Takyoji Here's a pull request of those minor fixes, if it's of any value: https://github.com/w3c/activitypub/pull/238/files
xmpp-social joined the channel
# xmpp-social [ajordan] Takyoji: the bridge isn't moderated. However, it DOES crash when someone on the IRC side sends fancy Unicode :/
# xmpp-social [ajordan] I just restarted it.
# xmpp-social [ajordan] Takyoji: AFAIK the Working Group can't accept PRs from anyone outside the WG because they haven't signed W3C copyright/patent agreements but I can send the same changes for you
# xmpp-social [ajordan] cwebber2: if you merge my PRs they fix a lot of these small problems, including the IETF 404 Takyoji mentioned
# xmpp-social [ajordan] Or alternately if you're comfortable I can ask someone to make me a collaborator and merge them myself?
# xmpp-social [Takyoji] Whichever route is most practical. I don't really claim any sort of intellectual property of anything that I do, for the most part.
# xmpp-social [ajordan] For the record the Unicode issue is filed at https://github.com/42wim/matterbridge/issues/210 but I'm hoping to port https://github.com/aaronpk/Slack-IRC-Gateway to XMPP anyway, which should make this a non-issue
# xmpp-social [ajordan] Takyoji: in the US copyright is automatic whether you claim it or not
# xmpp-social [ajordan] Personally I think trivial typo fixes like this should be okay, but it's not up to me. Or, AFAIK, any of the WG members
# xmpp-social [ajordan] :/ sorry, I know it's annoying and we really appreciate you bringing up problems like this one
# puckipedia I just added uploadMedia support to Kroeg ... though, there's one issue I can see with it
# puckipedia ... how do I upload more than one image?
lambadalambda, bitbit and timbl joined the channel
newton joined the channel
# puckipedia like, imagine a twitter-style 4-image post
# puckipedia ^ I would guess not directly posting into the outbox, but just assigning an id
# puckipedia so you can then do a
{"type": "Create", {"type": "Note", "attachment": ["id1", "id2", "id3", "id4"]}}
# puckipedia and ad a content
# puckipedia maybe if it's a Create activity, post it into the outbox, else just give it an ID?
# puckipedia well, if you send it as
{Create: {Video}} it's post it into the outbox. if you send {Video}
it only gives it an ID# puckipedia https://github.com/w3c/activitypub/issues/239
# puckipedia I'll quickly put this into Kroeg
# puckipedia hehe, I think I just got it implemented in Kroeg. lemme verify...
# puckipedia (I added .json/.atom, those override the Accept: header for user convenience) also I fixed the URI path: https://lol.puckipedia.com/asdf/image/690c307d.json
# puckipedia it used a cool template to generate the image id: $
{$.attributedTo|$.actor|resolve|%.preferredUsername|shortguid}/${$.type|slug}/${shortguid}
# puckipedia first thing says 'get attributedTo, if that fails, use actor, then resolve the object, get preferredUsername from that object, if that fails use a randomly short guid'
# puckipedia ... yes? I think?
# puckipedia lemme see...
# puckipedia but it's failing for unknown reasons
# puckipedia yeah. Collections are kinda a hack, the items inside are stored separately
# puckipedia so I forced the unflattener to never unflatten collections, because it won't unflatten the orderedItems etc
# puckipedia the collection item table has normal sequential IDs
# puckipedia so "id": "https://lol.puckipedia.com/users/asdf/outbox?from_id=5"
# puckipedia I should probably stop external OrderedCollections etc from being cached
# puckipedia cwebber2: https://lol.puckipedia.com/asdf/status/a4b41405.json :)
# puckipedia ehm, woops, I broke
{type: Update}
a while back# puckipedia ... now it isn't recognized as a collection anymore :D:
# puckipedia fixed
# puckipedia cwebber2: I just did a Create / Add / Update
# puckipedia so yes, it works
# puckipedia the server is down atm, doing a git commit
# puckipedia one sec
# puckipedia try again?
# puckipedia ouch yeah
# puckipedia ... works here? :P
# puckipedia maybe you have some kind of extra spaces somewhere?
# puckipedia yeah, the gateway errors is because it's just a proxy to my home IP which has VS open
# puckipedia can you try once more?
# puckipedia figured out, there's no space between ; and p
# puckipedia and I kinda require that ATM
# puckipedia ah. I got 'Accept: application/ld+json;profile="https://www.w3.org/ns/activitystreams"'
# puckipedia I should probably clean that up
# puckipedia done
# puckipedia ... ehm
# puckipedia hm
# puckipedia can you try once more?
# puckipedia aha, "application/ld+json;profile=https://www.w3.org/ns/activitystreams"
# puckipedia ... I should probably use something better to normalize
# puckipedia yeah, apparently you don't need to quote values
# puckipedia should work now
# puckipedia bbiab
# puckipedia done
# puckipedia I.. broke something, so it may not be doing accept things right
# puckipedia woops, I do checks the wrong way
# puckipedia 1 sec, restarting servers
# puckipedia so I'm going to SHA2017, and they've got a python-powered badge
# puckipedia ... guess what I'm going to make? :)
# puckipedia a tiny ActivityPub client maybe? :P
# puckipedia I like the progress I'm making on Kroeg. slowly but surely fixing the last things in the implementation document
# puckipedia let's add a blocking mechanism now
# puckipedia lol. my new mimetype code makes browsers get the atom xml
# puckipedia because application/xml
# puckipedia aand blocks are implemented!
# puckipedia except for reading back blocks, and undoing blocks
# xmpp-social [ajordan] aaronpk: the only message IRC missed was Takyoji wondering if the bridge was moderated cause their message about existing implementations didn't make it though to IRC originally
# puckipedia https://github.com/w3c/activitypub/issues/240
# puckipedia undoing and reading blocks fixed
# puckipedia ... hmmmmm. hit an optimization roadblock
# puckipedia my current "is blocked" check is checking the OrderedCollection for the user, which is instant
# puckipedia but I can't find the Block activity I used to block someone
# puckipedia yeah
# puckipedia I wonder if the 'blocked' list should be a list of Block activities, then an internal list of blocked users
# puckipedia ... yeah, that's more logical, I add a published property to every activity so you can see when the block happened
# puckipedia yeah
# puckipedia I mean, if I were to put that into client->server api, it'd probably do the Right Thing
# puckipedia into my API, that is
# puckipedia I'm thinking. the 'likes' also has the Like activities, and not the Actor that liked it
# puckipedia cwebber2: to unblock someone you need to know they're blocked
# puckipedia so having to get the Activity isn't that bad imo
# puckipedia cwebber2: https://github.com/puckipedia/Kroeg/blob/master/Kroeg.Server/implementation-report.md :)
# xmpp-social [ajordan] puckipedia: it would also make sense to me to err on the side of providing more information
# xmpp-social [ajordan] It's easy to get actors who have been blocked from a list of Block activities, but not the other way around
# puckipedia yeah. that's what I decided on too
# puckipedia I added an invisible 'blocked' inside the 'blocks' collection, so blocks is OrderedCollection<Block>, and blocked is OrderedCollection<Actor> and is invisible
# xmpp-social [ajordan] Which would be an argument in favor of the "blocked" list being a Collection of Block activities, not actors
# xmpp-social [ajordan] Ah gotcha
# puckipedia well, I renamed it to be 'blocks'. the 'blocks' collection contains "_blocked", which you can't read (the _blocked is just for the server's reference)
# xmpp-social [ajordan] But how is the Collection of actors useful if it's invisible? What's it for?
# xmpp-social [ajordan] Ohhh I see
# xmpp-social [ajordan] Just an implementation detail basically
# puckipedia yeah
# puckipedia checking if a Collection contains an Actor is just asking the database 'does a collection item exist that is from collection A and is entity B'
# xmpp-social [ajordan] Right
# xmpp-social [ajordan] Do we not have a standard way to get blocked actors? I thought we specified a name/semantics for that like we do for likes, following, etc.
# puckipedia yes. IsOwner, which means that the server itself is *the* authority for that object
# puckipedia IsOwner also means they don't expire (I added a small 1-week cache for external objects, except for tag: because those I can't regenerate from the id only)
# puckipedia if it expires, the database store just says 'it doesn't exist' and the retrieving entity store will pick up the slack
# puckipedia (and push it back into the cache)
# puckipedia btw, that RetrievingEntityStore also is responsible for e.g. OStatus user retrieval, which is a slightly evil hack
# xmpp-social [ajordan] cwebber2: since you're here, presumably instead of being deep in the test suite
# xmpp-social [ajordan] https://github.com/w3c/activitypub/pulls ;)
# puckipedia cwebber2: btw, I can give you access to my semi-temporary Kroeg instance, so you can throw the test suite against it
# xmpp-social [ajordan] Lol too bad
# xmpp-social [ajordan] It's np, I just want them to get merged vaguely soon since they're trivial but really nice to have
# xmpp-social [ajordan] In particular the OAuth URL problem that got filed yesterday I caught a while ago
# puckipedia cwebber2: yeah
# puckipedia lemme see, I just pushed the newest code to it
# puckipedia https://puckipedia.com/auth/register you can register here, just enter whatever, it has to be valid
# puckipedia woops I pressed ^C
# puckipedia once you have an account, you can go to https://puckipedia.com/settings and use 'new' to create an actor. Then to skip the whole OAuth2 flow go to https://puckipedia.com/auth/actor and you can get a token for a specific actor
# puckipedia this flow will be massively improved, but it works for now :P
# puckipedia and there you go :)
# puckipedia you do need separate OAuth2 tokens for them
# puckipedia (they're user+actor bound)
# puckipedia follows access log carefully
# puckipedia my VPS provider isn't awesome, that might just be the network connection randomly dropping
# puckipedia ehm, lemme rebuild and switch over to debug, because for some reason you just got like four 404's after each other
# puckipedia cwebber2: I'm seeing POST http://puckipedia.com/social/users/cwebber/outbox text/plain;charset=utf-8 (Content-Length: 75)
# puckipedia on my end
# puckipedia ... did that url just get archived by web archive
# puckipedia that 404 is because the POST is in unknown format, and then it fails the posting
# puckipedia yeah, this one won't close down, it's on my server
# puckipedia ah
# puckipedia well, it's a page, but it's empty
# puckipedia if it isn't empty, see e.g. https://puckipedia.com/social/outbox.json
# puckipedia yeah
# puckipedia side effect of how I implement AS2 object to JSON serialization
# puckipedia text/plain;charset=utf-8 again
# puckipedia I should probably add a fallback for that situation
# puckipedia I just restarted the server
# puckipedia should help you debug
# puckipedia ... okay what
# puckipedia that was not supposed to happen?
# puckipedia cwebber2: I am bad at code, one sec
# puckipedia it's the charset it's choking on
# puckipedia yeah
# puckipedia should be fixed now btw
# puckipedia (issue was that I still did a string compare on the Content-Type instead of doing proper mime type parsing)
# puckipedia that's for the object :P
# puckipedia the activity is without the slug :P nice evil configurable hack
# puckipedia correct!
# puckipedia hacks DB, gives themself access to cwebber2's test account
# xmpp-social [ajordan] Lollll
# xmpp-social [ajordan] BOFH makes an appearance ;)
# puckipedia https://puckipedia.com/social/cwebber/status/ee896ef5 - that works :)
# puckipedia "Unknown mime type application/x-www-form-urlencoded" oh right now I can't use any non-activitypub features
# puckipedia well, I'm not sure what to do with totalItems. it can be pretty expensive to calculate (need to go over each item, calculate audience, then see if you can view it)
# puckipedia I guess totalItems is more of an indicator
# puckipedia like, "posted N posts"
# puckipedia actually, twitter leaks that too
# puckipedia private accounts show amount of tweets
# puckipedia I could filter public vs non-public prertty fast though
# puckipedia I don't do any special processing
# puckipedia oh and I kinda don't do html yet :D:
# puckipedia heh, I don't flatten Link types because url isn't really an id type
# cwebber2 https://puckipedia.com/social/cwebber/status/25c2d1c2 there's the other one
# puckipedia I don't really have any kind of rendering except for Note yet
# cwebber2 http://dustycloud.org/tmp/pubstrate-ellen-terry.png here's how I render that image currently
# cwebber2 puckipedia: mind if I link to https://puckipedia.com/social/cwebber/status/ee896ef5 on my microblog accounts?
# puckipedia go ahead
# puckipedia hm, GNU social is having a bit more trouble with it
# puckipedia ... I broke HEAD, didn't I
# puckipedia cwebber2: btw, if a tweet starts with an @, it only shows up if they follow both you and me
# puckipedia no problem, thanks for being so awesome!
# puckipedia a ton of Friendica instances are picking up on the link
# puckipedia oh, and.. https://puckipedia.com/social/puck/status/b5122df7 :)
# puckipedia hm. woops. I think there's a bug somewhere. you can't read your own inbox :D:
# puckipedia cwebber2: https://puckipedia.com/social/users/cwebber/inbox.json?from_id=11 :P
# puckipedia let's go to bed now though. 01:01 hee
# puckipedia here*
timbl joined the channel