New Matrix Alternative #49

Open
opened 2024-07-16 19:42:12 +02:00 by leon · 15 comments
Owner

The Why

We are using Matrix currently for our chatting needs, because it supports all features we want, but it (and especially the Element client) is very buggy. So we would like to look for more stable alternatives.

The What

Our requirements, in descending order of importance.

  1. Forced Basic Encryption (ie. you can't message without encryption)
  2. You can send messages to offline users and they still receive them, when the sender is offline
  3. Receives regular updates and is expected to receive them for a long time (ie Projects with decent size and support)
  4. Self-Hostable
  5. Few Bugs and weird shit (see: just element things)
  6. End-to-End-Encryption (E2EE)
  7. Single-Sign-On (SSO)
  8. Good & Easy User Experience (UX)
  9. Should scale up to around ~50 people participating in many rooms (especially relating to UX)
  10. Good User Managment (eg. roles, banning, etc.)
  11. Threads
  12. Polls
  13. Bot-Support
  14. Federation
  15. Hostable on arm64

Please comment below, if you think something is missing or in the wrong order.

The Which

https://github.com/awesome-selfhosted/awesome-selfhosted?tab=readme-ov-file#communication---custom-communication-systems

Smaller list of more relevant candidates following soon.

The Where

komu.boo or libre.moe?
Why not do a race after settling on which service we would like to run ;)

The Wo-Dos

  • Prevent new registrations on Matrix for the time being @lukas
# The Why We are using Matrix currently for our chatting needs, because it supports all features we want, but it (and especially the Element client) is very buggy. So we would like to look for more stable alternatives. # The What Our requirements, in descending order of importance. 1. Forced Basic Encryption (ie. you can't message without encryption) 2. You can send messages to offline users and they still receive them, when the sender is offline 3. Receives regular updates and is expected to receive them for a long time (ie Projects with decent size and support) 4. Self-Hostable 5. Few Bugs and weird shit (see: just element things) 6. End-to-End-Encryption (E2EE) 7. Single-Sign-On (SSO) 8. Good & Easy User Experience (UX) 9. Should scale up to around ~50 people participating in many rooms (especially relating to UX) 10. Good User Managment (eg. roles, banning, etc.) 11. Threads 12. Polls 13. Bot-Support 14. Federation 15. Hostable on arm64 Please comment below, if you think something is missing or in the wrong order. # The Which https://github.com/awesome-selfhosted/awesome-selfhosted?tab=readme-ov-file#communication---custom-communication-systems Smaller list of more relevant candidates following soon. # The Where komu.boo or libre.moe? Why not do a race after settling on which service we would like to run ;) # The Wo-Dos - [ ] Prevent new registrations on Matrix for the time being @lukas
leon added the
Priority
High
Service
Matrix
labels 2024-07-16 19:42:12 +02:00
leon self-assigned this 2024-07-16 19:42:12 +02:00
lukas was assigned by leon 2024-07-16 19:42:12 +02:00
leon added this to the Issue Board project 2024-07-16 19:42:12 +02:00
Owner

I am actually already preparing a test instance of Zulip, which generally seems to support most of our needs, but most importantly has a clear and easy to navigate UI, allowing specific rooms to habe a static listing (like in discord servers), unlike the Chat-style of Matrix/Element.

Zulip has a strong enterprise user base and is very self-hosting/open-source friendly. It seems to lack E2EE, but I personally don't view this as a problem for "public" rooms for memes, university chats, gaming and so on. And using Signal for personal and more private stuff isn't so bad either.

You can see Zulip in use here.

When you compare team-chat platforms like Zulip, it quickly becomes obvious that Zulip is the most appropriate for us, this is what I found out about the free oss tiers of different platforms:

  • Rocket Chat: disliked by reddit, limited to 25 users, no group calls
  • Mattermost: no SSO, no group calls
  • Zulip: no native calling (uses Jitsi, BBB, Zoom), limited free mobile notifications, OSS friendly

As "Communities and personal organizations (clubs, groups of friends, volunteer groups, etc.)" qualify for the community plan, we could also get unlimited mobile notifications with Zulip for free.

