W3C

– DRAFT –
Social Web Incubator CG

06 February 2021

Attendees

Present
cristina, cwebber2`, cypherhippie, dmitriz, Grishka, jarofgreen, nightpool[m], paul, rhiaro, sl, sl007
Regrets
-
Chair
nightpool[m]
Scribe
cwebber2`, rhiaro

Meeting minutes

hey folks, SocialCG meeting at the top of the next hour. We should have some demos today, on the theme of "diverse clients and generic servers"

<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 ;)

heh sl007 I am already tired ;) but sure

<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

maybe sl007, I'd like to hear from everyone else first though :)

<sl007> nightpool is Belgian beer w. waffles ok too? [reason: FOSDEM]

<cwebber2`> ;)

juan: just lurking

dmitriz: participated back in the day, solid spec editor as well

Intros

cristina: my 4th meeting, curious about the activities of this group

<cwebber2`> cristina: I'm interested in helping with legal, but I know today is more about demos

cristina: my background is in legal but increasingly tech

<rhiaro> cwebber2`: I'm coauthor of the activitypub spec along with other people

<rhiaro> ... and cochair of this cg

<rhiaro> ... these days I'm working on a research lab for the federated social web called spritely

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

jarofgreen: it's not using C2S

<jarofgreen> It’s not uing C2S so maybe I won’t demo today :-)

paul: I'm following this space because of my team (?), largely interested in the integration with decentralized identifiers

sl007: I'm sebastian, I'm working on an AP CMS called Redaktor

sl007: I've been attempting to find funding to build a team

sl007: I'm attending EU meetings to raise awareness with EU politicians

nightpool: ok great thanks everyone, great to see so many old and new faces here

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

nightpool: I can give a demo if nobody else has a thing

nightpool: I'm not seeing anyone in irc raising a demo?

<jarofgreen> I’ll demo a Non C2S thing later, after the C2S stuff

Demos

rhiaro: *showing rhiaro.co.uk and client*

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

rhiaro: I have a bunch of clients which are essentially web forms... they're all super simple

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

rhiaro: so for checkins, I made a set of buttons where it fetches these locations from my site

rhiaro: so that's how I can show off what the buttons say

rhiaro: it shows off a bunch of debugging information

rhiaro: if if I go to /where it says I'm in transit

rhiaro: this is replicator which I use to log foods

rhiaro: and this just composes an activitystreams json blob using an extension I made myself logging Eats which is a non-standard activity (?)

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

rhiaro: *demonstrates posting a note*

rhiaro: so this does some fun processing stuff like currency conversion, etc

rhiaro: also parses the tags, makes sure all tags are parsed and etc

rhiaro: I can do a PR with a blob and it just stores it

rhiaro: whether it can do further processing might depend on what activity type comes through

rhiaro: and most recent one I've been logging is to log travel... mostly using star trek names

rhiaro: this shows off specialized clients, and how clients can be very purpose specific and do their one job really well

rhiaro: this travel one can also pull some places listed from elsewhere in my website

rhiaro: if I haven't already logged someplace it'll choose a place and a name and etc

rhiaro: there are no extensions etc... this is an activitystreams travel activity...

rhiaro: this populates my map *shows map*

rhiaro: and the travel posts themselves... looks like this... with some maps...

rhiaro: *shows rendered maps and posts*

jarofgreen: how much is custom server stuff or how much generic?

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

rhiaro: it's all on github, you can find the outbox file...

nightpool: I'm interested in what the server looks like

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

rhiaro: that's exactly right... for each of those posts created it goes to a different type

rhiaro: the fact that the type converts to templates is kind of a by-the-by

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

rhiaro: this is the outbox... this is the file for the link relation, etc

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

rhiaro: here's where it collects deals with the collection, currency conversion, etc

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

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)

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

<rhiaro> https://github.com/rhiaro/sloph

sl007: could add the link?

rhiaro: just done

nightpool: well that's awesome, I love seeing people do c2s in their day-to-day

nightpool: I know of another person doing it regularly but not others, but I love seeing it

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

nightpool: it fetches and displays their post, works with pleroma, mastodon, a few others

nightpool: *deals with all the fun of figuring out how to pass around permission to screen share with rhiaro*

nightpool: this is fairly simple. I can just type in an outbox here

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

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

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

nightpool: we call render page which creates a new div... calls render post...

nightpool: we kind of go down this way... if it's create we do this thing, an announce another...

nightpool: this was meant to be a simple way to debug the flow of fetching things

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

nightpool: so eg who replied to them, the way twitter/tumblr would...

nightpool: cool yeah, there's the render content / username / etc....

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

nightpool: or you can resolve say actor.outbox

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

nightpool: and then just a couple of placeholder functions here...

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

rhiaro: you could try my outbox for my server? shouldn't have troubles with CORS

nightpool: tests, it's fetching

nightpool: as I was saying about json-ld fetching...

nightpool: oops, I see, outgoing I'm expecting orderedcollection with paging...

rhiaro: ah right, I could add paging

nightpool: yeah so there's a lot of nested resources you have to fetch often, so there's a lot of placeholders...

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

nightpool: cool anyone have any questions?

<rhiaro> nightpool[m]: try https://rhiaro.co.uk/notes ..

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...

nightpool: no state management, hence continuing to append

nightpool: as said, simple client, but helpful for exploring

sl007: I have a question

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

sl007: I just encourage everyone to use q+ on irc to speak up, or you can raise your hand on bbb

rhiaro: I did test interoperability with dokelei at one point

rhiaro: Grishka has given an example on irc

nightpool: looks like I'm having a cors issue there...

Grishka: I don't think I've set that header... only for webfinger

nightpool: *enters it in, and it works*

Grishka: oh nice, I implemented C2S without realizing it

nightpool: as you can see I'm distrusting all html returned by the server... I should probably add a sanitization library

nightpool: so for example, here you can see... ah, you're making this into a link

Grishka: it saves html into the database... then it's frozen like that forever

nightpool: cool! thanks everyone for indulging my very small demo!

*applause*

rhiaro: that makes jarofgreen next

jarofgreen: right *sets up screen sharing*

jarofgreen: I've come from a background of doing a lot around listing and discovering events

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

jarofgreen: it's about event discovery...

jarofgreen: so you can register your event

jarofgreen: you can create your account, create your profile, follow other people

jarofgreen: so once you've followed other people you can see all the events that person has posted on their account

<rhiaro> everybody, i'ts worth mentioning that jarofgreen's project mirrors the SocialCG calendar which then sends you AP notifications when it's coming up

jarofgreen: so then you can add that to your account... I can add that to my events...

jarofgreen: now I can share that one with other people

jarofgreen: I think this one's interesting, so I'll test that event here... I can select the privacy settings...

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

jarofgreen: so it's about event discovery... can see what's coming up, what it attends... no tickets about RSVPs, etc, just events

jarofgreen: the idea of [community|crowd]sourcing data, wrote some blogposts about how to do that usefully

jarofgreen: I'll go through some features talking about AP

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....

jarofgreen: we also have a tags feature...

jarofgreen: we can have different tags... so each room in fosdem is a different tag...

jarofgreen: you can use tags to organize different events...

jarofgreen: I'm interestd to see if I can use AS2 collections

jarofgreen: you can also import ical2 as well

jarofgreen: you can import it straight in, these events now available

jarofgreen: we're using AP for follows, notification, etc

jarofgreen: so you can get notification for new content...

jarofgreen: however there's a few things not natively in AP events

jarofgreen: one of the things not there is timezones

jarofgreen: in AP there's timezones... if youw ant to take an event, let people do things to it, etc...

jarofgreen: that all can get problematic... you need the name of the timezone you're in

jarofgreen: it gets very detailed into timezones... which I've just realized...

jarofgreen: oh yes, I should have mentioned... we also have recurring events

jarofgreen: so this sunday lunch has a recurrence rule

jarofgreen: so that's the actual R rule

jarofgreen: but again AP doesn't have recurring events

jarofgreen: with this event here... has a recurrence event

jarofgreen: could send through an ap object for every recurrence... but that could get huge

jarofgreen: so that's probably not great... ways to do occurrence is a question...

jarofgreen: but as for deleting events not sure how to map that

jarofgreen: so yeah we're using AP for notification between servers

jarofgreen: if we detect both servers are running our software we use our own api

jarofgreen: so kind of AP

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

jarofgreen: so thats' our attempt to bring listing functionality to servers tahat don't understand event objects

jarofgreen: finally I'll say I've made an account for meetings in this group, you can follow here

jarofgreen: experiment with event object subscriptions

jarofgreen: would be cool tot try this with other AP software

jarofgreen: that's it!

sl007: I think there's more to discuss, can I say something?

nightpool: have to go soon but can it be short?

sl007: yes, so I want to thank about recurring events for jarofgreen

sl007: so for example people coming back every week to this group

sl007: so with c2s we saw everyone do thigns working with very different languages

sl007: so my opinion is there's no need for new servers without c2s

sl007: we should talk about specification that respects the different aspects of implementations

sl007: the mastodon applications for example show off challenges with their own acceptance to types (?) and generic servers

sl007: if we can have everyone implement another server in another programming language

nightpool: definitely, think there's more spaces for other servers

<jarofgreen> https://www.theoccasionoctopus.net/ is software. https://medium.com/opendatacoop/challenges-in-community-data-mapping-941cdbef6be8 is blog post

nightpool: I think clients are the other biggest thing

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

Grishka: it's very important, convenient

Grishka: I'm going to implement those

Grishka: on top of groups I'm making now

<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

nightpool: we're over time, if people want ot keep talking we should talk on irc

dmitriz: when's th enext call?

<jarofgreen> Fri February 12th 2021 5:00pm to Fri February 12th 2021 6:00pm (Europe/London)

nightpool: I believe next friday

rhiaro: yes that's right, next week's is to talk about making hashtag a formal discussion

rhiaro: time will be next friday but two hours later

nightpool: thanks everyone!

<Grishka> we should be doing more of these demo kind of meetings

<jarofgreen> Oh https://denof.theoccasionoctopus.net/a/w3_social_web_incubator_community_group/manage/event is list

Minutes manually created (not a transcript), formatted by scribe.perl version 127 (Wed Dec 30 17:39:58 2020 UTC).

Diagnostics

Succeeded: s/it's using C2S/it's not using C2S

Succeeded: s/rhiaro: I have a demo showing off some client-showing-stuff/TOPIC: Demos

Succeeded: s/firday/friday

Maybe present: juan, nightpool