Usually you want asynchronous communication for remote work. But when you don’t, consider Mumble as a potential tool for maintaining a community-like feel for synchronous communication and serendipitous interactions.
Bring chatrooms back with synchronous communication
As a preface, there is already quite a bit of consensus that asynchronous communication is an effective default communication model for remote work. By asynchronous, I mean communication that isn’t happening in real time and does not need the people you’re communication with to be available simultaneously (e.g., email or comments on issue trackers). In contrast, synchronous communication requires everyone to be in sync and available—in a video call, dropping by someone’s office, group chats, etc. GitLab is a good example of an all-remote company that, along with many others [1] [2], has championed remote work for years [3] [4] [5].
However, in the context of the current coronavirus pandemic, synchronous communication can still play an impactful role in helping people still feel connected with their teams as we all experience the world’s largest work-from-home experiment. Chatting with my neighbors, lab mates, friends, and family, some of the things they miss most about working in the office is the spontaneous conversations they can have with other people. That extends beyond work, too. They miss running into their friends at lunch or when they’re out for a jog in the park. As everyone is adjusting to working from home, formal video chats sometimes feel unnatural and rigid. This is especially true with the formalities of sending calendar invites and coordinating via email. Sometimes, you want spontaneous, non-persistent chat.
So you can have channels like “Bob’s Office”, “Working on XYZ problem”, etc. People can come into these channels to speak to you and can leave them. It feels a bit like an office environment, I can pop into Jay’s office, talk to him about an issue, and go back to my office. I recommend people setup Push To Talk, which really helps create a silent non-annoying environment. Basically, me and another developer can be working on an issue, but maybe not actively talking, but in the same channel – and there is blissful silence… I don’t hear the fan, the cat, the fact that his wife came into talk to him for a minute, etc.
When I start my work-day – I start it by logging into the mumble server (or more accurately, moving myself out the AFK channel) – and when I end it, I move myself back into the AFK channel. This is a realtime communication system, async work still happens… well, everywhere else.
It is easy to be on all day as an “in-office” experience… when I am eating lunch, I create a “eating lunch” channel under AFK and put myself there…. We find it works so much better than video chat (or really anything else), is far more casual (like an office) and far more fluid… it is like having an open door policy. Sometimes I might be in a channel that says “Debugging Race Issue Go Away” – but it technically doesn’t keep anyone out, it is a request.
Using mumble day to day basically changed the experience from mediocre to great for us. We still use everything else, but mumble is our real time core, and slack is our async core.
Setting up a Mumble server is (relatively) easy
If you have a server available, it’s actually quite easy to set up a Mumble server. I’ll refer you to the official wiki for more details, but you can get up and running in just a few minutes. Note that the server must be available to all your clients. So, a public server, a server on your local network, or something within your VPN (e.g., with Tailscale) will all work.
If you’re running Debian, mumble should already be in the apt repositories. If you’re using Ubuntu, you can add the Mumble ppa and install it with apt.
To add the PPA with the latest version of Mumble:
$ sudo add-apt-repository ppa:mumble/release
$ sudo apt update
To install the client:
$ sudo apt install mumble
To install the server:
$ sudo apt install mumble-server
Setting up the server is straightforward. Just run:
$ sudo dpkg-reconfigure mumble-server
To further customize the server settings (e.g., setting SuperUser password, user limits, etc.), you
can edit the config file in /etc/mumble-server.ini
, which is heavily commented so you can see what
each setting does. After making changes, you can restart the server by running
$ sudo service mumble-server restart
After getting everything installed, the process for setting up admin accounts is also straightforward, and detailed in the wiki. You connect as a new user with a certificate, register yourself on the server, connect as the SuperUser, and set your newly-registered user as an admin. Then, you can use that account to add other admins, create rooms, edit ACLs, and more, all through the simple Mumble client.
Using Let’s Encrypt’s certbot
to create standalone certs for your server is also straightforward.
This gives you a low bandwidth, high quality, and low latency VoIP voice rooms that you can have people connect to while keeping the data on your own servers, and without running a full web-browser just for VoIP.