Making notifications manageable
Hello again from the depths of the pug mines! With only a few weeks left until Christmas, the build-log marches onwards.
Last week we got Ghost and WordPress talking to each other over ActivityPub. It's very exciting having multiple open source, decentralised publishing platforms being able to follow and interact with one another for the first time.
This week, we're taking another look at ActivityPub notifications.
What's new with ActivityPub?
When Ghost receives inbound activities from external users, we stream those into a notifications panel so you can see what's happening. That's been working for a while now, but it was a pretty basic implementation where every activity showed up as a new notification. If fifty people liked your post, you'd get fifty notifications. Functional, but quickly overwhelming.
This week, we upgraded the notifications experience to include grouping. This is a common pattern in social apps to keep similar activities condensed and more easily readable.
0:00 /0:11 1×
Now it's much easier to see what's going on at a glance, without having to wade through duplicate or similar activities.
In the background, our engineering team is doing a large chunk of work rearchitecting the database for ActivityPub. Our initial DB setup has been working well for the past few months, and we've learned a lot by ingesting and storing real, production ActivityPub data. However, much like our initial implementation of notifications, the way we store data at the moment is pretty basic — and that's now blocking us on implementing performance improvements and new features.
So, now we're planning ahead a little by working on a database schema that's specifically designed to accommodate ActivityPub data, and will comfortably scale to serving millions of users at a time.
Unfortunately, like message queues before it, database design is not the most exciting topic from which your correspondent can draw inspiration for lengthy diatribes of questionable wit.
As a result, we'll likely be focused more on design improvements here for the next few weeks — and then hopefully some larger news after that!
In the meantime, more beta invitations are on the way.