Tlon plans to release a major update with breaking API changes to %groups and %talk late in the afternoon of Wednesday, ~2023.11.29. In the case of a force majeure, we will push the release day and inform this list.
If you're a developer whose app integrates with %chat, %diary, or %heap, their content is moving into %channels. Read over its documentation here:
https://github.com/tloncorp/landscape-apps/blob/develop/docs/channels.mdFor additional reference, ~paldev recently live-streamed updating some of its apps:
https://www.youtube.com/watch?v=Lie8ZM0r6dsIf you want help with migrating your app, reply to this email and a Tlon employee will be in touch with you for a pairing session.
For a general overview of the changes, read on.
Until now, Groups had separate backend agents for channel types like Chats, Notebooks, and Galleries, each handling publishing and subscribing to content. This approach treated channel contents as distinct and merged publisher, subscriber, and client roles, resulting in slow interaction speeds - for example, interacting with a slow Notebook channel would slow down all Notebooks you interacted with.
The upcoming refactor introduces a "horizontal split," consolidating all channel types within a single agent while separating agents for publishing (%channels-server) and subscribing (%channels). This structure utilizes a single tagged union type to handle channel-specific content, allowing for more generalized behavior for publishing and subscriptions.
We are replacing each channel's subtly different data types with a single message type, $post, divided into metadata ($seal) and content ($essay). The metadata includes identifiers, unabridged replies, and reactions, while the content contains authorship, timestamp, the main post body ($story), and $kind-data. The $kind-data, varying for different channel types, contains specific data like post titles and header images for notebooks, optional block titles for collections, and join notification flags for DMs. This approach simplifies the content structure across various channels.
The refactor also involves splitting agents and types based on their interaction function (publisher, subscriber, client) rather than channel types, recognizing that each role has distinct data handling requirements. We introduce a new communication method between the publisher and subscriber to facilitate arbitrary and partial backlog loading.
This change significantly speeds up group joins, allowing quick access to recent messages and enabling piecemeal backlog retrieval. Crucially, these improvements are uniformly applied across all channel types, leveraging the shared logic of the system.
If you're interested in in the full changelog, find it here on GitHub:
https://github.com/tloncorp/landscape-apps/compare/v4.9.0...develop