Spotify is arguably the most popular music streaming service out there. Apologies to any diehard fanboys who may have been offended by this statement. With 100 million users and tight social media integration, it sure plays in the big league. You can also go premium and this will render your interface ad-free and fidelity-high.
But what about Linux? As it turns out, Linux has never been high on the list of priorities for the Spotify team, and at some point, the support was discontinued, then it was revived recently, which prompted me to give it a try. Seeking originality and uniqueness in my work, I opted for Fedora, only to learn that only builds for Debian-based distributions are available. In other words, Ubuntu and friends. Very similar to my experience with Sayonara. Anyhow, let’s see what gives.
I had no trouble setting up the extra repositories. The installation completed without any problems, and I was able to create a new user and login into the desktop client. The dark theme is not to my taste. However, much like Steam, Spotify goes for the best way to show off content. The free version also permanently displays a highly flashy and intrusive ad banner at the bottom of the interface, and there are some additional limitations on your content. However, if you’re not too choosy, you can probably live just fine with the zero-cost option.
I found the search functionality to be simple and powerful. Spotify offered a wealth of useful content, even though its default offerings are pure mass media nonsense. I don’t even know how to respond to some of the albums and artists that were loaded in the client. I felt like bleaching my retinas.
The problem is, I set my birthday – which is a necessary part of the user setup – to be more than a handful of decades back, so I’m really wondering why Spotify deems it necessary or adequate to place a teenage idol into my client. How does this contribute to music search relevance or targeted marketing or whatever?
There’s also a very neat system integration, and you can actually see what Spotify is doing through the system area volume applet. Quite neat. All in all, it looks and behaves the part, and the overall aesthetics are quite pleasing.
More importantly, I was able to find some neat high-quality music and enjoy myself, trying to ignore the ads at the bottom of the interface. I was also able to add songs and albums to favorites, and they showed up in their respective categories. Over time, it is possible to assemble a colorful and useful collection.
The same applies to radio stations. Again, I was able to find a lot of cool, interesting songs. However, I was not able to create my own station for some reason. Every time I’d search for something, I would find an existing entry, but I did not figure out how to splice and mix these different sources into my own. Maybe I’m just thick-headed, maybe this is another bug on Linux, and maybe Spotify does not allow this functionality in the free version.
Still, ignoring the little glitches and problems, the player is fairly fuss-free. It is intuitive and practical, and there’s a rich repertoire of good stuff available. If your taste runs less mainstream, you will still be able to enjoy yourself. All in all, a pleasant experience thus far.
Local music = crash
This is where things turned ugly. One of Spotify’s good features is that you can also add your local music sources. This way, everything falls neatly under a single umbrella. Unfortunately, after I added my collection, the same one I used to test Sayonara, trying to play any one song would cause the client to freeze and then eventually crash.
I was keenly interested to understand why, so I launched the program from the command line with the verbose flag and watched the execution. As I suspected, we had a crash with a core dump. However, to be able to analyze the core, I had to set the shell to actually allow core dumps, and then used the tips and tricks that I showed you in my gdb tutorial to analyze the problem.
16:38:21.613 I [audio_driver_linux.cpp:18 ] Using PulseAudio 16:38:21.613 I [audio_player_queue_impl.cpp:237 ] Pause driver: 0x00007f25d81592d0 Segmentation fault (core dumped)
So first, we need to allow core dumps, and then load them into the debugger.
gdb `which spotify` core
And in gdb, the reason for the crash was as follows:
Core was generated by `/usr/share/'. Program terminated with signal SIGSEGV, Segmentation fault. #0 strchr () at ../sysdeps/x86_64/multiarch/../strchr.S:32 32 ../sysdeps/x86_64/multiarch/../strchr.S: No such file or directory. [Current thread is 1 (Thread 0x7fc9da6bf700 (LWP 6866))]
Searching online, I found several forum threads pointing to this same problem. One was around scaling factor, which did nothing to help, regardless of which factor was used – 1.0000001, 1.0000005 or 2.
LD_PRELOAD=libcurl.so.3 /usr/share/spotify/spotify --force-device-scale-factor=1.0000001 "$@"
Then, I read that Spotify struggled with the newer versions of libavformat and libavcodec available in Ubuntu 16.04, and that I needed older libraries from either Pangolin or Trusty. I manually downloaded these libraries and extracted then, then used LD_LIBRARY_PATH and LD_PRELOAD, but this did not really help. When I tried to install the libraries, the system complained about many missing dependencies, so I stopped there. This meant I am still unable to play local music files, and based on the responses I’ve seen in forum threads, it seems unlikely the Spotify team is going to fix this any time soon, or ever. The Linux effort is largely unsupported, sort of best effort if that. Thus, you’d better rein in thy hopes.
At the end of the day …
I spent some more time reading on how Spotify works and what it does: the whole ad scheme, the fact it uses DRM, the fact downloads and track purchases are no longer available, and the somewhat flaky Linux support. I’m wondering if I should try the Windows version through WINE, but that sort of completely defeats the purpose of this test, does it not. There’s a lot of merit in what the program gives, but there are other, less aggressive options out there. Not sure about the free tag, though. On the other hand, without naming any names, some other services allow non-DRM music and downloads for an annual subscription that is cheaper and more inclusive than what Spotify offers.
The Linux client is a good representation of the state of free music streaming versus Linux popularity, with an inconsistent promise of unsupported functionality, good aesthetics, and a vibrant choice of art, ultimately plagued with bugs and ads. On that low note, let us conclude the article.
I believe Spotify has its merits, if you just treat it as a portal for online streaming, without any big sentiment. I like the looks if not the theme coloring, I like the variety, I dislike the incentive to upgrade to premium, and I’m not so sure about some of the options and features. There’s also the question of overall value, when you compare to what other services may offer.
The Linux desktop client behaved moderately sensibly, failing in the area of local files. Supporting other distros would be nice, but other than that, it did what it could. However, you cannot escape the feeling that the current offering is an act of mercy rather than a clever part of any serious commercial plan, so the client may just disappear one day. I would not bet on using it for posterity if I were you. Yes, it does give you access to a load of good songs and albums and interesting radio stations, but it should definitely not be your one and only source of music.
Anyhow, if you’re into Linux – check – and music – check – then you probably want to give Spotify a try. Again, it looks the part, and it has a wagonload of aurals in its store, so you might find it suitable, and forgive it the odd low punch. Not the ideal way how things should be on Linux, but maybe there’s still some hope, cue in the disclaimer. After all, we had been waiting for Steam on Linux for a decade, and now it’s here. Perhaps Spotify will truly open up on Linux, and the experience will be smoother, less buggy, and most importantly, more open. Take care.[sharedaddy]