We would like to develop a new major version of Cozy that will be able to solve new challenges:
- allowing multi-users for self-hosted instances;
- lowering the resources consumption per hosted Cozy instance to reduce its cost;
- improving global security;
- reviewing some dimensions of the platform that do not look right to us.
To do so, we have started a large project, and the first step was to write a document describing the architecture we want to build. This document is available here: New Architecture
Before we start the coding phase, it was important for us to discuss with our community about the choices in this document. We received lots of feedback, on many subjects.
First of all, they confirmed some choices we made. For instance, we had many feedbacks on these two points, that confirmed us that we were right in making them priorities:
- a simpler and more robust installation, by improving the debian package
- storing the files directly in the file system, not in CouchDB anymore
Our users were also really interested in hosting several Cozy instances, especially in a familial context. These different Cozies must be able to be run on the same server, but it is important that every user remain the owner of its data. In particular, if a family member leaves the household, she must be able to bring her data with her (and move her data on a new server for example).
From a technical perspective, lots of questions have been asked about the Go language. Almost all our readers told us that this language made sense, but wanted to know if we had considered some other languages, like Rust, Elixir, Python, etc. Many criteria from performances to community went into this choice, and Go seems to be the best compromise.
We have decided to publish the architecture document before its completion, because we will start coding really soon and it is easier to take feedback into account before immersing ourselves into the code. Some parts of this document are really superficial, but drew some interest nonetheless. One of them is the access control and rights management and it is a great news. The feedbacks we received have been helping us understanding all the needs and priorize our different trials before finding the ideal solution.
Some people want us to go even further with this new version with, for instance, some mainstream social media features. Even if it is really interesting, we do not have enough ressources to go further on these use cases. We already have big challenges ahead of us and dispersing our energies would not be wise.
Concurrently, we received in our offices Jan Lehnardt, CouchDB expert, to help us with this database. He was able to reinforce us on our choice, to give us visibility on CouchDB 2.0 new features and to explain us some internal details that may have important performances impact on our use cases. We are deeply satisfied by this collaboration and Jan was very enthusiastic about Cozy.
We will be able to start the new architecture development full of confidence, thanks to all the discussions we had in the last few weeks. We are lucking to have an active community, and we are really grateful for that!