#saranixcan we also add using ActivtyPub for chat? It occurred to me that matrix.org is actually a more verbose and overly complicated protocol compared to AP (mostly thanks to http-sigs, actor objects, and fetchable room uris)
#saranixthe only thing that isn't immediately obvious to me is how to do presense status
cdchapman and cwebber2 joined the channel
#ajordan!tell fr33domlover the wiki can be really dumb with passwords. try a super simple one, I'm talking like 16 characters, alphanumeric only. that should eliminate any password complexity issues.
#cwebber2ajordan: I'm just coming home from... LP and then picking out an apartment in western MA :D
#cwebber2we got an offer already today. We are hoping for one other to also come through today but we will see... one way or another it looks like it's happening.
#fr33domloverajordan, if you use push-to-talk it's easier to get the sound settings working
#Loqifr33domlover: ajordan left you a message 10 hours, 47 minutes ago: the wiki can be really dumb with passwords. try a super simple one, I'm talking like 16 characters, alphanumeric only. that should eliminate any password complexity issues.
#ajordanfr33domlover: yeah ik but I still have to go through the wizard
#fr33domloverajordan, yeah i just mean the sound recognition stuff isn't critical etc. :)
#ajordaneprodrom: hi yeah my name's Evan Prodromou, I'm one of the coauthors of the AS2 spec and also one of the contributors to pump.io, a distributed social networking project
#ajordanaaronpk: awesome thanks, I think we should just jump right in
#ajordan... I see fr33domlover had a question about federation for project hosting using AP
#ajordan... I don't know much about that other than that sentence
#ajordanfr33domlover: I started working ~3 years ago on a repository hosting, sort of like GitLab
#aaronpkeprodrom: users can definitely be actors. issues probably don't need to be followed int he same way, but users and projects would make sense to be actors.
#aaronpkeprodrom: ultimately deciding what should be an actor in activitypub network is a question of "should I be able to follow this thing"
#aaronpkeprodrom: I have a question... have you thought about sketching out on the w3c wiki a diagram for this to get commetns and feedback?
#Loqi[evanp] #464 Add "likes" from ActivityPub to context
#ajordaneprodrom: so I think probably next steps is, I would do this in our GitHub repo and then I'll collaborate with sandro and rhiaro to get it pushed to W3C servers
#ajordanaaronpk: sorry is this basically a bug with the current context? AP says it should be a thing but it's not in the context?
#ajordanaaronpk: interesting, sounds like GitHub issues are a good place to track that
#ajordaneprodrom: the one thing is, I'd like to make sure we do as many of these as possible at once, so I'm gonna do a last pass over AP, add them to the context and ask sandro/rhiaro to do the push
#ajordaneprodrom: do we need to do a vote to approve that process?
#ajordanaaronpk: I don't think we need to do a vote? we could to document that that's the process we're following
#ajordan... and people here can provide feedback, as to whether that's a good idea
#ajordanaaronpk: anyone have thoughts about that? sounds like this is essentially a bugfix so I'm inclined to just let the editors roll with it since it's not creating anything new
#ajordanaaronpk: before we go back to fr33domlover's questions, does anything else have anythign to talk about? otherwise I think we should just go back to the original questions
#aaronpkajordan: let me think about it for a minute
#aaronpk... citation needed, but I think pump.io should accept anything it doesn't recognize, so as long as you provide some sort of sensible alternative content, like a fallback description in summary, then it should display
#aaronpk... and you can certainly add comments to that
#aaronpk... it might not show up in the pump web UI or clients, i'm not sure, but you could use a pump account. like if you had a client that displayed issues you could use your pump account
#aaronpk... you would need to write your own JSON-LD context so other implementations can understand that
#aaronpk... pump.io probably wont end up caring about that, but other implementations do
#aaronpkfr33domlover: great i'll end up doing that
#aaronpk... the spec says you can treat the data as plain JSON, so do implementations usualyl understand JSON-LD? would that be a problem? or can I trust them to accept what they don't understand
#aaronpkajordan: the answer is complicated. in the spec, all the authorization stuff is unspecified. in real life... let me find the wiki url
#aaronpk... what has happened in real life is all of the implementations have converged on this authentication scheme where server-to-server people use HTTP signatures and linked data signatures, so all implementations are full JSON-LD processing or they have a corner where they care about LD and the rest they treat it as plain JSON
#aaronpk... mastodon does it as mostly plain JSON, pump will do it as plain JSON
#aaronpk... kroeg will do json-ld, not sure about the others
#aaronpkfr33domlover: so either way I need JSON-LD for the things you linked
#saranixhmm... I suppose the same applies to my chat presense question... so if someone is "following" the room actor, they will get objects like { summary:"@foo is now away"}, but what should the type:{} be? Should it be a top-level activity of some kind? Since type:Add, object:type:{away status", etc.} seems kinda overly verbose
#aaronpkajordan: if someone is consuming JSON-LD you can treat it as plain json except for the signatures. if you're producing it then you have to worry more about JSON-LD
#ajordans/producing it/producing data with extensions/
#aaronpkfr33domlover: one more question. I was thinking about inbox/outbox for actors
#aaronpk... it adds new addresses like actorid/inbox actorid/outbox
#aaronpk... that differs from RESTFUL applications where you can get and post the object ID directly
#aaronpk... I had this thought, suppose a project is an actor, since a project is part of the application itself, it's not a person, it doesn't need to GET its own outbox or POST to its inbox
#aaronpk... so the only things you need from an outbox and inbox for a project is people need to be able to post to an inbox to send changes and get from the outbox to see events
#aaronpk... so if I make the inbox the same url as the actor, and the outbox can have a url like actorid/changes
#aaronpk... then if I want to make a project into an activitypub actor, I don't need to add a new URL to my application
#aaronpk... since the changes are already visible as an HTML page, so I can use the Accept header to return the activitystream
#aaronpk... in regular REST applications you post to the object to make changes, so if you use the same URL for the inbox as the actor then you can use the content-type header whether you're receiving plain JSON or HTML form input, it all goes to the same URL
#aaronpk... so I was wondering if that's okay, and not surprising to other implementations, that the inbox URL and actor ID are the same
#aaronpkajordan: off-hand, I don't think that should be a problem
#aaronpk... this has been discussed recently on IRC with saranix I think?
#aaronpk... it is worth noting that in activitypub, the client-to-server stuff is totally separate from server-to-server, so if you wanted to, you could implement a "regular" rest client-to-server API and then use activitypub for server-to-server.
#aaronpk... i'd encourage you not to of course, since if you implement activitypub client-to-server you get all the clients
#aaronpkfr33domlover: I noticed they're separate, and I agree I want the existing clients to be able to communicate
#aaronpk... so I think i'll go for what I said, making the inbox and actor id the same
#melodyi think saranix said they wanted to talk about chat on AP
#ajordanaaronpk: alright well in that case let's call the meeting early
#saranixBUMP: so if someone is "following" the room actor, they will get objects like { summary:"@foo is now away"}, but what should the type:{} be? Should it be a top-level activity of some kind? Since type:Create, object:type:{away status", etc.} seems kinda overly verbose
#ajordanaaronpk: well thanks everyone for coming, hope it's been useful and let's do it again in two weeks
#ajordan<ajordan> np! I've been slacking recently lol
#aaronpktrackbot is slacking so I think i'm gonna have to generate the minutes manually
#trackbotSorry, aaronpk, I don't understand 'trackbot is slacking so I think i'm gonna have to generate the minutes manually'. Please refer to <http://www.w3.org/2005/06/tracker/irc> for help.
#ajordanIRC logs got posted okay so I suppose everything is fine?
#melodychat-over-AP would be like, really super noisy for non-chat AP implementations, right?
#aaronpktrackbot didn't run so we don't have the nice minutes so i'll just paste my chat logs
#trackbotSorry, aaronpk, I don't understand 'trackbot didn't run so we don't have the nice minutes so i'll just paste my chat logs'. Please refer to <http://www.w3.org/2005/06/tracker/irc> for help.
#saranixmelody: yeah, but the thing that made me think it's worth doing is a colleague has this tagline on their emails for some app that boasts itself "view all your emails as a chat", which made me realise, it's all about how you Style it...
#fr33domloverIt's interesting to use AP for chat, however look at XMPP and Matrix etc. and see if they have stuff that AP can't do, something essential to IM
#fr33domloverJust to make sure the work isn't a waste of time and AP can do chat just as well as XMPP or Matrix
#ajordanalso aaronpk++ for taking over scribing while I talked
#saranixfr33domlover: I'm a researcher, I've been familiar with both XMPP and Matrix as they evolved, and I'm making the point that they SUCK compared to AP
#Loqitantek: fr33domlover left you a message 4 days ago: Yeah but it takes some discussion, it's hard to follow a slow paced async conversation on IRC, it needs something where messages are recorded like a mailing list (or just email when it's 1-on-1)
#tantek!tell fr33domlover our IRC messages are recorded like a public mailing list archive, see /topic :)
#ajordansaranix: I feel like it would be a better idea to do things the "right" way in AP, even if that means sending full objects, and then tack on extensions to make stuff more efficient
#ajordansaranix: like e.g. you could have a prop on actors that said "I can take non-full-object Edits"
#fr33domlovertantek, yeah but it doesn't mean people do over them like they go over an email inbox ^_^
#Loqifr33domlover: tantek left you a message 1 minute ago: our IRC messages are recorded like a public mailing list archive, see /topic :)
#tantekfr33domlover: that's a feature (one fewer inbox) not a bug :)
#ajordanyou could even experiment with hyperefficient transport, I know the XMPP people were at some point experimenting with a binary encoding of their XML
#ajordanI could imagine converting AS2 JSON to protobufs or something and sending that over the wire, that would be super efficient
#ajordanTCP keepalive will help a lot too, probably chat servers would make sure to respect those HTTP headers
#tantekajordan: was XML encoding really what accounted for time in perf? and compressing to binary would make what % diff?
#saranixajordan: but "away status" isn't necessarily a property of AP actors. it's an extension itself, so we could just as easily make it it's own first-class object and it would still be the "right" way
#aaronpkdoesn't http2 have some persistent and bidirectional stuff?
#tantekI'd expect more time loss from latency / network stuffs
#ajordantantek: well latency is only made worse by verbose XML
#melodyi can't think of how you'd model chat with AP, maybe you could do one-on-one chat but modeling rooms, permissions and moderation would be a problem -- this really doesn't work well with the follow semantics
#tantekajordan but noticeably worse? why waste time/code trying to optimze a 1% change (made up number)
#saranixmelody: none of the things you mentioned are different for "chat rooms" than they are for "forums", and no one is claiming that AP can't do forums
#saranixmelody: I disagree. You might want to take a look at how Hubzilla does forums
#ajordanI also can't remember if this was supposed to be a C2S or S2S optimization, or both
#ajordantantek: I don't know. it was a long time ago that I read about this
#ajordanI seem to recall that there was a *lot* of optimization so it was a lot better than just 1%. I have absolutely no idea if I'm remembering right but I think they did it so that both sides knew the schema and therefore you basically had to send the data and literally nothing else
#tantekajordan, it smells like tunnelvisioning akin to bikeshedding - profiling is hard, so let's optimize *part* of the problem without understanding if it actually contributes anything noticeable to the problem. Happens a lot in dev/engineering/standards circles.
#ajordanit's also more complicated than it seems because a lot of the XMPP folks are concerned about mobile perf, so there's stuff like well, if data is smaller you don't have to wake the radio for as long
#tantekand lots of (most?) devs/engs/standards folks like to tweak formats and protocols
#ajordantantek: definitely agree that tends to be a problem. I don't know for sure if it was in XMPP's case. FWIW they *did* get the low-hanging fruit before that
#ajordane.g. a big battery killer was setting up and tearing down TCP sessions on network changes so they've got a session resumption spec that's been around forever
#ajordantantek: again I don't know the details and don't want to try to defend something that for all I know never even made it to an official standard - just relaying what I remember
#tantekright. there are other problems with XMPP that others have pointed out above.
#tantekyeah I don't know about any particular extensions
#melodyi just think the scope of the changes you would need to make to do chat *well* on AP would probably make it resemble an actual chat protocol and would also make proper interop pretty much out of reach
#ajordanlooks like such an optimization never got done
#saranixWell so far I have all the basics figured out with no major problems. The worst being the status summaries being annoying, but my response to that is: Riot (matrix.org) didn't even add support to collapse annoying status changes until about 6 months ago, IRC has absolutely no solution for that and no one complains, and when Hubzilla federates to old versions of Diaspora, Likes also show up as annoying summary text, sso it's not like we're doing someth[CUT]
#ajordansaranix: you got cut of att "we're doing someth"
#melodythat came out meaner than i meant it to but like, F/OSS has a serious ongoing long-term usability problem and I think major UX issues are an inevitability if you tried to implement chat over AP
#saranixI happen to like IRC, and hubzilla. And Diaspora is passable, but certainly far superior to Mastodon. I find Mastodon to be grossly unusable, and yet it is super popular. I don't think you're being fair about what makes something popular.
#melodyspeaking of which, wouldn't a room's "feed' or whatever have to be an OrderedCollection (meaning, reverse-chronological order)?
#melodytypically a chat stream is presented chronologically
#saranixonly matters when fetching the "room history"... and databases don't really care what order you insert data... so... not a protocol problem