1. 58
  1. 5

    Wow, this is great! So many FOSS projects are using Discord instead of IRC, probably because of discoverability, and how easy it is to join a new “server” (which is actually run by Discord, not by you).

    This really reminds me of Discord because of the spaces listing on the left, which DIscord also has.

    Sometimes you just gotta steal a feature if it works!

    1. 1

      Yeah, I used to use the old ‘communities’ thing for this, but spaces approach seems a bit nicer. I also use t2bot to bridge to a discord server for folks who prefer discord. Does mean I need to be logged into both though (as a moderator). I am a bit concerned at how moderation will work across a space - it would be useful to be able to apply the same policies over multiple rooms for example. Discord is still much better on that front.

    2. 4

      Some interesting comments from the project lead over at HN.

      And here’s the user-facing post. I created a space for Haskell here (it includes the IRC bridge to #haskell).

      1. 1

        I created a space for Haskell here (it includes the IRC bridge to #haskell).

        URL changed to: https://matrix.to/#/#haskell-space:matrix.org

        1. 1

          How did you set the URL of the space? Been wanting to do this for Pikelet, which is currently a random hash…

          1. 1

            You add an alias for the room that is the space. The UI is probably missing currently, but you can use the API. https://matrix.org/docs/spec/client_server/r0.6.1#put-matrix-client-r0-directory-room-roomalias

            1. 1

              Is there a way to send this request from element in the browser, or so I need to do some more involved shenanigans for this?

              1. 5

                More involved shenanigans, sadly. Adding aliases to Spaces is top of the list for the next wave of work in the beta though.

                1. 1

                  No worries, looking forward to it! Thanks for your efforts!

      2. 1

        I have a hard time figuring out how to get matrix setup and working. Like what the backend and frontend are and how they work. Am I not understanding what it is?

        1. 10

          TL;DR: If you want to try it out, download the Element client and let it walk you through making an account.

          You’ll have to choose a Matrix homeserver (like an email provider). If you won’t use it that frequently, the free matrix.org homeserver is good but slow. For more serious use, consider a subscription to Element Matrix Services, where they host a homeserver for you. Or you can try to self-host synapse. I wouldn’t.

          Other homeservers are being developed right now (Conduit is pretty cool). But none are ready for production just yet. And unfortunately the choice of homeserver is still important because your account will be tied to it. In the future, the “multi-homed accounts” feature will make this initial choice less important (hopefully).


          There are two basic components to understand if you’re just getting into Matrix, and the two components are best understood as an analog to email, which is really the only popular federated protocol today.

          There’s the Matrix homeserver, which is like your email provider. It’s where the messages and account information are stored. It’s what actually takes care of sending and receiving your messages. It’s where you sign up. Multiple people can have an account on the same homeserver. Synapse is the most popular homeserver right now, it’s developed by the team that founded Matrix, and it’s considered to be slow (Python) and is slated to be replaced.

          Then there’s Matrix clients. Just like email, Matrix is standardized. You can use any email client to get/send your Gmail, and you can use any Matrix client to get/send Matrix messages. Element is the most popular Matrix client (again made by the team that created Matrix). It’s the most feature-complete by far. It’s written in Electron, so it’s bloated. But it works fairly well.

          1. 3

            I wouldn’t.

            Can you elaborate ? We use a synapse server at work and it works.

            1. 1

              I should have been clearer. I meant that I don’t advise trying to self-host the homeserver at all. Self-hosting anything is a ton of work if done properly. Timely security updates, migrations, frequent (and tested) backups, and reliability all come to mind as things I personally don’t want to have to worry about. Element Matrix Services seems like a good deal for just a few people.

              1. 3

                But these challanges aren’t at all Synapse-specific, are they? Updates. migrations and proper backups are something you have to do with any server that you self-host. And after running a homeserver for a few years, the only migration I ever had to do is from an older to a newer PostgreSQL version by simply dumping the whole database and reading it back in. All schema migrations are done automatically by Synapse and I never had any problems with that. Hosting a Matrix server with Synapse is so easy if you compare it e.g. to hosting your own email server. And Synapse really is battle-tested because it’s dogfooded at the huge matrix.org homeserver instance.

                1. 1

                  No they’re definitely not specific to Synapse. That was pretty much my point.

                  And I know Synapse has put a ton of work into being easy to deploy. But I still won’t ever recommend managing infrastructure to anyone. It’s awesome that Synapse makes it as easy as possible for people like us to self-host it, but $5/month is probably well worth the lack of headache for most people.

            2. 2

              As far as I can tell, none of the homeserver implementations are ready for self-hosting – unless you disable federation, and then what’s the point?

              1. 3

                I’m not sure where you’re getting that impression. I’m hosting two different Synapse instances myself. I just update them when new releases come out; it’s been relatively painless.

                1. 1

                  Can you please give a reason why you don’t think Synapse is ready for self-hosting? I’ve been doing it for years with enabled federation and I never had any serious problems.

                  1. 1

                    Sure. I’ve heard again and again that if you enable federation on Synapse and someone joins a large room, the server bogs down and starts chewing through resources. Has that changed?

                    Also note that I’d be running it on an old laptop or a raspberry pi, just like I would run any chat server – IRC, Jabber, etc.

              2. 1

                .. I mean, probably? What exactly are you struggling with?

                1. 2

                  Uh oh, now I feel even dumber. The main website has information about something called Synapse and there is “element” which is a frontend I believe, but how do you install a matrix server and start using it?

                  1. 13

                    My attempt at clarification:

                    • Matrix is a protocol for a federated database, currently primarily used for chat
                    • Synapse is the reference home server (dendrite, conduit, construct etc. are other alternatives)
                    • Element is the reference client (there are versions of element for the web (electron), android and ios)
                    • A user account is (currently) local to a home server
                    • A chat room is federated and not located on a specific home server. The state is shared across home servers of all users that have joined the room.
                    • There are P2P tests where the client and home server are bundled together on e.g. a mobile phone
                    • Spaces are a way to organize rooms. Spaces are just a special case of a room and can include other rooms and spaces.
                    1. 4

                      Thank you! That clarifies a lot. I was stuck thinking Matrix is the server. So, Matrix is a protocol for a federated database, that’s very interesting and cool.

                      1. 1

                        Is it legitimate for me, as a user rather than someone who’s interested in the infrastructure, to just think of Matrix being like a finer-grained version of IRC, where instead of (mainly) a few big networks there are more smaller networks and instead of joining e.g. #linux on freenode, I’d join e.g. #linux:somewhere …

                        Would I now discover ‘rooms’ by starting from a project’s website, for example, rather than just joining some set of federated servers and looking for rooms with appropriate names?

                        I just searched for ‘linux room matrix’ and the top hit was an Arch Linux room #archlinux:archlinux.org

                        (I don’t really want to join a general Linux room - just using it as an example)

                        1. 3

                          Well, generally NO. Most all matrix home servers are all joined together via the federated protocol. So if you join #archlinux:archlinux.org on homeserver A, and your BFF uses homeserver B, you will still see each other and communicate with each other in that room like if you were both on homeserver A.

                          One COULD create a non-federated home server, but that’s not the typical use case, and the reasons to do so would be odd. If you are doing for example a chat server for internal chat @ $WORK, using Matrix is probably a terrible idea. Zulip, Mattermost, etc are all better solutions for that use-case.

                          1. 2

                            Discovering rooms is currently a bit problematic, as room directories are per server. But a client can query room directories from any server (that allows public queries). Spaces will probably help a lot with room discovery, as they can form deep hierarchies.

                        2. 8

                          I did a video to try to explain it last year (which i should update, but it’s still usable, even if it calls Element by its old name of Riot): https://www.youtube.com/watch?v=dDddKmdLEdg

                          1. 3

                            I recommend starting off by just creating an account at app.element.io and using the default homeserver so you don’t have to host anything youself

                            1. 2

                              Synapse is a server implementation and Element is one of the clients.

                              Installing Synapse: https://matrix.org/docs/guides/installing-synapse

                              1. 1

                                Uh oh, now I feel even dumber.

                                Don’t. The Matrix project is pretty terrible at both naming and the new user experience.

                                1. 2

                                  Not trying to hate on them or anything. @ptman ‘s comment above really helped.

                                  1. 1

                                    Yeah, I wish them every success - but what I guess I’ll call the introductory surface of the system is fairly painful.

                          2. 1

                            I enabled beta and feel Spaces is a much polished version of Communities. On the Spaces Beta discussion on the orange site @Arathorn said that the Discord style communities is the boring obvious bit.

                            For what it’s worth, the thing I find most exciting about Spaces is that they provide a decentralised hierarchical namespace with decentralised access controls for every room (ie pubsub topic) in Matrix. So it’s like we’ve sprouted an openly federated global hierarchical filing system for freeform realtime data streams of all flavours - where people can go crazy defining their own trees, applying their own curation ideals; perhaps we’ll even see a single global tree emerge (although the implementation may need some more optimisation first).

                            It’s like a multiplayer hybrid of DMOZ and USENET and the read/write Web all rolled together. Once we start storing more interesting data streams than instant messages in it (eg forums, email, bulletin boards, DOMs, scene graphs, ticker data, IOT sensor data…) it really gets interesting :)

                            “wow we accidentally created the realtime read/write web”

                            What is the non-obvious and interesting part? His rest of comment went over my head.

                            1. 2

                              I was trying to explain that while we wrote spaces to let users group their rooms together, in practice you can create hierarchies of spaces to group all the rooms together. For instance, I could create a space called #root:matrix.org and then a space within it called #opensource:matrix.org and then a space within that called #linux:matrix.org and then fill the space in that with all the linux chatrooms I know about. I could then give ops to other linux experts in the #linux space, and they could delegate ops onwards… until you’ve built a hierarchy that contains all the best chatrooms anyone knows about. It’s a multiplayer way to curate and categorise all the conversations of the world, including those bridged in from other networks and platforms.

                              Hope that makes more sense!

                              1. 1

                                That makes more sense, thank you for taking the time.

                            2. 1

                              Impeccable timing!