Roomy Devlog 1

Hey folks! Last week we announced the general availability of Roomy! The announcement post has all the details if you haven't seen it yet.

If you've tried using Roomy since the announcement, you may have noticed some downtime and performance issues which we have been working on fixing.

While it had been functioning find in small test scenarios, having a bunch of people try it out has been triggering performance hits that caused various crashes or restarts and we've been analyzing and patching to get things stabilized.

One of the issues we noticed is that our old "Leaf server" where the chats were stored was struggling under the load. The Leaf server was a "left-over" in many ways from our previous architecture which we are still in the middle of migrating away from.

Our new architecture is in the process of aligning itself completely with ATProto, but we still need a privacy-capable data store while we wait for private data to land in ATProto.

So in the latest release, we decided to just use our Leaf server as that private data store for our new Roomy AppView. That was convenient since it already had all of the existing Roomy data stored on it and it saved us from having to do a data migration.

That worked kind of OK, but the Leaf server was made with our older design in mind and it has a bunch of stuff now that we don't need. It also has some sneaky performance issues, which are more complicated to debug when we have to track things across both the AppView and the Leaf server.

Instead of working to fix the Leaf server, we think it will be simplest and most performant to just migrate the data in the Leaf server to the AppView itself. That way we only have to deal with one server for now.

That will reduce the complication and hopefully make it easier to fix things and improve performance.

The plan is to get this migration done as soon as possible this week, so that we can focus on more functionality and bug fixes instead of having to deal with crashes and performance issues.

The plan is to get our data migration tested out locally and make sure we can move all the data over in a sandbox.

Once all that goes well, we'll take down the server for a short while, migrate all the latest data, and then deploy the new server.

Then people will be able to use it again and we'll be monitoring for stability, performance, and bugs and fixing anything that comes up.

We'll keep a complete backup of the Leaf data before the migration so that we can revert back to the previous version if anything goes seriously wrong.

Most-likely, though, we'll have no reason to go back to the Leaf server and it can be safely let go while we work on improving the AppView and client.

This solution for the AppView will be temporary, too, as we are still working on getting Roomy fully "ATProto native".

Private data is our biggest blocker to doing that, but there are private data prototypes already working such as the one in HappyView.

We're planning on getting the current version of Roomy stable and usable, while planning another incremental migration to HappyView to prepare for the move to native ATProto private data as soon as it lands.

We've also been contributing to the community discussion around how to represent "groups", "communities", and "organizations" on ATproto. We will be working on integrating these ideas into Roomy to work towards a future where different ATProto apps can inter-operate over groups.

So lots of stuff to look forward to, but first we've got to keep Roomy's lights on!

We'll be trying to post little updates for things as we go along. 👋