Discreet Log #22: Building on Cwtch - A Vision for 2022
10 Dec 2021
This week we have been putting the finishing touches on Cwtch Beta 1.5, a much larger release than its predecessors due to the new features and significant refactors that have been planned in.
I wanted to take a moment away from pull requests and fuzz testing to talk to you about the future of Cwtch and present to you a vision for the future of surveillance resistant applications. Don’t worry, there isn’t a single blockchain or NFT in sight!
Looking back on 2021
This was an amazing year for Cwtch. We finally reached a point in UI development where it was stable and usable enough that we switched to using it full time for all of our communications. That dogfooding process alone has taught us so much about how the application should grow and where future pain points might be.
That process has also granted us dozens of ideas for extending Cwtch; ideas for making it more useful in our day-to-day work.
2021 was also the year that people outside of Open Privacy, and the core Cwtch development team, started to try Cwtch and offer feedback and development support. We are so thankful for every single one of you and it is one of my personal goals to reach out to you more in 2022.
Looking Forward: Conversations
The goal for Cwtch was always to create a platform to allow people to build true surveillance-resistant infrastructure. This was as true in the original white paper is it is now.
In the age of remote work, remote conferences, and remote organizing it is vital to have secure, decentralized tools to assist you.
The original prototypes of Cwtch featured not just instant messaging, but shared lists and discussion forums. These are some applications we plan to bring back as we move along our roadmap, but we also need to make it easier for people to build other applications, leveraging the secure foundation of Cwtch conversations.
Ultimately my goal is very simple: we don’t believe that you should have to replicate an entire secure messaging stack just to build a secure decentralized application. Existing applications lock you in to a single framework, often extensible only by the developers, if at all. I want Cwtch to be an open ecosystem that you can use to build the solutions that you need, free from interference from anyone - including me.
To that end, one of the main features I’ve been working on over the last few weeks is a revamp of the main Cwtch interfaces - removing legacy APIs and centering the rest around a single concept: a conversation.
Conversations can be with a direct P2P contact, a group or directly with infrastructure (like an untrusted server providing storage for offline message delivery), but they all now share a single interface.
This interface is supported by a new storage engine that can handle associating arbitrary attributes with both conversations and messages, and in the future will support the creation of multiple application channels per-conversation.
Cwtch 1.5 will be the first UI release based on this new API and storage, but there will be no visible changes (other than a few speed improvements) in the UI.
However, now that the underlying APIs can support more complexity and nuance, we can start thinking about other metadata resistant features and apps to build into Cwtch that were not possible before.
Looking Forward: Channels
Next year we will probably be writing a lot about “channels”. As of 1.5 every Cwtch conversation will have a single channel, the chat channel. Chat channels are already pretty versatile allowing invites to other conversations and file sharing in addition to plaintext chat, however they are not suitable for all applications.
As we build support for channels you will start to see new options appear in the Cwtch UI. This will likely begin with shared lists and discussion forums, but quickly develop into more complex applications leveraging the underlying, pre-existing conversation.
We also want to build out support for people to design and build their own apps for Cwtch and to integrate them either in the Cwtch UI or as an external application that accesses the pre-existing encrypted profiles. There are obviously several security considerations inherent in that mechanism, and we intend to progress deliberately and safely towards that goal.
We still obviously have a long way to go, but I am very interested in talking to people who are interested in building
on Cwtch. If you are considering using or building on Cwtch and have ideas for making it better please reach out to me via email (firstname.lastname@example.org) or directly on Cwtch:
See You Next Year!
That wraps up this series of Discreet Log. As a development team we will be spending the last few weeks of this year shipping Cwtch 1.5, and then taking some much deserved time off.
The next series of Discreet Log posts will start up again in the new year. Until then please check out our Twitter profiles for Open Privacy (@OpenPriv) and Cwtch (@cwtch_im) for the latest updates.
I would like to sign off by thanking our supporters, translators and volunteer developers who have worked with us throughout the year to build amazing privacy software. We couldn’t exist without you. If you would like to get involved in 2022 please consider donating or check out How can I get involved in supporting Cwtch?