Unfortunately, Zulip's docker image is experimental and the main app's image has no ARM-builds, even though arm is officially supported. I guess right now, a native installation is the best option (sadly).

I am actually already preparing a test instance of [Zulip](https://zulip.com/), which generally seems to support most of our needs, but most importantly has a clear and easy to navigate UI, allowing specific rooms to habe a static listing (like in discord servers), unlike the Chat-style of Matrix/Element. Zulip has a strong enterprise user base and is very self-hosting/open-source friendly. It seems to lack E2EE, but I personally don't view this as a problem for "public" rooms for memes, university chats, gaming and so on. And using Signal for personal and more private stuff isn't so bad either. You can see Zulip in use [here](https://chat.zulip.org). When you compare team-chat platforms like Zulip, it quickly becomes obvious that Zulip is the most appropriate for us, this is what I found out about the free oss tiers of different platforms: - Rocket Chat: disliked by reddit, limited to 25 users, no group calls - Mattermost: no SSO, no group calls - Zulip: no native calling (uses Jitsi, BBB, Zoom), limited free mobile notifications, OSS friendly *As "Communities and personal organizations (clubs, groups of friends, volunteer groups, etc.)" qualify for the community plan, we could also get unlimited mobile notifications with Zulip for free.* Unfortunately, Zulip's docker image is experimental and the main app's image has no ARM-builds, even though arm is officially supported. I guess right now, a native installation is the best option (sadly).
Owner

Otherwise, Mattermost is also looking good UI wise, probably even better than Zulip, but I don't really consider it as it lacks SSO. There is a hack using GitLab and redirecting to your own SSO through GitLab, but let's not do that :)

The UI looks a lot like Discord - which is awesome. It also supports S3 for storage ^^
grafik

Otherwise, Mattermost is also looking good UI wise, probably even better than Zulip, but I don't really consider it as it lacks SSO. There is a hack using GitLab and redirecting to your own SSO through GitLab, but let's not do that :) The UI looks a lot like Discord - which is awesome. It also supports S3 for storage ^^ ![grafik](/attachments/14230a33-0cf9-451c-b728-15289e9765f2)
292 KiB
Owner

dev instance is up on https://dev.libre.moe

dev instance is up on https://dev.libre.moe
Owner

Opinions?

Opinions?
Author
Owner

Opinions?

Several

> Opinions? Several
Owner

care to share?

care to share?
Owner

In regards to #49 (comment), I actually wouldn't count all of these as requirements and would like to structure this a bit different:

In order to fit our architecture, the solution should be:

  • Self-hostable
  • Actively maintained
  • Stable and battle-tested
  • Deployable using Docker/OCI images

and ideally should also have:

  • SSO via Oauth2/OIDC without user limits
  • capabilities to use S3 storage directly

In order to fit our use case, the solution should provide:

  1. Persistent chat storage/history
  2. A functional AND pleasant UX
  3. Means to use polls, bots, (group)calls, threads
  4. Adequate Moderation tools

Additionally, nice to have features are:

  • Support for arm64 arch
  • End-to-End-Encryption
  • Federation

Most notably, I view E2EE and Federation as optional, as this is primarily used as a community hub and chatroom with additional direct messaging, at least that is how I see it. While a use case as both primary personal chat and community hub is nice, Signal is always a great fallback for personal chats.
I am quite hesitant to recommend E2EE for larger/public spaces, as having chat history for new users and no issues with encryption keys / signing for non-technical users is far more important than cryptography for our anime waifus and memes.

I also changed the architectural requirements/recommendations to reflect my setup and liking.

Numbered requirements reflect the order of importance, while non-numbered requirements should all be met.

