chatmail – onboarding experience done right

At the beginning of this year I couldn't sit still anymore and so I started a new project. I decided to deploy a chatmail service for new Delta Chat users. Obviously, it's not restricted to new users, as even existing ones may benefit from the service that's dedicated to being speedy and private by design. I got inspired by folks who develop DC and by the project itself. chatmail strives to be fast, easy to use and private. I can attest it is indeed fast, even though it's still good old email under the hood. It's also easy to use for the end user: you can set up an account in just a few seconds by scanning the QR code visible on the main page. Finally, it's private because it doesn't really collect any identifying information and requires messages to be encrypted end-to-end. I will focus on the onboarding experience in a moment. For now though, let's talk about some technical aspects I had to go through.

I launched mailchat.pl on January 2nd so it's been running for over a month now. And it's been super smooth and stable. I have to be honest though, I encountered a few bumps at the very beginning. These were mostly related to gaps in my knowledge. So I took this opportunity to learn something new. Here's what I learned. Apparently you can now deploy a whole stack using Python scripting. I didn't know it at the time so I was confused as to how I was supposed to run the scripts. Long story short, you need a quite recent Linux distro (like Ubuntu 22.04) as your workstation. You will deploy from here. Then you need to rent a VPS with a relatively recent distro (again, Ubuntu 22.04 in my case). You'll also need a domain name. The official guide is there to help you with the installation. The deploy scripts provide details as to how to set up DNS entries and make sure everything runs as it should. Like I said, it can be a little confusing at first. Just remember that the scripts must be launched on your local machine. Oh, by the way, this will only work if you have SSH keys set up properly. Once you get used to the process it kinda makes sense. For my service I had to translate the contents of the homepage and come up with a simple privacy policy.

Still, there was one thing I had to figure out: updates. chatmail is in active development and devs are working hard (or rather smart) to fix any outstanding issues. Thankfully, we have this thing called The Internet so I was able to find a working solution to my problem. At some point I even asked ChatGPT (or was it Bard?) to help me with updating a Git project. Let me present this secret knowledge then.

  1. Open terminal and go to the chatmail folder,
  2. type git stash, this will stash or save any changes that you've made so far, like configs or translations,
  3. git pull to pull the most recent changes from the GitHub repo,
  4. git stash apply to apply those changes without destroying your local files.

Of course it's always wise to backup local files before making any changes. In point 4 you may need to inspect some files and resolve any conflicts. It happened to me once or twice when I changed files in /www/src directory. So there you go, my little journey.

Finally, let's go back to the title of this post. chatmail makes it easy for new and existing Delta Chat users to register an account and start texting people. Sure, you can still use DC with your own email account. However, if for some reason you can't do that, chatmail can be a good solution. Here are some examples for when it could work: – your email provider is not supported – your messages are delayed – you want to encourage your friends to use DC – you'd like to have a separate account just for DC – you care about your privacy.

I'm sure there are other reasons why people would choose to go this route. For me it's simplicity. You can get an anonymous account that consists of some random letters. Alternatively you can choose your username. The first option is super quick and suitable for most people, especially if they don't care about fancy usernames. All it takes is to scan an invite code. The second option is available in Delta Chat for more advanced users. Here you can type your username and password in the app itself. If the name's not taken, it will be given to you. Just like that. Now, to text people you'll have to share your invite code: this ensures full encryption. Sidenote: sharing codes is not always necessary, e.g. when you and your contacts use the same server.

I hope you enjoyed reading this little behind-the-scenes story. Plus, if you haven't already, explore Delta Chat and its ecosystem of decentralized mail servers.

Reply to this on the fediverse: @michal@101010.pl