<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Stable Outbox Collection Pages]]></title><description><![CDATA[<p>Stable Outbox Collection Pages</p><p>1/</p><p>ActivityPub uses collections for a number of things:</p><p>• followers<br />• following<br />• inbox<br />• outbox</p><p>And, rather than dump everything in the collection into a single document, ActivityPub paginates using collection pages.</p><p>That's great.</p><p>But, how you divide up a collection into pages matters and affects things. Such as: caching.</p><p>I'll explain.</p><p><a href="https://mastodon.social/tags/ActivityPub" rel="tag">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" rel="tag">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/FediDev" rel="tag">#<span>FediDev</span></a></p>]]></description><link>https://bb.devnull.land/topic/a7c426b2-9fd5-4210-80e0-adcc0565b078/stable-outbox-collection-pages</link><generator>RSS for Node</generator><lastBuildDate>Mon, 01 Jun 2026 17:27:20 GMT</lastBuildDate><atom:link href="https://bb.devnull.land/topic/a7c426b2-9fd5-4210-80e0-adcc0565b078.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Jun 2026 11:03:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 15:42:39 GMT]]></title><description><![CDATA[<p><span><a href="/user/steve%40social.technoetic.com">@<span>steve</span></a></span> </p><p>Regarding Create and Updates activities for content that has been deleted  —</p><p>...</p><p>These could always be turned into Tombstones.</p><p>Which is easier to do with separate activity documents being pointed to from the outbox.</p><p>...</p><p>But, if the software wants to completely purge this data, then that would force a cache invalidation potentially across many collection pages.</p>]]></description><link>https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116675612501290120</link><guid isPermaLink="true">https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116675612501290120</guid><dc:creator><![CDATA[reiver@mastodon.social]]></dc:creator><pubDate>Mon, 01 Jun 2026 15:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 15:39:02 GMT]]></title><description><![CDATA[<p><span><a href="/user/steve%40social.technoetic.com">@<span>steve</span></a></span> </p><p>So, one technique could be that a server lists activity URLs for everything. Including information that requires HTTP authorization.</p><p>And the server would return a 401 or 403 for activities that the user is not auth'ed to view.</p><p>...</p><p>Alternatively, an auth'ed user could be redirected to another collection with other collection pages.</p><p>...</p>]]></description><link>https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116675598262343665</link><guid isPermaLink="true">https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116675598262343665</guid><dc:creator><![CDATA[reiver@mastodon.social]]></dc:creator><pubDate>Mon, 01 Jun 2026 15:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 15:33:32 GMT]]></title><description><![CDATA[<p><span><a href="/user/steve%40social.technoetic.com">@<span>steve</span></a></span> </p><p>I didn't talk about the following in this thread, because I was trying to keep its scope limited, but —</p><p>I think some of those things could be more easily addressed if value of the "orderedItems" or "items" was just a list of URLs each pointing to a document containing the activity.</p><p>...</p>]]></description><link>https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116675576598275237</link><guid isPermaLink="true">https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116675576598275237</guid><dc:creator><![CDATA[reiver@mastodon.social]]></dc:creator><pubDate>Mon, 01 Jun 2026 15:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 15:10:17 GMT]]></title><description><![CDATA[<p><span><a href="/user/reiver%40mastodon.social">@<span>reiver</span></a></span> With static/stable collection pages, how do you handle HTTP authorization (which disables HTTP shared caching by default)? For example, an outbox might have a combination of public and non-public activities so different users will see different pages and/or page contents. Also, one might not want to return Create and Updates activities for content that has been deleted (which could affect older static pages).</p>]]></description><link>https://bb.devnull.land/post/https://social.technoetic.com/users/steve/statuses/116675485190377800</link><guid isPermaLink="true">https://bb.devnull.land/post/https://social.technoetic.com/users/steve/statuses/116675485190377800</guid><dc:creator><![CDATA[steve@social.technoetic.com]]></dc:creator><pubDate>Mon, 01 Jun 2026 15:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 12:32:04 GMT]]></title><description><![CDATA[<p><span><a href="/user/reiver%40mastodon.social">@<span>reiver</span></a></span> I think there's a good trick where if your page size is N then your first page is always less than 2N, it's the volatile one, and when it gets to 2N you move N many to a next page and link it in. So your first page always has enough items.</p><p>Also, I think having static page objects, rather than offsets or fencepost items, is best for caching and traversal.</p>]]></description><link>https://bb.devnull.land/post/https://cosocial.ca/users/evan/statuses/116674863083289751</link><guid isPermaLink="true">https://bb.devnull.land/post/https://cosocial.ca/users/evan/statuses/116674863083289751</guid><dc:creator><![CDATA[evan@cosocial.ca]]></dc:creator><pubDate>Mon, 01 Jun 2026 12:32:04 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 11:22:08 GMT]]></title><description><![CDATA[<p><span><a href="/user/reiver%40mastodon.social">@<span>reiver</span></a></span> I agree</p>]]></description><link>https://bb.devnull.land/post/https://cosocial.ca/users/evan/statuses/116674588064573986</link><guid isPermaLink="true">https://bb.devnull.land/post/https://cosocial.ca/users/evan/statuses/116674588064573986</guid><dc:creator><![CDATA[evan@cosocial.ca]]></dc:creator><pubDate>Mon, 01 Jun 2026 11:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 11:14:20 GMT]]></title><description><![CDATA[<p>Stable Outbox Collection Pages</p><p>5/</p><p>To me,, having the newest page of the collection be varying length one feel like a better strategy.</p><p><a href="https://mastodon.social/tags/ActivityPub" rel="tag">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" rel="tag">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/FediDev" rel="tag">#<span>FediDev</span></a></p>]]></description><link>https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674557398672586</link><guid isPermaLink="true">https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674557398672586</guid><dc:creator><![CDATA[reiver@mastodon.social]]></dc:creator><pubDate>Mon, 01 Jun 2026 11:14:20 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 11:13:09 GMT]]></title><description><![CDATA[<p>Stable Outbox Collection Pages</p><p>4/</p><p>BUT, if instead — if the page with 3 items contains the 3 newest items, then —</p><p>Only the newest page would have to be recached. I.e., only 1 page churns not all.</p><p>All the other collection pages stay as is, and any cached copies of them as still valid.</p><p>Etc.</p><p><a href="https://mastodon.social/tags/ActivityPub" rel="tag">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" rel="tag">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/FediDev" rel="tag">#<span>FediDev</span></a></p>]]></description><link>https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674552750634909</link><guid isPermaLink="true">https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674552750634909</guid><dc:creator><![CDATA[reiver@mastodon.social]]></dc:creator><pubDate>Mon, 01 Jun 2026 11:13:09 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 11:12:02 GMT]]></title><description><![CDATA[<p>Stable Outbox Collection Pages</p><p>3/</p><p>If the page with 3 items contains the 3 oldest items, then — </p><p>Every time a new items is added to the collection, then every single collection page will change. I.e., they all churn.</p><p>Which means that all cached copies of any collection pages will be invalidated.</p><p>Which means a static site generator will have to regenerate all of them again.</p><p>Etc.</p><p>BUT, if instead —</p><p><a href="https://mastodon.social/tags/ActivityPub" rel="tag">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" rel="tag">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/FediDev" rel="tag">#<span>FediDev</span></a></p>]]></description><link>https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674548338475931</link><guid isPermaLink="true">https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674548338475931</guid><dc:creator><![CDATA[reiver@mastodon.social]]></dc:creator><pubDate>Mon, 01 Jun 2026 11:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Stable Outbox Collection Pages on Mon, 01 Jun 2026 11:06:32 GMT]]></title><description><![CDATA[<p>Stable Outbox Collection Pages</p><p>2/</p><p>Let's say a collection has 23 items, and each page 10 items in length.</p><p>That means you will have 2 pages with 10 items and 1 page with 3 items. </p><p>Should that page with 3 items be the 3 newest items or the 3 oldest items.</p><p>The choice affects caching and static site ease quite a bit.</p><p>Here is the answer...</p><p><a href="https://mastodon.social/tags/ActivityPub" rel="tag">#<span>ActivityPub</span></a> <a href="https://mastodon.social/tags/ActivityStreams" rel="tag">#<span>ActivityStreams</span></a> <a href="https://mastodon.social/tags/FediDev" rel="tag">#<span>FediDev</span></a></p>]]></description><link>https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674526727260589</link><guid isPermaLink="true">https://bb.devnull.land/post/https://mastodon.social/users/reiver/statuses/116674526727260589</guid><dc:creator><![CDATA[reiver@mastodon.social]]></dc:creator><pubDate>Mon, 01 Jun 2026 11:06:32 GMT</pubDate></item></channel></rss>