Path, the private social network founded by Dave Morin has posted an interesting piece today on how they built a messaging service into their apps.
Letting users share the same creative content but through messaging seemed like the next logical extension of the Path experience. In terms of team structure, before messaging, everyone sat with their respective teams. For messaging, we took the four people who were working on messaging: one each from iOS, Android, server, and design, and put them in a room together until the feature shipped. It was really helpful to have everyone working in the same place because messaging was such a large cross-functional effort.
Path details how they started with a stock ejabberd service, used a Python-based API server, and how they made datastore optimisations to get the best performance.
The main purpose of the API layer is to provide a layer of caching on top of MongoDB. Instead of querying the database repeatedly for potentially unchanged data, the API layer enabled us to do the caching of nodes for which a given user is subscribed, and also caches items for a given node.
They also talk about client feature requirements such as looking at history.
One of the features we implemented in the client was the ability to scroll back through earlier messages, as it doesn’t make sense to store all of the messages in the history of the conversation locally on the client, especially for chatty conversations.
You can read all about how Path Built messaging on the Path blog.