Ladies and gents, the silence of the past few months has a reason, and its a good one.
During the past year, while developing new Volumio features, I had the feeling that the system was designed in a way that made it really difficult to add new bits and pieces to it. The WebUI has proven to work great and efficiently, but since it was relying on PHP it felt a bit too “ancient”.
I recently fell in love with Node.js. For those of you living under a rock, Node is basically an extremely powerful JS development engine which works both server and client side (to make it extremely simple…). And comparing it to PHP reveals how much better this would be to run the entire Volumio ecosystem.
Guess what? Volumio is currently being completely rewritten in Node. And so is the Volumio OS underneath. This explains the lack of updates of the last times, as the concentration is on delivering a completely new, faster, better Volumio.
It is a major effort, and time consuming, but this will bring lot of benefits. And, since we are tackling this major task, the re-build process will benefit from all the experience gathered in those two years with Volumio, and the whole system architecture will be improved as well.
Let’s see what this will mean:
Using Socket.io, the WebUI now has a near real-time connection to the Volumio server. This means that the user interface will feel more responsive, real time data (such as visualization) may be streamed, and there will be no more connection hangs or drop-outs. Furthermore, the new Volumio OS (under a major rework as well) will be ported to Debian Jessie and it will feature the lightning fast and reliable systemd. As of now, the development builds of Volumio 2 boot in just 19 seconds on a Raspberry PI.
We want Volumio2 to be easily expandable by nature, both from the team and the community. That’s why we’re developing a standard API for plugins. Users will be able to add their own plugins for new user interfaces (such as hardware buttons, direct control, etc), and their own plugins for new music services (there are always more out there).
The goal here is not to provide a system that does pretty much everything, but instead a modular and scalable music player that will grow thanks to its amazing community.
By integrating in a standard way all those plugins, we’ll be able to seamlessly show spotify songs on third party MPD clients, or add SqueezeClient capability as it was a native service, just to name few examples.
Volumio2 continues to support a custom compiled MPD daemon for high quality local audio playback, and we are evaluating other local audio renderers as well. Due to the modular architecture, music playback daemons may be used interchangeably. This will allow users to perform true comparative listening, and use the audio renderers which sound the best.
As you know, sound quality is the first and most important feature of Volumio, and we’ll not compromise on that.
Volumio2 will be built with state of the art technology. Node.js, Angular, and Socket.io just to name a few. The goal is to create a system-environment that will be top-notch for many years to come. Also, the whole OS Image is built with build script, allowing faster release schedule and homogeneous builds. This will also mean that the number of supported devices will grow accordingly, and Volumio 2 will be released also for non ARM architectures.
This great effort is made thanks to the great Volumio community, and especially thanks to Jotak, Esseki, Ning-yu, Meryn, Sog Sussex, Gitaawerk who joined Volumio Team as developers. There’s lot of love, committment and expertise going on as you read. You’ll see the product of it in few month, at least this is what we hope.
I hope you are as excited about Volumio2 as we are! The code is currently in alpha state as we develop and test the architecture and interface. Come check out the code, and join the discussion in the forum!