Harmony FAQ

What is Harmony?

A chat protocol which:

What are the design goals of Harmony?

Harmony’s protocol is designed to be as straightforward and pragmatic as possible. We do not make attempts at creating a “universal” design philosophy which the entire protocol is forced to follow, instead implementing things that make sense as a single cohesive system. Time has proven over time over that design idealism is often a limiting factor in services.

Why not Matrix?

  • We believe that Matrix’s design philosophy works in many cases, but fails in terms of performance and handling large communities.
  • We believe that requiring all data to be transferred between servers for federation is inefficient.
  • Harmony allows clients to connect directly to foreignservers if they wish for reduced latency and stress on their homeservers.
  • Harmony wishes to represent many things that don’t work well in Matrix’s model of “everything is a JSON message appended to a stream called a room.”
  • Matrix is lacking in many functions we want from a chat service
  • Having an independent protocol allows us to move faster to achieve our goals compared to working on Matrix.

Why not Revolt?

Revolt is an interesting project, and we actually hadn’t known about it while Harmony was under development. However, there are currently a few issues, namely:

  • No federation. The developers have stated that federation was too “messy” for a big chat app. We disagree.
  • It wants to be “Discord but open source”, we want to be more than that.

Where is E2EE?

E2EE is currently under development as part of our “Secret Service” It is currently being worked on in a branch of our Protocol repository and a library called Lockdown, which allows clients to implement E2EE trivially.

E2EE rooms adopt a different style from the rest of Harmony, allowing us to have all three by having a design specifically tailored to E2EE conversation: good performance, good security, good user experience.