Status of Chromium-based Port of Nuvola
As mentioned in the Nuvola 4.9 announcement, most of the energy in the last few months was invested in the Chromium port of Nuvola. This article describes the current status of this ambitious effort: What are the reasons? Does Spotify work? Can Google Play Music and Deezer play without Flash plugin? When can we expect Nuvola with Chromium backend to be released? Continue reading…
Update March 16th, 2018: Nuvola 4.10 Uses Chromium Engine for Spotify, Deezer, YouTube, Mixcloud, and BBC iPlayer to Play Without Flash Plugin
Reasons
The change of a web rendering engine is a significant task, which will slow down the development of new Nuvola features. However, there are several reasons for switching from WebKitGTK+:
- Many music streaming services still require Flash plugin for audio playback, but WebKitGTK’s support of Flash plugin is buggy and requires an ugly hack.
- Some services, such as Spotify, require Widevine DRM plugin, which is not supported by WebKitGTK.
- Other services support Flash-plugin-free HTML5 playback with Media Source Extension (MSE) feature, which is experimental and not enabled by default in the latest stable WebKitGTK. Some web apps work somehow (BBC iPlayer and Groove Music), other fail to play or even crash (Google Play Music, Deezer).
- Web developers usually do not care if their website works in WebKitGTK, so there have been a lot of compatibility issues (mostly with Google Play Music).
ValaCEF Project
WebKitGTK+ provides an excellent high-level GTK-3-based API, which includes Vala bindings and can be readily used in Nuvola. Unfortunately, there is no such API based on Chromium.
For this reason, I created the ValaCEF project, whose goal is to provide WebKitGTK-inspired API for Nuvola. The underlying web rendering library is called Chromium Embedded Framework.
My effort started in September (the initial commit). I managed to build CEF with GTK+ 3 support, but it crashed. I reported the bug upstream hoping to get some help, but I haven’t received any satisfactory response.
In November, I ported the CEF C API example to GTK+ 3 only to find out that my issue was also reproducible there. I filled another bug report and got the very first useful clue — the example worked fine with ancient GTK+ 3.10. Then I spent a lot of time building & testing various GTK+ versions until I found the very first failing commit and developed a workaround two days after that.
The development of ValaCEF is very active since December. In the screenshot, you can see Cefium, which is a demo web browser to develop & test ValaCEF functionality. It uses ValaCEF’s WebView widget, which can be embedded in a GTK+ 3 application such as Nuvola Apps Runtime.
Current Status
- Spotify works once again as the Widevine plugin is supported.
- Deezer can use HTML5 player for audio playback and doesn’t need Flash plugin for that.
- Google Play Music can use Media Stream Extension for audio playback and doesn’t need Flash plugin for that.
- Pepper API Flash plugin is supported. No hacks are required to make the Flash plugin work for streaming services that still require this obsolete technology.
Although there are still several unresolved issues to work on, I believe that Nuvola 4.10 with the Chromium backend for selected streaming services might be released at the end of January 2018. Users with Nuvola Basic/Premium/Patron account will be invited to test development builds soon.
Update January 19th, 2018: All users with Nuvola Basic/Premium/Patron account have already been invited to testing.
Nuvola Contributes to Good Angel Foundation
Jiri Janousek, the core developer of Nuvola Apps project, is glad to contribute a part of the project’s revenue to the Good Angel foundation. This way, he can regularly help families with children, which face financial distress as a result of severe illness. Even small monetary donations can help these families overcome a tough period.
Thank You for Your Support
At the time of writing, the awesome people listed bellow and a few others are Nuvola Patrons, who support the development of Nuvola Player. Thank you all!
Andrew Allen, Simon Law, Bart Libert, Bryan Wyatt, Christian Dannie Storgaard, José Antonio Rey, Ryan Wagner, Chris Beeley, David, Andrew Azores, Andrew Kvalheim, Balázs, Ben MacLeod, Martin Wimpress, Duco van Amstel, David Wiczer, Gabriele, Nathan Warkentin.
If you are a Nuvola Patron but your name is not listed, you have to enable the “Show my name and a link to my external profile page in a list of Patrons.” option in your profile settings. Obviously, it is not enabled by default to protect privacy of our patrons.