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://
<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://
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://
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://
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://
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://
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://