414 lines
15 KiB
Markdown
414 lines
15 KiB
Markdown
---
|
||
layout: post
|
||
title: FAQ
|
||
date: 2015-08-19 16:58:07
|
||
categories: guides
|
||
---
|
||
<link href="/docs/guides/css/faq.css" type="text/css" rel="stylesheet" />
|
||
|
||
# FAQ
|
||
{:.no_toc}
|
||
|
||
Categories
|
||
----------
|
||
{:.no_toc}
|
||
|
||
[General](#general)
|
||
|
||
[Quick Start](#quick-start)
|
||
|
||
[Standard](#standard)
|
||
|
||
[APIs](#apis)
|
||
|
||
[Reference Implementations](#reference-implementations)
|
||
|
||
|
|
||
|
||
FAQ Content
|
||
-----------
|
||
{:.no_toc}
|
||
|
||
|
||
* TOC
|
||
{:toc}
|
||
|
||
### General
|
||
|
||
##### What is Matrix?
|
||
|
||
Matrix is an ambitious new open standard for open, distributed,
|
||
real-time communication over IP. It defines interoperable Instant
|
||
Messaging and VoIP, providing pragmatic HTTP APIs and open source
|
||
reference implementations for creating and running your own real-time
|
||
communication infrastructure.
|
||
|
||
##### What is Matrix's Mission?
|
||
|
||
Matrix.org's initial inspiration and goal has been to fix the problem of
|
||
fragmented IP communications. But Matrix's real potential and ultimate
|
||
mission is to be a generic messaging and data synchronisation system for
|
||
the web - allowing people, services and devices to easily communicate
|
||
with each other with full history.
|
||
|
||
##### What does Matrix provide?
|
||
|
||
Today Matrix provides a new [open standard](/docs/spec),
|
||
[APIs](/docs/api) to integrate a service to the Matrix ecosystem and
|
||
reference [open source
|
||
implementations](http://github.com/matrix-org/synapse) of the standard.
|
||
|
||
##### What does this mean for users?
|
||
|
||
The aim is to provide an analogous ecosystem to email - one where you
|
||
can communicate with pretty much anyone, without caring what app or
|
||
server they are using, using whichever app & server you chose to use,
|
||
and a nice neutral identity system like an e-mail address or phone
|
||
number to discover people to talk to.
|
||
|
||
##### What kind of company is Matrix.org?
|
||
|
||
Matrix is an open initiative which acts as a neutral custodian of the
|
||
Matrix standard. It's not actually incorporated anywhere at the moment
|
||
but we are looking at the best legal structure for the future. We are
|
||
committed to keeping the Matrix project open.
|
||
|
||
##### Who is funding Matrix.org?
|
||
|
||
We have been given permission by our employers, Amdocs, to work on
|
||
Matrix as an independent non-profit initiative.
|
||
|
||
##### Who is building Matrix?
|
||
|
||
We're a team of ~10 people with decades of experience building custom
|
||
VoIP and Messaging apps for mobile network operators. Most of us have
|
||
day jobs at Amdocs or OpenMarket, but we are supported by a mix of
|
||
freelancers and volunteers.
|
||
|
||
##### Why are you called Matrix?
|
||
|
||
We are called Matrix because we provide a structure in which all
|
||
communication can be matrixed together.
|
||
|
||
##### Why have you released this as open source?
|
||
|
||
We believe that any open standard defining interoperable communication
|
||
needs to be justified, demonstrated and validated with transparent open
|
||
source implementations. For Matrix to achieve its mission of making all
|
||
communications services interoperable we believe it needs to be truly
|
||
open, giving people access to take all the code we produce and to use
|
||
and build on top of it.
|
||
|
||
##### What do you mean by open?
|
||
|
||
Matrix is an open standard, meaning that we have freely published the
|
||
details for how to interface with Matrix compliant servers and clients,
|
||
and encourage anyone and everyone to interface with them. We also
|
||
ensure the standard is not encumbered by any known patent licensing
|
||
requirements.
|
||
|
||
|
|
||
|
||
Matrix is also open source, meaning that we have released the source
|
||
code of the reference servers and clients to the public domain under the
|
||
[Apache Licence v2](http://www.apache.org/licenses/LICENSE-2.0.html), to
|
||
encourage anyone and everyone to run their own servers and clients, and
|
||
enhance them and contribute their enhancements as they see fit.
|
||
|
||
##### What does federated mean?
|
||
|
||
Federation allows separate deployments of a communication service to
|
||
communicate with each other - for instance a mail server run by Google
|
||
federates with a mail server run by Microsoft when you send email from
|
||
@gmail.com to @outlook.com.
|
||
|
||
|
|
||
|
||
Federation is different to interoperability, as interoperable clients
|
||
may simply be running on the same deployment - whereas in federation the
|
||
deployments themselves are exchanging data in a compatible manner.
|
||
|
||
|
|
||
|
||
Matrix provides open federation - meaning that anyone on the internet
|
||
can join into the Matrix ecosystem by deploying their own server.
|
||
|
||
##### How is this like e-mail?
|
||
|
||
When email was first set up in the early ‘80s, companies like Compuserve
|
||
and AT&T and Sprint set up isolated email communities which only allowed
|
||
you to exchange mail with users on the same system. If you got your
|
||
email from one service and your friend from another, then you couldn't
|
||
message each other. This is basically the situation we're in today with
|
||
VoIP and IM.
|
||
|
||
##### Why has no-one done this before?
|
||
|
||
There have been several attempts before including SIP, XMPP and RCS.
|
||
All of these have had some level of success, but
|
||
technological/usability/economic factors have ended up limiting their
|
||
success in providing true open federation.
|
||
|
||
##### What is the difference between Matrix and IRC?
|
||
|
||
We love IRC. In fact, as of today the core Matrix team still uses it as
|
||
our primary communication tool. Between us we've written IRCds, IRC bots
|
||
and admined dreamforge, UnrealIRCd, epona, ircservices and several
|
||
others. That said, it has some limitations that Matrix seeks to improve
|
||
on:
|
||
|
||
- Text only
|
||
- No history
|
||
- No multiple-device support
|
||
- No presence support
|
||
- Fragmented identity model
|
||
- No open federation
|
||
- No standard APIs, just an archaic TCP line protocol
|
||
- Non-standardised federation protocol
|
||
- No built-in end-to-end encryption
|
||
- Disruptive net-splits
|
||
- Non-extensible
|
||
|
||
##### What is the difference between Matrix and XMPP?
|
||
|
||
The Matrix team used XMPP (Openfire, ejabberd, spectrum, asmack,
|
||
XMPPFramework) for IM before starting to experiment with open HTTP APIs
|
||
as an alternative. The main issues with XMPP that drove us in this
|
||
direction were:
|
||
|
||
- Not particularly web-friendly - you can't easily speak XMPP from a
|
||
web browser. (N.B. Nowadays you have options like XMPP-FTW and
|
||
Stanza.io that help loads with letting browsers talk XMPP).
|
||
- Single logical server per MUC is a single point of control and
|
||
availability. (MUCs can be distributed over multiple physical
|
||
servers, but they still sit behind a single logical JID and domain.
|
||
FMUC improves this with a similar approach to Matrix, but at time of
|
||
writing there are no open implementations.)
|
||
- History synchronisation is very much a second class citizen feature
|
||
- Stanzas aren't framed or reliably delivered without extensions. (See
|
||
[wiki.xmpp.org](http://wiki.xmpp.org/web/Myths#Myth_Four:_XMPP_is_unreliable_without_a_bunch_of_extensions.)
|
||
for an XMPP take on this)
|
||
- Multiple device support is limited. (Apparently Carbons and MAM help
|
||
with this)
|
||
- Baseline feature set is so minimal that fragmentation of features
|
||
between clients and servers is common
|
||
- No strong identity system (i.e. no standard E2E PKI, unless you
|
||
count X.509 certs, which [are
|
||
questionable](http://www.thoughtcrime.org/blog/ssl-and-the-future-of-authenticity/))
|
||
- Not particularly well designed for mobile use cases: push;
|
||
bandwidth-efficient transports. (Since the time of writing a [Push
|
||
XEP has appeared](http://xmpp.org/extensions/xep-0357.html), and
|
||
[wiki.xmpp.org](http://wiki.xmpp.org/web/Myths#Myth_Three:_It.27s_too_bandwidth-inefficient_for_mobile.)
|
||
claims that XMPP runs fine over a 9600bps + 30s latency link.)
|
||
|
||
The whole subject of XMPP vs Matrix seems to bring out the worst in
|
||
people. We think of the standards as being quite different; at its core
|
||
Matrix can be thought of as an eventually consistent global JSON db with
|
||
an HTTP API and pubsub semantics - whilst XMPP can be thought of as a
|
||
message passing protocol. You can use them both to build chat systems;
|
||
you can use them both to build pubsub systems; each comes with different
|
||
tradeoffs. Matrix has a 'kitchen sink' baseline of functionality; XMPP
|
||
has a deliberately minimal baseline set of functionality. If XMPP does
|
||
what you need it to do, then we're genuinely happy for you :) Meanwhile,
|
||
rather than competing, an XMPP Bridge like [Skaverat's xmpptrix
|
||
beta](https://github.com/SkaveRat/xmpptrix) has potential to let both
|
||
environments coexist and make the most of each other's benefits.
|
||
|
||
##### What is the difference between Matrix and PSYC?
|
||
|
||
PSYC is a open federated messaging protocol loosely inspired by IRC. In
|
||
version 1 it was a standalone protocol, and in version 2 it is being
|
||
reutilised as the messaging layer on top of GNUnet. We honestly don't
|
||
know that much about it, beyond trying to use psycd as an XMPP\<-\>IRC
|
||
bridge in 2010. Matrix differentiates primarily by providing simple HTTP
|
||
APIs rather than the more exotic compact line protocol in PSYC v1 or the
|
||
complicated GNUnet stack in v2. Meanwhile, Matrix doesn't provide of
|
||
the metadata protection guarantees that GNUnet/PSYC aims for.
|
||
|
||
|
|
||
|
||
See [http://about.psyc.eu/Matrix](http://about.psyc.eu/Matrix) for
|
||
PSYC's views on Matrix.
|
||
|
||
##### What is the difference between Matrix and Tox?
|
||
|
||
Tox.im looks to be a very cool clone of Skype - a fully decentralised
|
||
peer-to-peer network. Matrix is deliberately not peer-to-peer; instead
|
||
each user has a well-defined homeserver which stores his data and that
|
||
he can depend upon. Matrix provides HTTP APIs; Tox.im provides C APIs.
|
||
We haven't actually played with Tox at all yet.
|
||
|
||
##### How does Matrix compare with something like Trillian or Pidgin?
|
||
|
||
Trillian and Pidgin and similar aggregating IM clients merge all your IM
|
||
activity into a single user experience. However, your history and
|
||
identity is still fragmented across the networks. People can't find you
|
||
easily, and your history is fragmented (other than on the device
|
||
where the client runs). And rather than being able to chose the right
|
||
app for the job when communicating with people, you are pushed towards
|
||
relying on a specific aggregation app.
|
||
|
||
##### What Matrix compliant apps are there?
|
||
|
||
None yet, other than our examples. It's early days :)
|
||
|
||
##### Why do you think existing apps will ever join this?
|
||
|
||
We firmly believe it is what is right for the consumer. As people begin
|
||
to use interoperable communications tools service providers will see the
|
||
benefit and compete on quality of service, security and features rather
|
||
than relying on locking people into their walled garden. We believe as
|
||
soon as users see the availability and benefits of interoperable
|
||
services they will demand it.
|
||
|
||
##### Why aren't you doing this through the IETF? or W3C? or 3GPP?
|
||
|
||
We do recognise the advantages of working with existing standards
|
||
bodies. We have been focused on writing code and getting it out. As
|
||
Matrix matures it may well be appropriate to work with an official
|
||
standard body.
|
||
|
||
|
|
||
|
||
### Quick Start
|
||
|
||
##### How do I get an account and get started?
|
||
|
||
The quickest way is to just jump to the demo webclient at
|
||
[http://matrix.org/beta](http://matrix.org/beta) and sign up. Please note that you can point the
|
||
webclient to access any homeserver - you don't have to use matrix.org,
|
||
although as of day 1, matrix.org is the only communal homeserver
|
||
available.
|
||
|
||
##### What can I actually do with this?
|
||
|
||
The demo webclient provides a simple chatroom interface to Matrix -
|
||
letting the user interact with users and rooms anywhere within the
|
||
Matrix federation. Text and image messages are supported, and basic
|
||
voice-only VoIP calling via WebRTC is supported in one-to-one rooms.
|
||
|
||
##### How do I connect my homeserver to the public Matrix network?
|
||
|
||
See
|
||
[http://github.com/matrix-org/synapse](http://github.com/matrix-org/synapse)
|
||
for details
|
||
|
||
##### How do I Matrix-enable my existing app?
|
||
|
||
See the [Client-Server API
|
||
HOWTO](http://matrix.org/docs/howtos/client-server.html) for an example
|
||
of how to use Matrix's client-server API to let your app communicate
|
||
with users via Matrix. We're currently working out the best way to
|
||
integrate your application's existing identity system with Matrix.
|
||
|
||
##### How can I write a client on Matrix?
|
||
|
||
See the [Client-Server API
|
||
HOWTO](http://matrix.org/docs/howtos/client-server.html) and the [API
|
||
docs](/docs/api) and [the Spec](/docs/spec) for all the details you need
|
||
to write a client.
|
||
|
||
##### *How can I help out with this?*
|
||
|
||
Install synapse and tell us how you get on. Critique the spec. Write
|
||
clients. Just come say hi on [\#matrix:matrix.org](/alpha) or the
|
||
[mailing lists](/mailman/listinfo/matrix-users)!
|
||
|
||
##### Where can I get support?
|
||
|
||
[\#matrix:matrix.org](/alpha), \#matrix on irc.freenode.net or
|
||
the [mailing lists](/mailman/listinfo/matrix-users) are your best bets.
|
||
|
||
##### How do I register custom matrix event types?
|
||
|
||
We're not yet managing a registry of custom matrix event types. If you
|
||
have any particularly good ones you want to tell the world about, please
|
||
use the [mailing list](/mailman/listinfo/matrix-users) for now.
|
||
|
||
##### How mature is this?
|
||
|
||
We started working on Matrix in July 2014, and have opened it to the
|
||
public in September 2014. It's early days, and under no circumstances
|
||
should you use Matrix or Synapse for anything other than experimentation
|
||
and learning at this point. Obviously the spec and apps are maturing
|
||
rapidly, but as of the time of writing APIs are not frozen and the apps
|
||
are very much a work in progress.
|
||
|
||
|
|
||
|
||
*Sorry, the FAQ is still work in progress, the rest of it will up
|
||
soon!* *In the mean time, don't hesitate to get in touch on
|
||
[\#matrix:matrix.org](/alpha) or the [mailing
|
||
lists](/mailman/listinfo/matrix-users)!*
|
||
|
||
|
|
||
|
||
### Standard
|
||
|
||
##### What is a home server?
|
||
|
||
##### What is an identity sever?
|
||
|
||
##### Where do my conversations get stored?
|
||
|
||
##### What is a 3PID?
|
||
|
||
##### How do you do VoIP calls on Matrix?
|
||
|
||
##### Can I log into other homeservers with my username and password?
|
||
|
||
##### Why Apache Licence?
|
||
|
||
##### Can I write a Matrix homeserver?
|
||
|
||
##### How secure is this?
|
||
|
||
##### Why aren't you using an ORM layer like SqlAlchemy?
|
||
|
||
|
|
||
|
||
### APIs
|
||
|
||
##### How do I join the global Matrix federation?
|
||
|
||
##### What ports do I have to open up to join the global Matrix federation?
|
||
|
||
|
|
||
|
||
### Reference Implementations
|
||
|
||
##### What is Matrix built on - and why?
|
||
|
||
##### How do I run my own home server?
|
||
|
||
##### Can I run my own identity server?
|
||
|
||
Yes - the reference implementation is
|
||
[sydent](https://github.com/matrix-org/sydent) and you can run your own
|
||
ID server cluster that tracks 3rd party to Matrix ID mappings. If you
|
||
want your server to participate in the global replicated Matrix ID
|
||
service then please get in touch with us. Meanwhile, we are looking at
|
||
ways of decentralising the 'official' Matrix identity service so that
|
||
identity servers are 100% decentralised and can openly federate with
|
||
each other. **N.B. that you can use Matrix without ever using the
|
||
identity service - it exists only to map 3rd party IDs (e.g. email
|
||
addresses) to matrix IDs to aid user discovery**.
|
||
|
||
##### What is Synapse?
|
||
|
||
##### Why is Synapse in Python/Twisted?
|
||
|
||
##### What are Synapse's platform requirements?
|
||
|
||
##### What are the Synapse webclient's requirements?
|
||
|
||
##### Where is the mobile app?
|
||
|
||
##### What decides the room member order on the webclient?
|
||
|
||
|
|
||
|
||
Any other question? Please contact us on
|
||
[\#matrix:matrix.org](/alpha) or the [mailing
|
||
lists](/mailman/listinfo/matrix-users)!
|