
France Enters the Matrix - l2dy
https://lwn.net/Articles/779331/
======
O1111OOO
In my small bubble of tech news, France has popped up a few times. Found out
recently that they are officially[0] using the privacy-respecting Qwant search
engine. Several weeks ago, I learned that they have planned obsolescence
laws[1] which makes them a pioneer in this area (from what I understand).

There's also an active non-profit organization using FOSS to create
alternative, privacy-respecting, solutions to Google products (framasoft[2]).
I mention this last one because I haven't come across a similar major
undertaking (or similar mindset) in too many other countries.

Now they are evaluating Matrix for their communications needs. I can
understand the importance of countries, nowadays, not relying too much on the
services of companies tied to a specific country (namely the US) but I wonder
what else is different about France? What else are they engaged in re: FOSS,
privacy?

Or am I reading too much into this?

[0] [https://en.wikipedia.org/wiki/Qwant](https://en.wikipedia.org/wiki/Qwant)

[1] [https://www.bbc.com/news/world-
europe-42615378](https://www.bbc.com/news/world-europe-42615378)

[2] [https://framasoft.org/en/](https://framasoft.org/en/)

~~~
franky47
French citizen here. For as long as I can remember, there's been a strong will
in the French FLOSS communities to develop local alternatives to the ever-
expanding reach of the FAANG/GAFAM, for many reasons. The obvious one being
the export of data outside actionable jurisdiction, but it could also be
explained by differences in ideology.

As for what else we're doing, there's La Quadrature du Net (LQDN)[1] which
took part in the recent Google €50m fine, some projects by concerned citizens
to keep a watch on politicians[2] and tracking in mobile apps[3], but one of
my favourite things comes from the increasing will to release "OpenData"
(public data sets from various sources)[4] to let collectivities, regions and
smaller units build tools to solve their local problems.

[1] [https://www.laquadrature.net/en](https://www.laquadrature.net/en)

[2] [https://projetarcadie.com/](https://projetarcadie.com/) (in French)

[3] [https://exodus-privacy.eu.org/en/](https://exodus-privacy.eu.org/en/)

[4] [https://www.data.gouv.fr/en/](https://www.data.gouv.fr/en/)

~~~
presscast
I would also add that there's a rich ecosystem of _extremely_ well-trained
engineers coming from the Grandes Écoles system.

The result is a lot of top-notch contributors who get involved in FOSS
projects in their 20s.

------
birracerveza
I like the idea behind Matrix, but hosting it is really a pain. I've given up
on it until it's a simple `docker-compose up -d` away from running a full
instance.

To get back on topic, France has really got its FOSS movement moving. There
are a TON of Mastodon and Peertube instances located there. It's admirable.

~~~
spantaleev
Being similarly frustrated with how complicated it is to set up, I've created
an Ansible playbook to automate it all (and run all services in containers):
[https://github.com/spantaleev/matrix-docker-ansible-
deploy](https://github.com/spantaleev/matrix-docker-ansible-deploy)

By default, it sets up Synapse and a bunch of other services around it that
are necessary to really make it useful (Postgres instead of the default under-
preforming SQLite; mxisd as the identity server; STUN/TURN server for WebRTC
calls; riot-web; various bridges; etc)

~~~
cvwright
Thank you for this. Very easy to use. Easily saved me a few hours of work.

------
zamalek
_> Because Matrix is inherently decentralized, no single server "owns" the
conversations; all traffic is replicated across all of the involved servers.
[...] Matrix is more like Git than XMPP, SIP, IRC, or many other traditional
communication protocols._

The Matrix protocol is well worth the read. JSON-LD is a bit of a nightmare to
work with, but the gist of it is a solid concept; it has drastically changed
my approach to software design.

~~~
acemarke
I'm considering evaluating Matrix for some upcoming projects I'll be working
on. Thus far I've just skimmed the front page and the FAQ.

Could you expand on what you found particularly compelling about the protocol
/ API, and also how that's changed your software development approach?

~~~
rakoo
The very high-level view is that Matrix is a set of protocols for syncing
messages and state between servers. Matrix is to XMPP what NNTP is to SMTP.
This makes multi-device and disconnections much easier to handle, because all
you need to do is to wait for the messages to eventually arrive; this is in
contrast to XMPP which favors direct routing of a message and synchronization
is second.

In my own view it's a much more robust way of architecting communication: the
server(s) should assume that remote parties will be off, and remote parties
will come and get what they want at their own pace and time. Maybe they won't
receive a few messages immediately but can immediately retrieve multiple when
needed. With a stretch you could see a parallel with Kafka: instead of trying
to send stuff to consumers as soon as it is produced, just store it, and when
clients are up they'll process stuff.

~~~
thesorrow
I agree. One could use the Matrix specs to build some sort of message queue
(using rooms) where human (text, markdown) and machine (json-ld) could
communicate and interact..

------
aboutruby
The FOSDEM video:
[https://fosdem.org/2019/schedule/event/matrix_french_state/](https://fosdem.org/2019/schedule/event/matrix_french_state/)

------
Forbo
I finally got around to brushing off the year's worth of dust that had
accumulated on my Matrix account and signed in to Riot on my phone, as well as
their web client. I was pretty pleased with how easy it was to connect to a
Freenode channel. So far it seems to be a decent experience, I'm looking
forward to using it over the next little bit.

------
fermigier
Things are still going strong for open source in France (despite de occasional
setbacks) since France was rated in 2008 the no 1 country in the world in
terms of open source adoption by Georgiatech:

[https://web.archive.org/web/20090424052832/http://www.redhat...](https://web.archive.org/web/20090424052832/http://www.redhat.com/about/where-
is-open-source/activity/)

[https://web.archive.org/web/20090520231136/http://www.redhat...](https://web.archive.org/web/20090520231136/http://www.redhat.com/f/pdf/OSSI_Research.pdf)

More info (in French):
[https://cnll.fr/media/etude-2017.pdf](https://cnll.fr/media/etude-2017.pdf)
(with figures for the FR, DE, UK and rest of EU markets on slide 4).

------
sublupo
Recently I'm hearing more about Matrix. Does anyone have any input as to the
pros and cons of Matrix vs xmpp?

~~~
fyfy18
It's quite subjective, but my view is Matrix is what XMPP would like if it was
written today.

The main advantages are it is using JSON instead of XML, and HTTP instead of
custom protocols so it can work directly from browsers and with lightweight
mobile clients. It also has a lot built into the core protocol, where as to
get XMPP to do anything useful you will need to use a lot of extensions (and
ensure the server and all clients support them).

The only con is it's still a relatively young project. I'm not sure I would
want to rely on it as my main form of communication in a company just yet, but
for personal usage it is fine.

~~~
tannhaeuser
I can't see any advantage in using JSON and HTTP for a protocol. JSON shines
for ad-hoc, untyped, structured message payloads rather than the strongly-
typed semistructured text payloads possible with XML/SGML, and HTTP wasn't
designed for federated protocols. It seems more like a fashion thing to me.

~~~
forty
I kind of agree with you, but I'll add that XMPP usage of XML is weird enough
that it makes it hard it use a normal XML parser / producer. Honestly I really
wanted to like XMPP. I read all the specs at the time, even started to write
some code, but all I can say is that it really sucks. I haven't looked at
matrix yet, I hope it's better

~~~
olau
Indeed! I was in the same boat - also started writing a client, but wasted too
much time on the stupid XML stream idea.

Basically, chatting is message oriented, but the XMPP inventors thought it
would be neat to start the connection with a tag like <beginconversation>
which would then be dangling for the whole connection, preventing the use of a
simple DOM XML parser (remember this is many years ago) for each message.

~~~
edhelas
Any XML parser that I know can parse XML in a stream, that's all you need to
handle an incoming XMPP stream.

Just an example, here is the XML parser that I wrote in PHP
[https://github.com/movim/movim/blob/master/lib/moxl/src/Moxl...](https://github.com/movim/movim/blob/master/lib/moxl/src/Moxl/Parser.php)
(127 lines), it basically handle the stream as an input and fire SimpleXML
(can also be DOM XML) on the other hand.

This can handle thousands of XMPP messages (called stanza) per second :)

~~~
forty
Can it handle plaintext XML suddenly becoming TLS encrypted? Because that's
also what happens on any XMPP connection. If it can, then great but I guess
it's more an exception than the rule

------
wcoenen
> the 0.99 version of the home server code is ACME-capable and can get a
> certificate directly from Let's Encrypt;

How does this work? I assume a home server doesn't have a public DNS name, so
what is used as the subject of the certificate then?

~~~
detaro
"home server" is the term for the server your account lives on in Matrix, not
for "server you run at home", although you can of course do that.

------
denart2203
Is anyone else increasingly uncomfortable with the "we'll solve the
certificate problem by deferring to centralized registrars that surely keep
their keys private from state actors." I mean, this is potentially not a risk
if there is a recognizable way of communicating low-bandwidth fingerprints of
the next encryption level, like ZRTP verification on voice. But note how
WebRTC has done the same thing? And efforts to solve the problem are talked
about and then, somehow, nothing ever happens with the standards.

It's enough to drive one paranoid.

------
MayeulC
Matthew's talk at FOSDEM [0] was really nice. I've been using Matrix (mainly
trough Riot) for a while, and encouraged my technically-minded friends to jump
on it.

However, I would like to get my family to use something else than WhatsApp
(which I refuse to use). I'm planning to do so, once I can sort out the
following:

\- Riot is nice if you have a lot of high-density rooms (Fractal's "Banquet"
use-case [1]), but not really there in terms of UX for small rooms with my
family members

\- I would like to self-host if possible. However, I need to ensure that the
server is reliable enough, and synapse seems to be quite resource-hungry.

Regarding the first issue, it seems that France's Tchap would solve it nicely,
from what we were shown at FOSDEM. Unfortunately, the Readme in their repo is
still Riot's, and it would seem that I have to build it myself [2]. I'll look
a bit more into that nevertheless, and it should improve by June, from the
article.

Regarding the second one, someone recently linked to this Gnome mailing list
archive [3] where (in the reply) Matthew details a bit more his (then) long-
terms plans for homeservers. Having one homeserver per device would solve most
of my issues pretty neatly. I am not sure how far it is in the roadmap. I am
also curious to know what's the status on that specific discussion topic: I
was discussing just this the otherday on #postmarketos-offtopic:matrix.org
[4]. I was interested in having a unique matrix daemon on a phone operating
system to provide push support, maybe as well as a Matrix protocol broker.

Otherwise, for self-hosting with ~10-200 users, it looks like synapse has shed
a lot of weight recently, and other homeservers implementations seem to be
picking up steam, so we'll see how that goes. I am not sure how synapse would
handle a dynamic IP __

For now, my gripes with the ecosystem are the following:

\- There doesn't seem to be easy ways of migrating: accounts, homeservers
(including address and implementation, ex. migrating to/from synapse,
Dendrite, Ruma...).

\- No easy way to manage multiple identities: work, home, etc. Multi-account
clients or community-bound identities could probably help solve this. Ideally,
it would be the later, and my account would be on multiple homeservers (backup
plan for availability).

\- The search functionality is really lacking on most clients. No way to
search my own messages, or at a specific time, in a specific community, etc.

It's also kind of fun to have both COI (chat over IMAP) and Matrix making the
front page at the same time :)

[0]:
[https://fosdem.org/2019/schedule/event/matrix_french_state/](https://fosdem.org/2019/schedule/event/matrix_french_state/)

[1]: [https://blogs.gnome.org/tbernard/2018/05/16/banquets-and-
bar...](https://blogs.gnome.org/tbernard/2018/05/16/banquets-and-barbecues/)

[2]: [https://github.com/dinsic-pim/tchap-android](https://github.com/dinsic-
pim/tchap-android)

[3]: [https://mail.gnome.org/archives/desktop-devel-
list/2017-Sept...](https://mail.gnome.org/archives/desktop-devel-
list/2017-September/msg00047.html)

[4]:
[https://matrix.to/#/!VTQfOrQIBniIdCuMOq:matrix.org/$15496441...](https://matrix.to/#/!VTQfOrQIBniIdCuMOq:matrix.org/$15496441549459ctuml:librepush.net?via=fam-
ribbers.com&via=matrix.org&via=disroot.org)

 __A bit off-topic, but my registrar doesn 't provide an API to update the DNS
records on their servers. As a workaround, would there be a free dynamic DNS
with an API out there? I don't care what the address would look like, as I
would just use it as a CNAME record.

~~~
Arathorn
There's already people doing unofficial builds of Tchap which work against the
public Matrix network rather than the .gouv.fr deployment - e.g.
[https://github.com/14mRh4X0r/tchap-
android](https://github.com/14mRh4X0r/tchap-android) and
[https://git.snt.utwente.nl/14mRh4X0r/tchap-
proxy](https://git.snt.utwente.nl/14mRh4X0r/tchap-proxy), although I'm not
sure it's useful yet as more than an interesting experiment.

On the riot side, we're trying to do our best to make it support both Barbecue
as well as Banquet use cases (assuming that's not a contradiction in terms).

In terms of other points:

> Having one homeserver per device would solve most of my issues pretty
> neatly. I am not sure how far it is in the roadmap.

It's in the 'further still' column - we published the roadmap last week at
[https://matrix.org/blog/2019/02/15/publishing-the-backend-
ro...](https://matrix.org/blog/2019/02/15/publishing-the-backend-roadmap) \-
look for the card labelled 'p2p homeservers'.

> \- There doesn't seem to be easy ways of migrating: accounts, homeservers
> (including address and implementation, ex. migrating to/from synapse,
> Dendrite, Ruma...).

There are scripts to do it, but it's a bit crap (similar to migrating between
IMAP servers). We're working on fixing it properly via MSC1228
([https://github.com/matrix-org/matrix-
doc/pull/1228](https://github.com/matrix-org/matrix-doc/pull/1228))

> No easy way to manage multiple identities

Multiaccounts are next up for Riot.

> The search functionality is really lacking on most clients

yeah, we need to fix this.

------
Andrew_nenakhov
The only advantage Matrix currently has comes from it's relative obscurity. It
has ONE implementation. Once things start inevitably emerge, it'll run into
all the same problems that truly distributed protocols have.

~~~
Arathorn
it's true that there's only one implementation that's production ready.
however, there are several which work sufficiently that they can federate with
it (dendrite, construct) which look to be on the right path. it'll be
interesting to see if that all falls apart when they come of age; let's see :)

------
qwerty456127
Does it support conversation trees like we do here on HN? Does it let you edit
your messages?

~~~
Arathorn
no, threading isn't there yet. editing isn't either, but coming soon
([https://github.com/matrix-org/matrix-
doc/pull/1849](https://github.com/matrix-org/matrix-doc/pull/1849))

~~~
qwerty456127
This probably is my own problem but I totally hate threadless communication
for whatever that goes beyond a personal chat for 2 people. IMHO every
meaningful collaboration needs threads.

------
xvilka
I wish they stop wasting time by developing this Electron abomination and
focus more on the native and mobile clients.

~~~
tacoman
Riot-web is a really nice app. Drop it on any web server and you're done. I
use it all day long to talk to my family on a self-hosted, non-federated
matrix instance. If you use linux, Fractal is a pretty good option for a
desktop application. The latest release is "beta" but very usable.

[https://matrix.org/docs/projects/client/fractal.html](https://matrix.org/docs/projects/client/fractal.html)

~~~
Nerada
Curious if there was a reason you chose to self-host as opposed to using a
public one on just starting your own room (I assume this is possible in the
same way channels are in IRC)?

What was the drive to use 1, self-host and non-federate an instance of Matrix
over another platform, and 2, why? With family especially, I would assume a
simple WhatsApp/Signal group would have been easier for adoption.

~~~
tacoman
My extended family of 16 which ranges in age from 5 to 85 uses this Matrix
instance. We didn't want pictures of our young kids on Whatsapp (Facebook)
servers. These young kids and grandparents don't have smartphones so Signal
isn't an option. Also, many of us access Matrix on other devices and computers
other than phones.

This is how the internet is supposed to be.

~~~
Nerada
Thanks. I've been tossing up setting up a forum of sorts for some close
friends, but I've been going back and forth on the two extremes; an obscure
telnet-only accessible BBS for the nostalgia, or a Matrix/Riot page for the
ease of use.

------
pmoriarty
I haven't tried Matrix yet, but I've tried some other chat platforms like
Telegram and Discord, and was really disappointed with them compared to IRC.

I had to use their closed-source, bloated, binary blob GUI clients, couldn't
logs the channels I was in (and so relied on having to log in to their servers
to get backlogs, which was super annoying), and needed invites to get in to
channels.

Apart from the superior multimedia capabilities of these clients, I saw
absolutely no advantage of them over IRC clients (which could do useful things
like logs all mentioned URLs and mentions of my nick to separate, logged tabs,
and which I could run from the terminal and even from within Emacs).

I really hope Matrix is better in this regard, and I'm trying to keep an open
mind, but so far attempts to create next generation chat services have been
really underwhelming.

~~~
im3w1l
I find it compares favorably to IRC and XMPP. File transfers and offline
messages and encryption "just working" without having to check if my client,
other persons client and the server(s) support it (or having to bring helpers
into the mix) is worth a lot.

~~~
ubercow13
Except you do have to check, as almost no clients support encryption fully.

