RSS Tags

C'est toi le titre


A second take on radio automation: Showergel becomes RadioZ

Martin Kirchgessner, 2023-10-22

Tags : liquidsoap  in_english 


It's been 3 years since my last post here ; time flies ! During those 3 years, I kept experimenting and developing Showergel, while that software played happily programs and music at Radio Campus Grenoble. I also had time to discuss with users and other radios (here in french). All of this highlighted what's really needed in volonteer radios, and a few mistakes in Showergel's architecture. I would like to reboot the project with new goals and new tools. And a new name, to reflect it will almost be a new project.

Why changing ?

As already discussed during my Liquidshop 3 presentation, my initial ambition for Showergel now looks out of reach. Building "a helper for Liquidsoap-based radios", inspired by Liguidsoap, is as complicated as Liquidsoap itself. It's no coincidence that Liguidsoap didn't last long either.

Since I started Showergel, Liquidsoap changed. The language evolved, it now has a better support of JSON and is somewhat object-oriented. Its implementation evolved and its dependencies, too: now Liquidsoap depends much more on ffmpeg and curl, for example. Because of these changes it's almost impossible to build something compliant with any Liquidsoap version, even minor versions. I've spent too much time testing and adapting, and keeping up with Liquidsoap developments didn't help much Showergel itself.

My main motivation is to help community radios, especially french ones. I've learned that Liquidsoap might a bit too difficult for folks we usually meet there. A Web interface that lets people decide what will be broadcasted is a better idea.

After 3 years I'm also disappointed by some tools I started with, especially on the front-end side. As a seasoned full-stack dev, I know those tools change a lot. Still, the complexity incurred by npm, yarn, webpack and the like does not maintain itself. I geguinely thought using Vue3 (brand new at that time) would come with some stability for a few years - instead, the composition API became the new trend. I had a good time using Bulma, but it has zombified. And, after all, the showergel.rest module looks like boilerplate: why should a small project maintain a JSON representation of its models? Those objects will be HTML in the end.

All of this is free software, for benevolent radios, written on my free time. Potential contributors and users will likely be in the same situation, so developer and admin experience matters a lot: we don't have much time to give, let's use it efficiently and have a good time. This drives both the software architecture - we run with the smallest number of services as possible - and the softare stack - re-using as much as possible, avoid intermediate layers.

What will change ?

To address the issues I'm hitting on with Showergel, I'd like to change the project's scope, stack, and name.

The scope should be yet another web-baseed automation system: hiding the Liquidsoap script who's playing behind, with an opinionated scheduling logic. Focus on the Web interface so even program producers can log in and upload their next episode. Music should be available from this interface too, I'm considering to re-use Beets as a music library.

I'll keep the simple Python program architecture, but with another stack of frameworks. Thus I can transpose the experience I gained with Showergel in a new project, this time using Flask, HTMX, and Bootstrap. The Bottle framework was fine, but Flask is more actively maintainted and provides a few plug-ins that will be useful. I considered Django but Flask is a better fit to run everything in a single process and use SQLAlchemy. Such details ensures the application stays small but very flexible. HTMX solves neatly the "JSON-in-the-middle" problem of current Web applications. And Bootstrap is good enough to end up with a clear and legible interface.

Rebooting the project as RadioZ

Because community radios in France are usually called "Radio A"...

I'm also moving the repository and issue tracker, because GitHub is Microsoft now. RadioZ is hosted at Codeberg. I haven't ported all Showergel features yet.

If you'd like to keep Showergel, the any-Liquidsoap-script-companion: I'd be happy to watch a fork going on, and am ready to give permission to release it (on Pypi/readthedocs) using the same name.

Stay tuned!