10:17:32 RRSAgent has joined #activitypub-browser 10:17:36 logging to https://www.w3.org/2025/03/26-activitypub-browser-irc 10:17:36 RRSAgent, do not leave 10:17:37 RRSAgent, this meeting spans midnight 10:17:37 RRSAgent, make logs public 10:17:38 Meeting: Browser experience of ActivityPub social networking 10:17:38 Chair: Evan Prodromou 10:17:38 Agenda: https://github.com/w3c/breakouts-day-2025/issues/4 10:17:38 Zakim has joined #activitypub-browser 10:17:39 Zakim, clear agenda 10:17:39 agenda cleared 10:17:39 Zakim, agenda+ Pick a scribe 10:17:41 agendum 1 added 10:17:41 Zakim, agenda+ Reminders: code of conduct, health policies, recorded session policy 10:17:41 agendum 2 added 10:17:41 Zakim, agenda+ Goal of this session 10:17:42 agendum 3 added 10:17:42 Zakim, agenda+ Discussion 10:17:42 agendum 4 added 10:17:43 Zakim, agenda+ Next steps / where discussion continues 10:17:44 agendum 5 added 10:17:44 Zakim, agenda+ Adjourn / Use IRC command: Zakim, end meeting 10:17:44 agendum 6 added 10:17:44 breakout-bot has left #activitypub-browser 10:25:07 tidoust has joined #activitypub-browser 12:58:07 eprodrom has joined #activitypub-browser 13:02:00 bumblefudge has joined #activitypub-browser 13:02:09 blarg forgot to write down the zoom ps 13:02:10 pw 13:02:40 https://www.w3.org/events/meetings/3c15ca06-8876-442e-a385-8eab2b64a55c/ 13:03:07 marie has joined #activitypub-browser 13:03:40 Zakim, start meeting 13:03:40 RRSAgent, make logs Public 13:03:42 please title this meeting ("meeting: ..."), eprodrom 13:03:48 present+ 13:03:55 present+ 13:04:01 meeting: Browser experience of ActivityPub social networking 13:04:06 krosylight has joined #activitypub-browser 13:04:09 pfefferle has joined #activitypub-browser 13:04:11 chair: Evan 13:05:22 present+ 13:05:39 dmitriz has joined #activitypub-browser 13:05:45 present+ 13:05:52 present+ pfefferie 13:05:58 emeyer has joined #activitypub-browser 13:06:17 present+ krosyligth 13:06:25 present+ emeyer 13:11:09 scribe: dmitriz 13:14:08 at _least_ one wg! hehe 13:20:20 scribe+ 13:21:02 eprodrom: (going through the slides, going over what ActivityPub is, and a few of the browser experience challenges) 13:21:02 tantek has joined #activitypub-browser 13:22:10 ... main challenges: following (or interacting with an Actor profile), interacting with a post (like, etc) on a different server pops up complicated UI of "let's get you logged in on your home server" 13:23:12 ... what are some ways to improve this? Outlined in: https://github.com/swicg/activitypub-html-discovery 13:23:50 ... `url` property, Link Header, Content Negotiations 13:24:23 ... sets up two-way linking between an HTML page and the JSON-LD data object 13:24:31 ... step 3: ActivityPub API client in the browser 13:25:45 ... Why? 1) gets credentials from home server, 2) Uses them throughout the web, 3) Does not lose context moving from server to server, 4) Re-centers the social web on the person at the keyboard 13:26:42 ... How? 1) Browser extensions (SocialWebFoundation working with Vivaldi). (Focus on Vivaldi first - they have their own Mastodon server). Many other browsers use the same architecture for extensions 13:28:40 ... UX challenge: a browser extension would add their own Follow button, but the HTML page still has the original Follow button too 13:29:01 ... possible fix: Declarative format for some activity types 13:29:15 ... "This button is for following the person referred to by this page" 13:29:26 ... (this way, extension can recognize that element, capture the click, etc) 13:29:46 ... Another option: Provide a JS API for the browser. "navigator.social.follow("evan@..."))" 13:30:13 ... yet another: better support for the 'acct:' URL format (used by Webfinger) 13:31:17 doesn't better support for webfinger URIs mean a protocol handler that browser extensions and/or external apps could register? 13:31:25 by analogy to mailto: links? 13:31:54 ah ok, one less hand to raise, haha 13:32:42 bumblefudge: what are the most desired kinds of feedback (from the group on this call)? 13:33:12 eprodrom: to start with, "did those slides / this conversation make sense in general?" 13:33:29 ... as in, have you run into this UX friction. Other suggestions for alternate solutions, etc 13:34:10 ... is there other work happening in this area? 13:34:34 aarongray: I'm looking at an Electron solution (a node running behind a browser) 13:34:40 ... I know it's an install solution... 13:35:02 ... I haven't looked at the AP HTML Discovery doc yet -- will it work on a domain/subdomain etc, via regex? 13:35:06 ... (path based) 13:35:10 eprodrom: yes, it should 13:37:36 https://docs.google.com/presentation/d/1qr_rDgdWPR9yZjg_PyjTNJqs3x6-nKXzIYtwtUkip1Q/edit?usp=sharing 13:38:47 but sadly custom-protocols are not really widely used/supported 13:38:59 dmitriz: I like this work, going in the direction. we may want to create a JS polyfill for the API 13:39:21 ... I know the main friction is the acct: protocol handlers in browsers. I wonder if we can start with 'web+acct:'? 13:39:30 eprodrom: yes, in fact this demo here does exactly that! 13:40:11 it is not supported by every browser and mastodon removed it because of the "bad user experience" 13:40:14 ... so we can start web+acct:, and also work on improving support for the RFC's acct: 13:40:53 bumblefudge: this reminds me of the declarative payment link approach that the cryptocurrency community experimented with over the years 13:41:05 ... Ethereum did the Browser API route (vs declarative). 13:41:29 ... you can sort of think of the acct: extension as an identity wallet. a separate agent, a trusted extension 13:42:13 ... in the Crypto space, what happened with the window.ethereum polyfill -- it was designed (a little too) trustfully -- a bunch of extensions have a race condition to capture the polyfill's invocation 13:42:21 ... extensions try to impersonate each other. 13:42:33 ... basically, in the end, Metamask abandoned it as irrecoverable. 13:43:11 ... instead, they're using to Manifest v3, basically being able to reference each extension (like Metamask) by a hash or signature 13:43:29 ... It won't be as bad in the ActivityPub space, but it's just one data point 13:43:55 ... the browser and page needs to be able to know exactly which polyfill / extension they're talking to 13:44:12 eprodrom: yes. challenge here is - there's a tension between the website and the extension, as to who can control the experience 13:44:19 ... we know the Web is the wild wild west etc 13:44:29 ... so of course we'll need to build in the necessary confirmations / guard rails 13:45:08 ... other questions? 13:45:09 (here the analogy to crypto wallets is good, because the webpage needs confirmation/error handling from the agent BUT WITHOUT DEANONYMIZING IT) 13:46:20 aarongray: I'm not familiar with the 'web+' notation 13:46:33 eprodrom: yes, that gets into the world of registering custom protocol handlers 13:48:43 bumblefudge: out of curiosity -- I know WebFinger predates ActivityPub. what sort of use case did they intend, for the acct: handler? 13:48:56 eprodrom: I think a general account URL type 13:50:07 https://datatracker.ietf.org/doc/html/rfc7565 for acct: URI scheme 13:50:28 eprodrom: if there are no more questions, we can wrap up! 13:50:45 ... So, we have a task force focusing on discovery, 13:50:56 ... but we don't have a TF for in-browser experience in general 13:51:02 ... so that might be an area to explore 13:51:18 ... things like the declarative markup, JS apis and polyfills, etc 13:52:16 dmitriz: I think that's a great idea. We can also widen the remit of the Discovery task force to be 'Discovery + Browser Experience' 13:52:30 eprodrom: yeah, it's the source of much tears in implementers. 13:52:47 ... there's some good prior art and patterns we can follow already, such as those used for RSS Feeds 13:52:51 ... that we can incorporate into this work 13:53:10 emeyer has left #activitypub-browser 13:53:10 tantek has joined #activitypub-browser 13:53:10 pfefferle has joined #activitypub-browser 13:53:10 krosylight has joined #activitypub-browser 13:53:10 bumblefudge has joined #activitypub-browser 13:53:10 eprodrom has joined #activitypub-browser 13:53:17 thank you evan and dmitri 13:53:22 rrsagent, make minutes 13:53:24 I have made the request to generate https://www.w3.org/2025/03/26-activitypub-browser-minutes.html marie 13:53:34 https://www.w3.org/community/socialcg/join 13:53:46 Hey, that was great, thanks dmitriz! 13:53:55 heyyy my pleasure! great session! 17:32:23 dmitriz has joined #activitypub-browser 18:12:29 dmitriz has joined #activitypub-browser 22:57:31 RRSAgent, bye 22:57:31 I see no action items