Pod

The pod now allows efficient synchronization, which enables more lightweight and faster front-end synchronization. Additionally, tree insertion is added to the API. Lastly, the documentation is extended and should be easier to follow now.

Action API

While collecting all your data in one place is one of the cornerstones of Memri, being able to only receive data is not very useful for a communication service. Downloading your mails and chat messages is interesting, but allowing you to send them too opens up many more possibilities. In other words, we want the pod to enable a bidirectional data flow, which we plan to implement using the so-called Action API. Initially, we wanted to create several endpoints for this, but in the end we figured out that using the existing infrastructure is not only easier, but also offers much more flexibility. Instead of the endpoint "do X", we simply add a special item X to the database and use the existing trigger mechanism to send it!

Integrators

The Python-integrators (downloaders/importers/indexers written in Python) actually got integrated this week! When you call the HTTP-endpoint for either one of them, the pod is able to spin up the relevant container, start the process and start receiving information. We've built a library to help you with this, allowing you to get started quickly on building your own integrator, without having to know all the details of this process.

We've updated the WhatsApp importer to use the new features of Pod, e.g. CLI options and the new API for inserting tree-like structured data. Furthermore, a library is created for the communication with Pod, which makes further integration of other importers easier.

Hosting

We've continued working on our hosting setup within Kubernetes, in which a pod will be able to start containers (short and long living) in the cluster on demand. In particular this requires us to automatically deploy and manage containers using the Kubernetes API. Furthermore, experiments with integrating payment providers were started, with Stripe currently being the most promising. For this, a Kill Bill plugin is being used to enable functionality based on the active subscription type of the customer. Finally, we've simplified our networking architecture by relying more on standard Kubernetes routing and only actively changing the network configuration on subscription changes.

Incorporation

Incorporation is a task that tends to take much more time than you'd initially expect, especially when you want it to be a democratic organization like ours. Many startups also see it as drudgework, keeping them from building their Cool New Product™. The truth is that incorporation is a very important step in going from idea to reality. During this sprint we made some important decisions, such as the distribution of the founder shares. After a trip to the notary, Memri B.V. (the Dutch equivalent of a private limited company) is now a reality. It is still a "normal" company but soon we hope to implement our by-laws to create an almost unique structure and will tell you all about it when it is done!