In regards to https://git.libre.moe/KomuSolutions/igot99issues/issues/49#issue-387, I actually wouldn't count all of these as requirements and would like to structure this a bit different: ### In order to fit our architecture, the solution should be: - Self-hostable - Actively maintained - Stable and battle-tested - Deployable using Docker/OCI images and ideally should also have: - SSO via Oauth2/OIDC without user limits - capabilities to use S3 storage directly ### In order to fit our use case, the solution should provide: 1. Persistent chat storage/history 2. A functional AND pleasant UX 3. Means to use polls, bots, (group)calls, threads 4. Adequate Moderation tools ### Additionally, nice to have features are: - Support for `arm64` arch - End-to-End-Encryption - Federation Most notably, I view E2EE and Federation as optional, as this is primarily used as a community hub and chatroom with additional direct messaging, at least that is how I see it. While a use case as both primary personal chat and community hub is nice, Signal is always a great fallback for personal chats. I am quite hesitant to recommend E2EE for larger/public spaces, as having chat history for new users and no issues with encryption keys / signing for non-technical users is far more important than cryptography for our anime waifus and memes. I also changed the architectural requirements/recommendations to reflect my setup and liking. *Numbered requirements reflect the order of importance, while non-numbered requirements should all be met.*
Owner

Here is a quick technical review of Zulip, based on hosting this dev instance:

  • Zulip runs stable if deployed natively, but basically requires 4G of RAM for itself, meaning that it costs me another full server to run it
  • Docker support is experimental and didn't work on either arm64 or amd64 for me at the time of testing
  • Officially supported distros are only Ubuntu and Debian instead of RHEL/Rocky, which I currently use for all kinds of systems
  • S3 storage using Backblaze B2 works reliably, but downloading assets can take a while if not cached on the server, probably because loading an old asset also requests a few resources before and after the requested one, so instead of one file, the server gets parallel requests for 4 or 5 different files, noticeably clogging up server resources if the files in question are large
  • default SSO login matches by email, a change in SSO or Zulip email therefore effectively unlink the account and creates a new one upon logging in again
Here is a quick technical review of Zulip, based on hosting this dev instance: - Zulip runs stable if deployed natively, but basically requires 4G of RAM for itself, meaning that it costs me another full server to run it - Docker support is experimental and didn't work on either arm64 or amd64 for me at the time of testing - Officially supported distros are only Ubuntu and Debian instead of RHEL/Rocky, which I currently use for all kinds of systems - S3 storage using Backblaze B2 works reliably, but downloading assets can take a while if not cached on the server, probably because loading an old asset also requests a few resources before and after the requested one, so instead of one file, the server gets parallel requests for 4 or 5 different files, noticeably clogging up server resources if the files in question are large - default SSO login matches by email, a change in SSO or Zulip email therefore effectively unlink the account and creates a new one upon logging in again
Owner

I also will look into Revolt, as it looks similar to Discord in both UI and feature set, therefore it should also meet a lot of our requirements.

I also will look into [Revolt](https://revolt.chat/), as it looks similar to Discord in both UI and feature set, therefore it should also meet a lot of our requirements.
Owner

I'll also throw another different kind of concept into the ring: XMPP-based solutions.
Those fit really well with our ideology and are quite extensible with a vast ecosystem and tooling available.
While most clients are quite legacy in their design, I found Movim, which at first glance looks promising.

I'll also throw another different kind of concept into the ring: XMPP-based solutions. Those fit really well with our ideology and are quite extensible with a vast ecosystem and tooling available. While most clients are quite legacy in their design, I found [Movim](https://movim.eu/), which at first glance looks promising.
Owner

@leon This issue was created by you with Prioritiy High, but there has been more than a month of inactivity, should we change the priority?

@leon This issue was created by you with `Prioritiy High`, but there has been more than a month of inactivity, should we change the priority?
Author
Owner

No

No
Owner

@leon you still want me to close registrations to Matrix?

@leon you still want me to close registrations to Matrix?
Author
Owner

No. I thought we would have found some nice alternative sooner.

No. I thought we would have found some nice alternative sooner.
Owner

I m looking to try Mattermost and I think we can fix the lacking SSO by also setting up a GitLab instance. It appears that Mattermost allows free Oauth2 logins by connecting it to Gitlab - including a third party gitlab instance.

I m looking to try Mattermost and I think we can fix the lacking SSO by also setting up a GitLab instance. It appears that Mattermost allows free Oauth2 logins by connecting it to Gitlab - including a third party gitlab instance.
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: KomuSolutions/igot99issues#49
No description provided.