--- title: Harmony FAQ --- ## What is Harmony? A chat protocol which: - is split into communities which contain channels which contain messages - is defined entirely within the [Protobuf](https://developers.google.com/protocol-buffers) format, using a simple [RPC mechanism called hRPC](https://github.com/harmony-development/hrpc). ## 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](https://github.com/harmony-development/protocol/tree/work/e2ee) repository and a library called [Lockdown](https://github.com/harmony-development/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.