#social 2021-02-06
2021-02-06 UTC
timbl, dmitriz, sl007 and RRSAgent joined the channel
# RRSAgent logging to https://www.w3.org/2021/02/06-social-irc
Zakim joined the channel
# sl007 +1 Let's heal the fediverse
# jarofgreen Cool. I’m not working on a C2S project that meets "diverse clients and generic servers” (I’m working on a very opinated server) but if there is time at the end happy to show it
# sl007 hmmm, opinions… ;) I would be happy if we work on a generic proposal everybody could do in another language.
# sl007 hmmm, languages… ;)
# sl007 and btw, if there is not time, I propose to keep it informal Open End until everybody is too tired
# sl007 reason 1: We are Social
# sl007 reason 2: This week was is the European “digital flagship” week. And I need somebody to tell about ;)
# sl007 bbb link is https://bbb.w3c.social/b/rhi-vp1-fv6-vn7
# nightpool[m] Hey all, going to grab a glass of water and then get started
# sl007 hm: Encouraging rhiaro to speak up despite scribing and portray their dreams and visions too
# sl007 nightpool is Belgian beer w. waffles ok too? [reason: FOSDEM]
dmitriz and paul joined the channel
# nightpool[m] present+
# cwebber2` present+
# jarofgreen present+
# paul present+
# dmitriz present+
Cristina joined the channel
# cwebber2` ;)
# sl007 present+
# cwebber2` rhiaro would you like me to scribe? you've scribed a bunch lately
# cwebber2` cristina: I'm interested in helping with legal, but I know today is more about demos
# cwebber2` cristina: my background is in legal but increasingly tech
# cwebber2` jarofgreen: hello I'm James, from scotland, come from a background in event-stuff, and I'm working for a co-op and working on event co-op work
# cwebber2` jarofgreen: it's using C2S
# jarofgreen It’s not uing C2S so maybe I won’t demo today :-)
# cwebber2` paul: I'm following this space because of my team (?), largely interested in the integration with decentralized identifiers
# cwebber2` sl007: I'm sebastian, I'm working on an AP CMS called Redaktor
# nightpool[m] s/it's using C2S/it's not using C2S
# cwebber2` sl007: I've been attempting to find funding to build a team
# cwebber2` sl007: I'm attending EU meetings to raise awareness with EU politicians
# cwebber2` nightpool: ok great thanks everyone, great to see so many old and new faces here
# cwebber2` nightpool: we're going to start off with AP C2S demos... if everyone who has a demo can queue up with q+ on irc that would be great
# cwebber2` nightpool: I can give a demo if nobody else has a thing
# cwebber2` nightpool: I'm not seeing anyone in irc raising a demo?
# cwebber2` I could give a demo but it wouldn't be C2S
# cwebber2` and it might be a bit off the beaten path ;)
# jarofgreen I’ll demo a Non C2S thing later, after the C2S stuff
by_caballero joined the channel
# cwebber2` rhiaro: I have a demo showing off some client-showing-stuff
# cwebber2` rhiaro: *showing rhiaro.co.uk and client*
# cwebber2` rhiaro: I do loads of posting via activitypub's client to server protocol, logging what I eat and buy and etc, also to make posts
# cwebber2` rhiaro: I have a bunch of clients which are essentially web forms... they're all super simple
# cwebber2` rhiaro: so burrow is like my check-in client... I post it over localhost so it wouldn't work for anyone else, but I could share so that other people could use it with their outbox
# cwebber2` rhiaro: so for checkins, I made a set of buttons where it fetches these locations from my site
# cwebber2` rhiaro: so that's how I can show off what the buttons say
# cwebber2` rhiaro: it shows off a bunch of debugging information
# cwebber2` rhiaro: this is replicator which I use to log foods
# cwebber2` lol if you didn't know rhiaro was a trekkie
# cwebber2` rhiaro: and this just composes an activitystreams json blob using an extension I made myself logging Eats which is a non-standard activity (?)
# cwebber2` rhiaro: stores the json-ld, stores it in a triple store... once it arrives on the other end it can do whatever it wants with it
# cwebber2` rhiaro: *demonstrates posting a note*
# cwebber2` rhiaro: so this does some fun processing stuff like currency conversion, etc
# cwebber2` rhiaro: also parses the tags, makes sure all tags are parsed and etc
# cwebber2` rhiaro: I can do a PR with a blob and it just stores it
# cwebber2` rhiaro: whether it can do further processing might depend on what activity type comes through
# cwebber2` rhiaro: and most recent one I've been logging is to log travel... mostly using star trek names
# cwebber2` rhiaro: this shows off specialized clients, and how clients can be very purpose specific and do their one job really well
# cwebber2` rhiaro: this travel one can also pull some places listed from elsewhere in my website
# cwebber2` rhiaro: if I haven't already logged someplace it'll choose a place and a name and etc
# cwebber2` rhiaro: there are no extensions etc... this is an activitystreams travel activity...
# cwebber2` rhiaro: this populates my map *shows map*
# cwebber2` rhiaro: and the travel posts themselves... looks like this... with some maps...
# cwebber2` rhiaro: *shows rendered maps and posts*
# cwebber2` jarofgreen: how much is custom server stuff or how much generic?
# cwebber2` rhiaro: it's generic in that I can send it anything and it'll store it, but it's specific in the way it processes or especially renders it
# cwebber2` rhiaro: it's all on github, you can find the outbox file...
# sl007 q+
# cwebber2` nightpool: I'm interested in what the server looks like
# cwebber2` sl007: one thing is that since the server is very generic, the content adapts to the specific activitystreams types... when the server has it in the outbox, it doesn't matter if the server shows the kind of page or whether the client has a specific rendering... the same approach is done with my CMS, the content adapts to the different types
# cwebber2` rhiaro: that's exactly right... for each of those posts created it goes to a different type
# cwebber2` rhiaro: the fact that the type converts to templates is kind of a by-the-by
# cwebber2` rhiaro: it's spaghetti php, no framework, complete mess, I've been working on it for years, but hey you're welcome to poke around on it
# cwebber2` rhiaro: this is the outbox... this is the file for the link relation, etc
# cwebber2` rhiaro: it just gets the json that's coming in, parses it as json, parses it via an rdf graph, then I don't have to worry about the format anymore
# cwebber2` rhiaro: here's where it collects deals with the collection, currency conversion, etc
# cwebber2` rhiaro: here's a file with a bunch of functions with the side effects.. as you can see there's a bunch of stuff I haven't added because I haven't done it or needed it
# cwebber2` rhiaro: that's it... here's where all of the federation and its side effects would go if doing that (as opposed to C2S part)
Grishka joined the channel
# sl007 q+
# cwebber2` rhiaro: if anyone wants to reuse this, we'd have to talk about the authentication part and how to update it, but should be possible
# Grishka forgot about the meeting and joined just now
# nightpool[m] ack sl007
# nightpool[m] ack sl
# cwebber2` sl007: could add the link?
# cwebber2` rhiaro: just done
# cwebber2` q?
# cwebber2` nightpool: well that's awesome, I love seeing people do c2s in their day-to-day
# cwebber2` nightpool: I know of another person doing it regularly but not others, but I love seeing it
# cwebber2` nightpool: my demo is less impressive... I have a very simple app that just handles reading and displaying a user's posts. it's about 100-200 lines of javascript
# cwebber2` nightpool: it fetches and displays their post, works with pleroma, mastodon, a few others
# cwebber2` nightpool: *deals with all the fun of figuring out how to pass around permission to screen share with rhiaro*
# cwebber2` nightpool: this is fairly simple. I can just type in an outbox here
# cwebber2` nightpool: one problem I have is that when working locally... when running in production, have to use a hosted service and sometimes requests to user actors will just fail
# rhiaro nightpool[m] - later try https://rhiaro.co.uk/outgoing ... my AS2 output is a bit janky but sometimes it works, and it's also really slow
# sl007 q+
# cwebber2` nightpool: you can see a lot of these use authenticated fetch and since I'm not signing my requests with an instance actor it's.... oops..... why didn't it work? well there's the cors proxy (?) which gives me trouble
# cwebber2` it's not your fault, perimeter security is suffering ;)
# cwebber2` nightpool: basically we have this one function that calls resolve on the outbox to get the outbox object, gets the first page out of that
# cwebber2` nightpool: we call render page which creates a new div... calls render post...
# cwebber2` nightpool: we kind of go down this way... if it's create we do this thing, an announce another...
# cwebber2` nightpool: this was meant to be a simple way to debug the flow of fetching things
# cwebber2` nightpool: one thing unfortunately we weren't able to see, unlike mastodon where you only see... this client was made with the kind of conception of nested replies... if the cors thing was working you'd be able to see that instead of the replied post it would go back up... I guess that's not in that version. this was made in the idea of a nested reblog system like tumblr
# cwebber2` nightpool: so eg who replied to them, the way twitter/tumblr would...
# cwebber2` nightpool: cool yeah, there's the render content / username / etc....
# cwebber2` nightpool: this resolve function is kind of nice, it's a helper function I've found to be really helpful where I can do resolve(<nightpool-uri>) returning a promise with an actor object
# cwebber2` nightpool: or you can resolve say actor.outbox
# cwebber2` nightpool: what this function does is it's smart enough to say that if actor.outbox is a function we can resolve it directly with promise.resolve or if it's a string we can... it's helpful with json-ld where it can be a nested object or not
# cwebber2` nightpool: and then just a couple of placeholder functions here...
# cwebber2` nightpool: one kind of tricky thing about the way AP's C2S stuff is set up, there's a lot of nested resources you have to fetch
# cwebber2` rhiaro: you could try my outbox for my server? shouldn't have troubles with CORS
# cwebber2` nightpool: tests, it's fetching
# cwebber2` nightpool: as I was saying about json-ld fetching...
# cwebber2` nightpool: oops, I see, outgoing I'm expecting orderedcollection with paging...
# cwebber2` rhiaro: ah right, I could add paging
# cwebber2` nightpool: yeah so there's a lot of nested resources you have to fetch often, so there's a lot of placeholders...
# cwebber2` nightpool: that's one thing much easier to simplify where you're writing a server with c2s, but when dealing with servers in the wild not always done that way
# cwebber2` nightpool: cool anyone have any questions?
# rhiaro nightpool[m]: try https://rhiaro.co.uk/notes ..
# cwebber2` well we upgraded from error to errorerror to errorerrorerror
# cwebber2` such goes live demos :D
# cwebber2` nightpool: I added this field where you could type in an outbox... it has this info where you can link someone's outbox right before... so it doesn't always work...
# cwebber2` nightpool: no state management, hence continuing to append
# cwebber2` nightpool: as said, simple client, but helpful for exploring
# cwebber2` sl007: I have a question
# cwebber2` sl007: in mastodon microblog boxes have the same visual appearance, but even if you want to keep this same thing you could have the preview representaiton in html and have full representation so you can click and see visually different, and full representation gets link relation moving to full version... just one remark
# cwebber2` sl007: I just encourage everyone to use q+ on irc to speak up, or you can raise your hand on bbb
# cwebber2` q?
# cwebber2` ack sl
# cwebber2` rhiaro: I did test interoperability with dokelei at one point
# cwebber2` rhiaro: Grishka has given an example on irc
# cwebber2` nightpool: looks like I'm having a cors issue there...
# cwebber2` Grishka: I don't think I've set that header... only for webfinger
# cwebber2` nightpool: *enters it in, and it works*
# cwebber2` Grishka: oh nice, I implemented C2S without realizing it
# cwebber2` nightpool: as you can see I'm distrusting all html returned by the server... I should probably add a sanitization library
# cwebber2` nightpool: so for example, here you can see... ah, you're making this into a link
# cwebber2` Grishka: it saves html into the database... then it's frozen like that forever
# cwebber2` nightpool: cool! thanks everyone for indulging my very small demo!
# cwebber2` *applause*
# cwebber2` rhiaro: that makes jarofgreen next
# cwebber2` jarofgreen: right *sets up screen sharing*
# cwebber2` jarofgreen: I've come from a background of doing a lot around listing and discovering events
# cwebber2` jarofgreen: now I'm working on this project, it's not C2S, in fact a very opinionated server, I'll walk through features and then talk about what it's using AP for
# cwebber2` jarofgreen: it's about event discovery...
# cwebber2` jarofgreen: so you can register your event
# cwebber2` jarofgreen: you can create your account, create your profile, follow other people
# cwebber2` jarofgreen: so once you've followed other people you can see all the events that person has posted on their account
# cwebber2` jarofgreen: so then you can add that to your account... I can add that to my events...
# cwebber2` jarofgreen: now I can share that one with other people
# cwebber2` jarofgreen: I think this one's interesting, so I'll test that event here... I can select the privacy settings...
# cwebber2` jarofgreen: and then when you look at the events on this account you can see where it's followed and what it's from itself
# cwebber2` jarofgreen: so it's about event discovery... can see what's coming up, what it attends... no tickets about RSVPs, etc, just events
# cwebber2` jarofgreen: the idea of [community|crowd]sourcing data, wrote some blogposts about how to do that usefully
# cwebber2` jarofgreen: I'll go through some features talking about AP
# cwebber2` jarofgreen: some stuff that all the bots can read and write.. here's the fosdem events/talks from their feed... I pulled a bunch in as you can see....
# cwebber2` jarofgreen: we also have a tags feature...
# cwebber2` jarofgreen: we can have different tags... so each room in fosdem is a different tag...
# cwebber2` jarofgreen: you can use tags to organize different events...
# cwebber2` jarofgreen: I'm interestd to see if I can use AS2 collections
# cwebber2` jarofgreen: you can also import ical2 as well
# cwebber2` jarofgreen: you can import it straight in, these events now available
# cwebber2` jarofgreen: we're using AP for follows, notification, etc
# cwebber2` jarofgreen: so you can get notification for new content...
# cwebber2` jarofgreen: however there's a few things not natively in AP events
# cwebber2` jarofgreen: one of the things not there is timezones
# cwebber2` jarofgreen: in AP there's timezones... if youw ant to take an event, let people do things to it, etc...
# cwebber2` jarofgreen: that all can get problematic... you need the name of the timezone you're in
# cwebber2` jarofgreen: it gets very detailed into timezones... which I've just realized...
# cwebber2` jarofgreen: oh yes, I should have mentioned... we also have recurring events
# cwebber2` jarofgreen: so this sunday lunch has a recurrence rule
# cwebber2` jarofgreen: so that's the actual R rule
# cwebber2` jarofgreen: but again AP doesn't have recurring events
# Grishka never realized how many ways are there of handling events
# cwebber2` jarofgreen: with this event here... has a recurrence event
# cwebber2` jarofgreen: could send through an ap object for every recurrence... but that could get huge
# cwebber2` jarofgreen: so that's probably not great... ways to do occurrence is a question...
# cwebber2` jarofgreen: but as for deleting events not sure how to map that
# cwebber2` jarofgreen: so yeah we're using AP for notification between servers
# cwebber2` jarofgreen: if we detect both servers are running our software we use our own api
# cwebber2` jarofgreen: so kind of AP
# cwebber2` jarofgreen: we also ignore notes, no features for that, but what we do have is a littele feature wehre every morning it sends notes to all followers
# cwebber2` jarofgreen: so thats' our attempt to bring listing functionality to servers tahat don't understand event objects
# cwebber2` jarofgreen: finally I'll say I've made an account for meetings in this group, you can follow here
# cwebber2` jarofgreen: experiment with event object subscriptions
# cwebber2` jarofgreen: would be cool tot try this with other AP software
# cwebber2` jarofgreen: that's it!
# cwebber2` sl007: I think there's more to discuss, can I say something?
# cwebber2` nightpool: have to go soon but can it be short?
# cwebber2` sl007: yes, so I want to thank about recurring events for jarofgreen
# Grishka q+
# cwebber2` sl007: so for example people coming back every week to this group
# cwebber2` sl007: so with c2s we saw everyone do thigns working with very different languages
# cwebber2` sl007: so my opinion is there's no need for new servers without c2s
# cwebber2` sl007: we should talk about specification that respects the different aspects of implementations
# cwebber2` sl007: the mastodon applications for example show off challenges with their own acceptance to types (?) and generic servers
# nightpool[m] doesn't see sl's q+ on IRC ?
# cwebber2` sl007: if we can have everyone implement another server in another programming language
# nightpool[m] is this matrix being weird?
# cwebber2` nightpool: definitely, think there's more spaces for other servers
# cwebber2` q?
# jarofgreen https://www.theoccasionoctopus.net/ is software. https://medium.com/opendatacoop/challenges-in-community-data-mapping-941cdbef6be8 is blog post
# cwebber2` nightpool[m]: could be that I ack'ed sl007 after they spoke earlier and they meant to be re-queued
# cwebber2` nightpool: I think clients are the other biggest thing
# cwebber2` Grishka: there are some important kinds of events like facebook's subtype of group where you join and it reminds you there's going to be an event and you can post pictures from that event etc
# cwebber2` Grishka: it's very important, convenient
# cwebber2` Grishka: I'm going to implement those
# cwebber2` Grishka: on top of groups I'm making now
# cwebber2` q?
# jarofgreen Some socialhub posts about event issues: https://socialhub.activitypub.rocks/t/including-timezones-with-events/1112 https://socialhub.activitypub.rocks/t/events-and-discovering-relevant-information-later/1114
# cwebber2` nightpool: we're over time, if people want ot keep talking we should talk on irc
# cwebber2` dmitriz: when's th enext call?
# jarofgreen Fri February 12th 2021 5:00pm to Fri February 12th 2021 6:00pm (Europe/London)
# cwebber2` nightpool: I believe next firday
# cwebber2` s/firday/friday
# cwebber2` rhiaro: yes that's right, next week's is to talk about making hashtag a formal discussion
# cwebber2` rhiaro: time will be next friday but two hours later
# cwebber2` nightpool: thanks everyone!
# cwebber2` yayyyy
# cwebber2` more of these
# cwebber2` !
# Grishka we should be doing more of these demo kind of meetings
# cwebber2` agrees
# jarofgreen Oh https://denof.theoccasionoctopus.net/a/w3_social_web_incubator_community_group/manage/event is list
# cwebber2` Zakim, bye
Zakim left the channel
# cwebber2`
# cwebber2` RRSAgent, create minutes
# RRSAgent I have made the request to generate https://www.w3.org/2021/02/06-social-minutes.html cwebber2`
# cwebber2` RRSAgent, bye
RRSAgent left the channel
# jarofgreen Follow @w3_social_web_incubator_community_group@denof.theoccasionoctopus.net
# Grishka jarofgreen, I can't follow it because it doesn't have a public key
# cwebber2` I have some demos that can show off where I'm taking things in Spritely, but it's a bit off the AP path because the AP integration stuff is planned but isn't there yet... but there are other components relevant to where I think we can go. but not sure if that's appropriate for a demo meeting at the socialcg
# cwebber2` and not in the next month ;)
sl007 joined the channel
# jarofgreen Grishka: by it, you mean the the actor object for that account?
# jarofgreen Grishka: 2 secs
# sl007 re. link relations in html for clients I referred to https://tools.ietf.org/html/rfc6903#section-3
# Grishka the actor yes
# sl007 ups, only https://tools.ietf.org/html/rfc6903
# jarofgreen Grishka: publicKey field?
# Grishka yes
# Grishka it's there now
# jarofgreen Grishka: intersting, that did not change in the last 10 mins
# Grishka the field is there but my server complains that it's not
# Grishka ah I see the problem
# jarofgreen ?
# Grishka I implement the JSON-LD fully (it took a lot of pain to debug) so I convert everything to my namespace
# Grishka you need to add w3 security url
# Grishka add https://w3id.org/security/v1 to your @context
# Grishka *to my context, not namespace
# jarofgreen Grishka: Ok, 2 mins, so context should be a list with both? sorry, I’m not fully into Json-LD
# Grishka is too spoiled by modern IM services that allow editing messages
# Grishka yes, as an array
# Grishka try fetching https://friends.grishka.me/users/1, it's there, along with a bunch of my custom fields as aliases
# jarofgreen Grishka: give me 2 mins to deploy to test server and I’ll give you a actor there to try following
# Grishka ok
# Grishka yes that's my name in Russian
# jarofgreen Grishka: try @opentechcalendar_test@test.theoccasionoctopus.net
# Grishka ok it did accept the actor so that's a good start
# jarofgreen Grishka: great! If your software doesn’t parse event objects you’ll have to wait till friday to get a note object tho.
# jarofgreen Grishka: you appear on https://test.theoccasionoctopus.net/a/opentechcalendar_test/manage/profile properly
# Grishka I sent a Follow, then I shortly got Accept
{Follow}
but the http signature failed# Grishka it says that Host header isn't signed
# Grishka I can enable extra logging if you wish to debug this
# jarofgreen Grishka: we don’t include the host header
# jarofgreen Grishka: are there lists somewhere of what headers people do expect to be signed?
# Grishka yeah you need to include Host in there, and probably Digest too since Mastodon requires that as of latest version
# Grishka let me look that up in my code
# jarofgreen Grishka: signWithDigest line 341
# Grishka yeah but you need to include the digest itself into the signature ;)
# jarofgreen Grishka: I’ve seen Mastodon get ntes successfully so that works
# jarofgreen Grishka: I don’t know if the library I’m using does that, it may do
# Grishka here's how I do it
# Grishka I added "algorithm=rsa-sha256" since and changed things around to work for groups as well but the gist of it is the same
# Grishka PeerTube wanted the algorithm part
# jarofgreen Grishka: let me test adding host, may put on test server in 3 mins
# nightpool[m] peertube is behind the times, the IETF has been trying to remove "algorithm" from the spec for a couple of versions now
# jarofgreen are there lists somewhere of what headers people do expect to be signed?
# jarofgreen That could e very handy for people working on interop
# nightpool[m] Not right now. The Digest requirement is a relatively new requirement for Mastodon, i don't know if we did a good enough job of documenting it
# Grishka I require (request-target), date and host, and if digest is present, I verify that it matches the actual request hash
# Grishka *request body hash
# Grishka nightpool[m] well I did find out about it by surprise, seeing too many errors in my log while posting activities to some mastodon instances, so I figured out it was a recent change indeed
# jarofgreen Such a wiki page would be very useful, no? Maybe I’ll suggest in socialhub
# Grishka and it seemed to enforce that somewhat selectively because my replies still got through
# jarofgreen Grishka: try again now
# jarofgreen Grishka: there is an account testone on that server if you want to follow something else
# Grishka it worked now 👍
# nightpool[m] https://github.com/tootsuite/mastodon/blob/main/app/controllers/concerns/signature_verification.rb#L127-L132 has the logic for mastodon
# jarofgreen Grishka: Great! And I can still exchange follows with Mastodon so I think that works
# jarofgreen Grishka: I’ll ping you on IRC when that goes on the live server
# Grishka ok
# jarofgreen jarofgreen: Oh https://denof.theoccasionoctopus.net/a/w3_social_web_incubator_community_group/manage/event is list - oh rats, whoever clicked on that sorry
# jarofgreen the correct URL is https://denof.theoccasionoctopus.net/a/w3_social_web_incubator_community_group/event
# jarofgreen manage/ URL is only for account owners. I thought it would be good to redirect from that to public pages cos at some point somene would copy and paste that and it would go wrong …. and then I did it. Must get round to putting that redirect in
includeals_, tenma_ and someonewithpc_ joined the channel
# jarofgreen Grishka: it won’t be live today tho - hopefully tomorro
# Ariadne these meetings always happen at like 8 AM where i live
# sl007 I think we should start with 9 AM pacific cause on the other end people on the islands have no internet anyway. Unfortunately.
# Ariadne rhiaro: mountain
# Grishka what would that be in Moscow timezone?
# Grishka GMT+3
# Ariadne i was planning to show jejune (which is a tumblr-like blogging engine 100% built on AP C2S) this morning, but decided sleeping was better
# Ariadne :P
sl007 and dmitriz joined the channel
# Grishka anyway, that's me rn https://xkcd.com/448/
# Loqi [XKCD] Good Morning https://imgs.xkcd.com/comics/good_morning.png
sl007 and dmitriz joined the channel