Communities (aka Groups) are here!! Announcing Riot/Web 0.13, Riot/iOS 0.6 and Riot/Android 0.7.4

Hi all,

We are super-excited to announce major new releases of Riot across both Web, Desktop, iOS and Android! This is the first time ever that releases for all platforms happen to have lined up in sync… and meanwhile over on the Matrix.org side, there are also releases of Synapse 0.25 (needed for the latest Communities features) and even a new stable 0.3 release of the Matrix Spec itself (after an accidental 16 month hiatus :S)! So: happy release day everyone! :D

The iOS & Android dev team in Rennes celebrate the new releases in traditional style!

Introducing Communities

The long-awaited news here is that Riot/Web finally has an initial implementation of Communities (also known as Groups) enabled by default. Communities are a deceptively simple feature, which gives users a way to group together sets of rooms and users within the wider Matrix ecosystem. The end result is that it finally gives organisations and teams an easy way to carve out a chunk of Matrix for themselves, similar to the feeling of a Slack Team or a Discord Server.

Communities in Matrix are a lot more powerful and flexible however: the same room can be part of multiple different communities, and the same user can be part of multiple different communities too: so no having to repeatedly create new accounts for each team like you do on Slack. Finally, we also use communities as a way to let users be recognised for a given role within a room — we call these badges (or more often: “flair”); little icons showing the membership of communities, which the user can optionally show next to their name if the room has enabled it for that community.

But enough talking — what does it look like?

Probably the most common view of a community is going to be the Community Page for the community itself, as shown above for the +matrix:matrix.org “Matrix.org Core Team” community.

The page shows a description of the community set by the community admin (currently as freeform HTML), and then a list of the rooms which should be part of that community. Then on the right-hand side, we have a list of all the users in the community (including their admin status) — as well as a separate list of the community’s rooms (useful for changing their visibility, in case you want to show members of your community rooms which the general public can’t see).

Anyone can create communities by going to the new Community button in bottom left menu — see below.

This page also lists the communities you’re part of. We don’t currently have a directory listing for Communities themselves, so you have to discover them by people chatting about them or otherwise advertising them. Or if you click on people’s flair then you can jump straight to the Community page that matches it! Talking of flair, in practice it looks like this:

“Well, I thought I remembered you saying that you wanted to express yourself?”

Communities for now are managed by a single homeserver (e.g. +matrix:matrix.org is hosted on the matrix.org homeserver), a bit like Room Aliases, but we’re looking to decentralise them properly in future.

You will need to be running Synapse 0.25 (released today) on the server for all Communities functionality to work!

It’s also important to understand that this is an initial release — there’s lots of stuff we want to do with Communities which hasn’t landed yet. Obvious stuff on the horizon includes:

  • Actually creating the communities for Matrix.org Patreon/Liberapay supporters at last! (Luke is battling through the Patreon sync script to hook it up as we speak)
  • Automatically adding bridged users to communities. No more ugly “(IRC)” suffixes everywhere; instead we can have little IRC flairs for the different networks! “Welcome to the Freenode community!”
  • Updating the LeftPanel room list to group your rooms together by community, and let you quickly switch between them and toggle them on and off. This is the point that communities get even more interesting, as as you can quickly switch between different facets of your overall footprint in Matrix.
  • Implementing them on Mobile. This is in progress on both iOS & Android currently, but we’re afraid it hasn’t landed in today’s releases.

Anyway, that’s enough on communities — please have a go, create one for your favourite group of people/rooms, and let us know how you get on!

Other stuff in Riot/Web 0.13

There’s also all sorts of other new stuff landing in 0.13:

  • Support for @room mentions.
  • The new /devtools command from Michael (t3chguy), for all your Matrix-introspection needs!
  • Slovak internationalisation (with 100% coverage!) thanks to Peter Vágner.
  • Under the hood; all our internationalisation source strings are now automagically generated from the app’s source code (very exciting).

As always, you can read the full release notes over at:

Riot/iOS 0.6

So as well as all the Web/Desktop excitement above, we have major new releases on both iOS and Android out today too!

On iOS, the big news is that: we have released all the work that Denis Morozov and Aram Sargsyan wrote as part of their Google Summer of Code participation this year!! In practice, this means:

  • CallKit based VoIP calling from Denis: so when you receive VoIP calls they now appear as real native OS calls, like a real dialler app!!
The magic of CallKit!
  • PushKit based Push Notifications from Denis. This is a huge deal as it means that we no longer have to send any message contents to Apple when you receive a push notification — instead, we simply prod the application to wake up, and it then syncs with the homeserver in the background to receive the contents to display as a notification. This also means that push notifications now work for End-to-end Encrypted rooms!
  • Ability to place calls from Siri (also from Denis)
  • Finally, the ability to share arbitrary files over Riot (from Aram) — technically called a Share Extension. This is an incredibly fiddly thing to get right, but the end result is great!
Share like you’ve never shared before!
  • And last but not least… support for iPhone X.

Massive thanks and kudos go to Denis and Aram for writing so much of this during a very successful and productive GSoC 2017 — and thank you to Google for paying for them to do so!

As always, you can read the full changelogs at:

Riot/Android 0.7.4

Last but not least, we have some enormous changes landing today on Riot/Android:

  • Initial support for automatically sharing your E2E keys when you log into a new device. This means that if you log into Riot/Web, you will see a prompt on Riot/Android offering to share your E2E encryption keys with the new session, so you can choose whether you want to see your history on the new login. (iOS support for this landed this afternoon too, but not in time for today’s release on the AppStore).
  • There is still a lot of work to be done here — ideally the key share would happen invisibly (if you trust the new device), but for now it’s a popup dialog that prompts you explicitly to share or not. However, it’s much much better than having to manually export/import your keys all the time (or just have unreadable history everywhere).
Key sharing from Android to Web!

Other stuff includes:

  • Add external keyboard functionality
  • Refactor and simplify the call UI.
  • Refactor call management (and fix audio path issues).
  • Add a dummy splash screen when a logout is in progress.

The full changelogs are up at:

What’s next?

It’s been an incredibly busy few months, with huge amounts of effort going into all the stuff that landed above. Stuff coming up next includes:

  • A whole fleet of really exciting features contributed by Travis Ralston: Pinnable Messages; Customisable Presence; and ‘Granular Settings’ — the ability to configure all your settings per-room, per-account, per-device etc as required.
  • The all new Status.im skin for Riot/Web
  • Next wave of Communities UI on Web (e.g. organising your room picker via Community)
  • Communities on Mobile
  • UI improvements for Widgets
  • Long-overdue end-to-end usability improvements on Web (and then Mobile)
  • Performance work on Riot/Web: making it more snappy and use less RAM.

It’s exciting times at the moment — particularly exciting to be making progress again on the End-to-end encryption usability issues which have plagued us over the last year. Riot 0.14 should be relatively soon though — we’ve already merged some of the above stuff to riot.im/develop for instance, and we look forward to getting another new release out as quickly as we can.

Meanwhile, thanks for reading — and thanks for Rioting with us :)