Like most desk workers in the world, the Covid situation forced me to work from
home. With this situation came the use of video tools like Zoom and Teams.
Both come with their own set of frustrations in terms of quality and privacy.
Having to deal with audio and video distortions during a two-hour call is a
tiring experience. You want minimal lag and crispy clear audio and video for
I already knew about Jitsi and was working on an
open source softphone myself, which relied
on an Asterisk PBX. However, they all seemed to be
too complicated for my usecase; an easy-to-use video-conferencing environment.
It’s nice to be able to use WebRTC to connect to a PBX, but what’s the use of
SIP when all participants are on a browser anyway? Somehow I failed to recognize
this and therefor delayed pulling the plug on this softphone project for too long.
Things started to move when I learned about Pion
and Galene. Galene is a videoconferencing
server that is easy to deploy and requires moderate server resources. While
not being a Golang developer, it felt that I could understand parts of
what the software was doing, which convinced me that I could make small
adjustments when I would need them.
The Galene project already features a default
WebRTC browser client, but it lacks modern frontend tooling. To get my mind of
failing side-projects, I decided to start a new project, but with slightly less
ambitious goals. I wanted to focus on building a more feature-complete
WebRTC frontend for the Galene SFU.
To start with; I searched where the name Galene came from and learned that it
is a lead-containing mineral. It would only be logical to name this side-project
after another mineral. Pyrite, or a fool’s gold, felt to be a good description.
It would be nothing more than a simple frontend for the more complicated part;
the SFU itself.
Still, it took me almost a year of spare time to rebuild most of the Galene
frontend as a modern Vue 3 application. Gladly I could just
reuse the Galene protocol.js file in Pyrite. The UI layout in Pyrite is almost
exactly the same as the default client. This is a typical layout that just works
for desktop-like communication software(e.g. IRC clients). It still needs some
adaption for smaller devices, but for now itis good enough.
Using Vue and SCSS enables me to deal at a faster pace with things like templating,
styling and abstracting functionality to components. The last months, I focused
on adding a management interface to Pyrite, which allows you to manage groups and
users. It’s a simple Express.js backend that acts as a proxy between Galene and
the client. In this setup, I can easily deal with SFU-related backend tasks,
like serving recordings, updating group permissions and authentication.
I recently started dogfooding Pyrite (thanks team!) in my daily job,
by doing daily standups on a Pyrite/Galene instance. Using feedback from daily
usage is incredibly useful. Also, I learn a lot from users reporting in the
Galene issue tracker. I love building Pyrite, and hope people will find it
useful for their video conferences. Do you like Pyrite? It would be great if
you could star the project on Github,
to get some more exposure. Cheers!