openbiblio.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
Der Einstieg in das Fediverse für Bibliotheksmenschen

Administered by:

Server stats:

658
active users

#fedidev

1 post1 participant0 posts today
Jeff Sikes<p>Listen, as someone that follows many fediverse platforms, <span class="h-card" translate="no"><a href="https://hachyderm.io/@thisismissem" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>thisismissem</span></a></span> is one of the most active in the community. She has jumped in and assisted with security and ActivityPub issues across them all.</p><p>Please consider contributing to her tip jar if you can, especially for this last bit of advocacy work. Find her contribution options on her profile.</p><p><a href="https://hachyderm.io/@thisismissem/114268511720117041" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">hachyderm.io/@thisismissem/114</span><span class="invisible">268511720117041</span></a></p><p><a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a></p>
@reiver ⊼ (Charles) :batman:<p>A reasonable ActivityPub / ActivityStreams API to schedule something to be posted in the future might be — to HTTP POST something to an account's outbox with the `published` field set to a date-time in the future.</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a></p>
@reiver ⊼ (Charles) :batman:<p>Currently, the way I am determining if content is valid ActivityPub / ActivityStreams content is —</p><p>№1:</p><p>Determining if it is valid JSON.</p><p>№2:</p><p>Checking if it has a "type" field.</p><p>And that is it.</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a> <a href="https://mastodon.social/tags/JSONLD" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JSONLD</span></a></p>
@reiver ⊼ (Charles) :batman:<p>Dealing with JSON-LD would be easier in many ways if everything was defined inline.</p><p>Rather than having to get the content from a URL in the context, parse it, etc.</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a> <a href="https://mastodon.social/tags/JSONLD" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JSONLD</span></a></p>
洪 民憙 (Hong Minhee)<p>Hello <a translate="no" class="h-card u-url mention" href="https://mastodon.social/@MastodonEngineering" rel="nofollow noopener noreferrer" target="_blank">@<span>MastodonEngineering</span></a>,</p><p>I wanted to share some feedback on the documentation provided in the <a href="https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/" rel="nofollow noopener noreferrer" target="_blank"><em>Highlighting Journalism on Mastodon</em></a> blog post.</p><p>Specifically, in <a href="https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/#the-technical" rel="nofollow noopener noreferrer" target="_blank"><em>The technical</em></a> section, the example code for the <code>fediverse:creator</code> meta tag is given as:</p><pre><code>&lt;meta name="fediverse:creator" content="@Gargron@mastodon.social" /&gt; </code></pre><p>Based on my testing (and that of others), Mastodon doesn't seem to recognize the creator link correctly when the leading <code>@</code> is present in the <code>content</code> attribute. It only works when the <code>@</code> is removed, like this:</p><pre><code>&lt;meta name="fediverse:creator" content="Gargron@mastodon.social" /&gt; </code></pre><p>Following the blog's example directly led to some wasted time figuring out why it wasn't working. It would be great if either the example in the blog post could be corrected to reflect the current requirement, or if Mastodon's parser could be made more flexible to accept the handle with or without the leading <code>@</code>.</p><p>Appreciate all you do for <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/Mastodon" target="_blank">#<span>Mastodon</span></a>!</p><p><a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fedidev" target="_blank">#<span>fedidev</span></a> <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fediverse" target="_blank">#<span>fediverse</span></a></p>
Andrew Graves :arch: :linux:<p>I've been thinking of contributing to the <a href="https://fosstodon.org/tags/fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>fediverse</span></a> for a while now, but I haven't really found a project or an idea that would fit my tech stack requirements yet.</p><p>Like Pixelfed and Loops have a PHP backend, but I'd rather contribute something with Golang or Typescript/Javascript.</p><p>Does anyone have some ideas?</p><p><a href="https://fosstodon.org/tags/fedidev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>fedidev</span></a></p>
洪 民憙 (Hong Minhee)<p>I received a heartwarming <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/testimonial" target="_blank">#<span>testimonial</span></a> about <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/Fedify" target="_blank">#<span>Fedify</span></a> today!</p><p><a translate="no" class="h-card u-url mention" href="https://hackers.pub/@bgl" rel="nofollow noopener noreferrer" target="_blank">@<span>bgl</span></a> shared in the <a href="https://fedidev.kr/" rel="nofollow noopener noreferrer" target="_blank">FediDev KR</a> Discord server:</p> <blockquote> <p>I had trouble finding good resources explaining ActivityPub, but after reading through the Fedify docs from start to finish, I feel like I've actually digested it.</p> </blockquote> <p>They also <a href="https://hackers.pub/@bgl/0195e1b3-cbd0-7715-aa58-c07a39ddf1b8" rel="nofollow noopener noreferrer" target="_blank">posted on their Hackers' Pub</a>:</p> <blockquote> <p>If you want to learn ActivityPub efficiently, just read the Fedify docs from beginning to end.</p> </blockquote> <p>This makes all the documentation work worthwhile. Glad our docs are helping people understand not just Fedify, but <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/ActivityPub" target="_blank">#<span>ActivityPub</span></a> itself.</p><p><a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fedidev" target="_blank">#<span>fedidev</span></a> <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fediverse" target="_blank">#<span>fediverse</span></a></p>
Fedify: an ActivityPub server framework<p>We're excited to announce the release of <a href="https://github.com/fedify-dev/fedify/releases/tag/1.5.0" rel="nofollow noopener noreferrer" target="_blank">Fedify 1.5.0</a>! This version brings several significant improvements to performance, configurability, and developer experience. Let's dive into what's new:</p><p><strong>Two-Stage Fan-out Architecture for Efficient Activity Delivery</strong></p><p><a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/Fedify" target="_blank">#<span>Fedify</span></a> now implements a smart fan-out mechanism for delivering activities to large audiences. This change is particularly valuable for accounts with many followers. When sending activities to many recipients, Fedify now creates a single consolidated message containing the activity payload and recipient list, which a background worker then processes to re-enqueue individual delivery tasks.</p><p>This architectural improvement delivers several benefits: <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/~/Context.sendActivity" rel="nofollow noopener noreferrer" target="_blank"><code>Context.sendActivity()</code></a> returns almost instantly even with thousands of recipients, memory consumption is dramatically reduced by avoiding payload duplication, UI responsiveness improves since web requests complete quickly, and the system maintains reliability with independent retry logic for each delivery.</p><p>For specific requirements, we've added a new <a href="https://fedify.dev/manual/send#optimizing-activity-delivery-for-large-audiences" rel="nofollow noopener noreferrer" target="_blank"><code>fanout</code></a> option with three settings:</p><pre><code>// Configuring fan-out behavior await ctx.sendActivity( { identifier: "alice" }, recipients, activity, { fanout: "auto" } // Default: automatic based on recipient count // Other options: "skip" (never use fan-out) or "force" (always use fan-out) ); </code></pre><p><strong>Canonical Origin Support for Multi-Domain Setups</strong></p><p>You can now explicitly configure a canonical origin for your server, which is especially useful for multi-domain setups. This feature allows you to set different domains for WebFinger handles and <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/ActivityPub" target="_blank">#<span>ActivityPub</span></a> URIs, configured through the new <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/federation/~/CreateFederationOptions.origin" rel="nofollow noopener noreferrer" target="_blank"><code>origin</code></a> option in <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/federation/~/createFederation" rel="nofollow noopener noreferrer" target="_blank"><code>createFederation()</code></a>. This enhancement prevents unexpected URL construction when requests bypass proxies and improves security by ensuring consistent domain usage.</p><pre><code>const federation = createFederation({ // Use example.com for handles but ap.example.com for ActivityPub URIs origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, // Other options... }); </code></pre><p><strong>Optional Followers Collection Synchronization</strong></p><p><a href="https://fedify.dev/manual/send#followers-collection-synchronization" rel="nofollow noopener noreferrer" target="_blank">Followers collection synchronization</a> (<a href="https://w3id.org/fep/8fcf" rel="nofollow noopener noreferrer" target="_blank">FEP-8fcf</a>) is now opt-in rather than automatic. This feature must now be explicitly enabled through the <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/~/SendActivityOptionsForCollection.syncCollection" rel="nofollow noopener noreferrer" target="_blank"><code>syncCollection</code></a> option, giving developers more control over when to include followers collection digests. This change improves network efficiency by reducing unnecessary synchronization traffic.</p><pre><code>await ctx.sendActivity( { identifier: sender }, "followers", activity, { preferSharedInbox: true, syncCollection: true, // Explicitly enable collection synchronization } ); </code></pre><p><strong>Enhanced Key Format Compatibility</strong></p><p>Key format support has been expanded for better interoperability. Fedify now accepts PEM-PKCS<a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/1" target="_blank">#<span>1</span></a> format in addition to PEM-SPKI for RSA public keys. We've added <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/~/importPkcs1" rel="nofollow noopener noreferrer" target="_blank"><code>importPkcs1()</code></a> and <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/~/importPem" rel="nofollow noopener noreferrer" target="_blank"><code>importPem()</code></a> functions for additional flexibility, which improves compatibility with a wider range of ActivityPub implementations.</p><p><strong>Improved Key Selection Logic</strong></p><p>The key selection process is now more intelligent. The <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/~/fetchKey" rel="nofollow noopener noreferrer" target="_blank"><code>fetchKey()</code></a> function can now select the public key of an actor if <code>keyId</code> has no fragment and the actor has only one public key. This enhancement simplifies key handling in common scenarios and provides better compatibility with implementations that don't specify fragment identifiers.</p><p><strong>New Authorization Options</strong></p><p>Authorization handling has been enhanced with new options for the <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/~/RequestContext.getSignedKey" rel="nofollow noopener noreferrer" target="_blank"><code>RequestContext.getSignedKey()</code></a> and <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/~/RequestContext.getSignedKeyOwner" rel="nofollow noopener noreferrer" target="_blank"><code>getSignedKeyOwner()</code></a> methods. This provides more flexible control over authentication and authorization flows. We've deprecated older parameter-based approaches in favor of the more flexible method-based approach.</p><p><strong>Efficient Bulk Message Queueing</strong></p><p>Message queue performance is improved with bulk operations. We've added an optional <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/federation/~/MessageQueue.enqueueMany" rel="nofollow noopener noreferrer" target="_blank"><code>enqueueMany()</code></a> method to the <a href="https://jsr.io/@fedify/fedify@1.5.0/doc/federation/~/MessageQueue" rel="nofollow noopener noreferrer" target="_blank"><code>MessageQueue</code></a> interface, enabling efficient queueing of multiple messages in a single operation. This reduces overhead when processing batches of activities. All our message queue implementations have been updated to support this new operation:</p><ul> <li><a href="https://github.com/fedify-dev/redis" rel="nofollow noopener noreferrer" target="_blank">@fedify/redis</a> 0.4.0</li><li><a href="https://github.com/fedify-dev/postgres" rel="nofollow noopener noreferrer" target="_blank">@fedify/postgres</a> 0.3.0</li><li><a href="https://github.com/fedify-dev/amqp" rel="nofollow noopener noreferrer" target="_blank">@fedify/amqp</a> 0.2.0</li> </ul><p>If you're using any of these packages, make sure to update them alongside Fedify to take advantage of the more efficient bulk message queueing.</p><p><strong>CLI Improvements</strong></p><p>The Fedify command-line tools have been enhanced with an improved web interface for the <a href="https://fedify.dev/cli#fedify-inbox-ephemeral-inbox-server" rel="nofollow noopener noreferrer" target="_blank"><code>fedify inbox</code></a> command. We've added the Fedify logo with the cute dinosaur at the top of the page and made it easier to copy the fediverse handle of the ephemeral actor. We've also fixed issues with the web interface when installed via <a href="https://docs.deno.com/runtime/reference/cli/install/" rel="nofollow noopener noreferrer" target="_blank"><code>deno install</code></a> from <a href="https://jsr.io/@fedify/cli" rel="nofollow noopener noreferrer" target="_blank">JSR</a>.</p><p><strong>Additional Improvements and Bug Fixes</strong></p><ul> <li>Updated dependencies, including <em>@js-temporal/polyfill</em> to 0.5.0 for Node.js and Bun</li><li>Fixed bundler errors with <em>uri-template-router</em> on Rollup</li><li>Improved error handling and logging for document loader when KV store operations fail</li><li>Added more log messages using the LogTape library</li><li>Internalized the multibase package for better maintenance and compatibility</li> </ul> <p>For the complete list of changes, please refer to the <a href="https://github.com/fedify-dev/fedify/releases/tag/1.5.0" rel="nofollow noopener noreferrer" target="_blank">changelog</a>.</p><p>To update to Fedify 1.5.0, run:</p><pre><code># For Deno deno add jsr:@fedify/fedify@1.5.0 # For npm npm add @fedify/fedify@1.5.0 # For Bun bun add @fedify/fedify@1.5.0 </code></pre><p>Thank you to all contributors who helped make this release possible!</p><p><a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fedidev" target="_blank">#<span>fedidev</span></a> <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fediverse" target="_blank">#<span>fediverse</span></a></p>
@reiver ⊼ (Charles) :batman:<p>The ActivityPub specification does not have an example of the "sharedInbox" field in use.</p><p>Although it does say "An optional endpoint..." — I suspect a lot of people won't know (with confidence) that it can go under the "endpoints" field. For example:</p><p>"endpoints": {<br> "sharedInbox": "https://social.example/inbox"<br> },</p><p>Especially if the person is still trying to understand ActivityPub, and isn't aware of the "endpoints" field yet.</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a> <a href="https://mastodon.social/tags/SharedInbox" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SharedInbox</span></a></p>
Jeff Sikes<p>New API filter action in Mastodon that fedi app developers will want to know about.</p><p>Filters can now include a new filter_action of “blur”. Media attachments in posts matching the criteria should then be blurred by the client app based on the FilterResult object attached.</p><p><a href="https://docs.joinmastodon.org/methods/filters/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">docs.joinmastodon.org/methods/</span><span class="invisible">filters/</span></a></p><p><a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/MastodonAPI" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>MastodonAPI</span></a></p>
@reiver ⊼ (Charles) :batman:<p>"Activities addressed to this special [public address] URI shall be accessible to all users, without authentication."</p><p><a href="https://www.w3.org/TR/activitypub/#public-addressing" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">w3.org/TR/activitypub/#public-</span><span class="invisible">addressing</span></a></p><p>The "public address" is:<br><a href="https://www.w3.org/ns/activitystreams#Public" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">w3.org/ns/activitystreams#Publ</span><span class="invisible">ic</span></a></p><p>(Yes, I am posting this for a reason.)</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a> <a href="https://mastodon.social/tags/PublicAddressing" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PublicAddressing</span></a></p>
@reiver ⊼ (Charles) :batman:<p>2/</p><p>I think there is a need for a "dumb" document format. </p><p>HTML is no longer that.</p><p>Markdown probably isn't it.</p><p>No one really uses enriched-text (IETF RFC 1896).</p><p>(I prefer wiki like formats, for various reasons, but —)</p><p>I don't think there is an obvious choice for a "dumb" document format, right now.</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a></p>
@reiver ⊼ (Charles) :batman:<p>1/</p><p>I think HTML being the default content type for ActivityPub / ActivityStreams is unfortunate in some ways.</p><p>HTML was originally a "dumb" document format. But, it is now a "smart" application format — with privacy &amp; security concerns.</p><p><a href="https://mastodon.social/@reiver/108237663610634862" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/@reiver/108237</span><span class="invisible">663610634862</span></a></p><p>You should NOT just take whatever HTML is in the 'content', and put it in the web-browser to view it.</p><p>You have to sanitize it. Or, render (unsafe) HTML to (safe) HTML.</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a></p>
@reiver ⊼ (Charles) :batman:<p>Previews in ActivityPub / ActivityStreams is what should bind the disparate software and user-experiences on the Fediverse.</p><p>Not the ActivityStreams 'Note'.</p><p>...</p><p>Previews using 'icon', 'image', 'name', 'summary', etc.</p><p><a href="https://mastodon.social/tags/ActivityPub" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a> <a href="https://mastodon.social/tags/TheMastodonInTheRoom" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TheMastodonInTheRoom</span></a> <a href="https://mastodon.social/tags/SocialWeb" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SocialWeb</span></a></p>
洪 民憙 (Hong Minhee)<p>I just discovered why some of my followers from larger <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/Mastodon" target="_blank">#<span>Mastodon</span></a> instances (like mastodon.social) would mysteriously unfollow me after a while!</p><p><a href="https://github.com/mastodon/mastodon/pull/34272" rel="nofollow noopener noreferrer" target="_blank">A pull request was just merged in Mastodon that fixes a critical bug in their follower synchronization mechanism.</a></p><p>Turns out Mastodon implements the <a href="https://w3id.org/fep/8fcf" rel="nofollow noopener noreferrer" target="_blank">FEP-8fcf</a> specification (<em>Followers collection synchronization across servers</em>), but it expected all followers to be in a single page collection. When followers were split across multiple pages, it would only see the first page and incorrectly remove all followers from subsequent pages!</p><p>This explains so much about the strange behavior I've been seeing with <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/Hollo" target="_blank">#<span>Hollo</span></a> and other <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/Fedify" target="_blank">#<span>Fedify</span></a>-based servers over the past few months. Some people would follow me from large instances, then mysteriously unfollow later without any action on their part.</p><p>Thankfully this fix has been marked for backporting, so it should appear in an upcoming patch release rather than waiting for the next major version. Great news for all of us building on <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/ActivityPub" target="_blank">#<span>ActivityPub</span></a>!</p><p>This is why I love open source—we can identify, understand, and fix these kinds of interoperability issues together. 😊</p><p><a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fediverse" target="_blank">#<span>fediverse</span></a> <a class="mention hashtag" rel="nofollow noopener noreferrer" href="https://hollo.social/tags/fedidev" target="_blank">#<span>fedidev</span></a></p>
@reiver ⊼ (Charles) :batman:<p>3/</p><p>I think it would be better for the Fediverse if back-end servers and front-end clients were not only decoupled, but separate projects.</p><p><a href="https://mastodon.social/@reiver/111030466318220760" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/@reiver/111030</span><span class="invisible">466318220760</span></a></p><p><a href="https://mastodon.social/@reiver/111223320383410948" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/@reiver/111223</span><span class="invisible">320383410948</span></a></p><p><a href="https://mastodon.social/@reiver/112746651794313514" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/@reiver/112746</span><span class="invisible">651794313514</span></a></p><p><a href="https://mastodon.social/@reiver/112921051726027193" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/@reiver/112921</span><span class="invisible">051726027193</span></a></p><p>People being able to have a service acting on their behalf as (at least part of) the back-end could be a path towards this back-end / front-end decoupling and separation.</p><p><a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a></p>
@reiver ⊼ (Charles) :batman:<p>2/</p><p>In fact, it is an old idea. I remember ideas like this floating around in the 1990s. Including in the P2P scene.</p><p>(It is common for ideas to get rediscovered over and over and over again. Different people trying to solve similar problems, and independently coming up with similar solutions.)</p><p><a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a></p>
@reiver ⊼ (Charles) :batman:<p>1/</p><p>In many ways, I like the basic idea of ActivityPods, Bluesky PDS, Account Abstraction.</p><p><a href="https://mastodon.social/@reiver/114216978158867263" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/@reiver/114216</span><span class="invisible">978158867263</span></a></p><p>A service acting on your behalf, and in many ways representing you (the user), with other software.</p><p>And something to which data gets "attached".</p><p><a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a></p>
@reiver ⊼ (Charles) :batman:<p>3/</p><p>But — then, ActivityPods seems to have a spec:</p><p><a href="https://activitypods.org/specs/activitypods" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">activitypods.org/specs/activit</span><span class="invisible">ypods</span></a></p><p>And talks about supporting other specs:</p><p><a href="https://activitypods.org/specs/activitypub" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">activitypods.org/specs/activit</span><span class="invisible">ypub</span></a></p><p><a href="https://activitypods.org/specs/solid" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">activitypods.org/specs/solid</span><span class="invisible"></span></a></p><p><a href="https://mastodon.social/tags/ActivityPods" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPods</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a> <a href="https://mastodon.social/tags/FOSDEM2025" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FOSDEM2025</span></a> <a href="https://mastodon.social/tags/SocialWebFOSDEM" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SocialWebFOSDEM</span></a></p>
@reiver ⊼ (Charles) :batman:<p>2/</p><p>When I re-watch this talk (that was originally presented at FOSDEM 2025) —</p><p><a href="https://peertube.virtual-assembly.org/videos/watch/a8dc6bcc-8cef-485e-bfd8-438f1bfc04d2" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">peertube.virtual-assembly.org/</span><span class="invisible">videos/watch/a8dc6bcc-8cef-485e-bfd8-438f1bfc04d2</span></a></p><p>— it seems as if ActivityPods is software.</p><p>But —</p><p><a href="https://mastodon.social/tags/ActivityPods" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ActivityPods</span></a> <a href="https://mastodon.social/tags/DeSo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DeSo</span></a> <a href="https://mastodon.social/tags/FediDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDev</span></a> <a href="https://mastodon.social/tags/FediDevs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FediDevs</span></a> <a href="https://mastodon.social/tags/Fediverse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fediverse</span></a> <a href="https://mastodon.social/tags/FOSDEM2025" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>FOSDEM2025</span></a> <a href="https://mastodon.social/tags/SocialWebFOSDEM" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SocialWebFOSDEM</span></a></p>