Index: src/services/ap-core.js
===================================================================
--- src/services/ap-core.js	(revision 20916473b2bb8d6d0a79829066f903ad7932229f)
+++ src/services/ap-core.js	(revision 19a9a1e2a0cace2354e39699c98f3da1012e60bb)
@@ -265,6 +265,18 @@
  * en zonder `next`. Hem naar de laatste pagina terugbuigen zou opnieuw een
  * antwoord zijn dat over zichzelf liegt.
- */
-export function pagedCollection(id, items, { totalItems, page = false, perPage = PAGINA_GROOTTE, alGesneden = false, extra = {} } = {}) {
+ *
+ * `ongeordend` maakt er de NIET-geordende vorm van: `Collection` met
+ * `CollectionPage` en `items`, in plaats van `OrderedCollection` met
+ * `OrderedCollectionPage` en `orderedItems`. Dat is geen dialect maar de andere
+ * helft van AS2 -- en de bibliotheek hoort daar: een platenkast heeft geen
+ * volgorde die iets betekent, en `Library` is bij Funkwhale expliciet een
+ * `Collection`. Onze outbox is wél geordend (chronologie is daar de inhoud) en
+ * blijft dus zoals hij was.
+ *
+ * De pagina draagt in die vorm ook `first` en `last`. AS2 staat dat toe --
+ * CollectionPage erft van Collection -- en een lezer die halverwege binnenkomt
+ * kan zo terug naar het begin zonder eerst de wortel op te halen.
+ */
+export function pagedCollection(id, items, { totalItems, page = false, perPage = PAGINA_GROOTTE, alGesneden = false, ongeordend = false, extra = {} } = {}) {
   const lijst = items || [];
   const telling = totalItems === undefined ? lijst.length : totalItems;
@@ -283,10 +295,12 @@
       '@context': AP_CONTEXT,
       id: url(n),
-      type: 'OrderedCollectionPage',
+      type: ongeordend ? 'CollectionPage' : 'OrderedCollectionPage',
       partOf: id,
       totalItems: telling,
+      ...(ongeordend ? { first: url(1), last: url(paginas) } : {}),
+      ...(extra.attributedTo ? { attributedTo: extra.attributedTo } : {}),
       ...(n > 1 ? { prev: url(n - 1) } : {}),
       ...(n < paginas ? { next: url(n + 1) } : {}),
-      orderedItems: deel,
+      ...(ongeordend ? { items: deel } : { orderedItems: deel }),
     };
   }
@@ -294,10 +308,10 @@
     '@context': AP_CONTEXT,
     id,
-    type: 'OrderedCollection',
+    type: ongeordend ? 'Collection' : 'OrderedCollection',
     ...extra,
     totalItems: telling,
     first: url(1),
     last: url(paginas),
-    orderedItems: lijst,
+    ...(ongeordend ? { items: lijst } : { orderedItems: lijst }),
   };
 }
