Examples can serve as objects of inspiration and learning. To learn good development for the cloud, we can look at cloud services that work well. The first service we’ll explore is Spotify.
The good
Spotify has made me realize how I want “my” music collection to be. I want to have access to all kinds of music, when and where I feel like. But I don’t particularly want to hold a record in my hand. In fact, having to maintain a record collection is a burden. Records require space, insurance, cleaning, organizing, moving… you probably get the idea. I also want my music to be legal, and to support the artists that enrich my life with the product of their creativity and energy.
Spotify addresses these wishes in a very elegant way. Like most services, Spotify offers many things old and some things new. Old things include the technology to store music in a digital form, purchase it online, share it with friends and take it with you on a portable device.
The current ways to achieve these things were, in hindsight, less than optimal. To summarize: growing and maintaining an MP3 music collection takes a lot of effort over the years in finding, downloading and checking your files. Besides that, most sharing of MP3 files is illegal.
Any solution where the end user is responsible for storage of the files requires them to organize and backup the files. It takes effort to take part of your music collection with you. Whether it’s dragging files from one hard drive to another or configuring your latest portable music device to automatically synchronize with the latest version of your media player software: you need to take action every time you want to listen to new music on the road. If your brain is fallible like mine is, you’re going to forget this half of the time, and you’ll be stuck with the same tracks you’ve already heard a thousand times. Again. And moreover, you have better things to do than moving files around. Managing your music shouldn’t take a lot of your energy.
Enter Spotify. Spotify offers access to a very large library of music, for a fixed, low monthly fee, when and where you want. The service is responsible for maintaining the music, not the user. The only responsibility of the user is to select which music she wants to listen to. She can organize her music in playlists, star favourite tracks and share music with friends. In contrast to sharing music by exchanging files, the music lives on Spotify’s servers and is streamed to users.
We wrote that cloud apps need to go mobile. Spotify does this more than adequately. Mobile access is offered through apps for the various mobile platforms. Personally I have experience with the Android app, and almost purely positive. Spotify is synced seamlessly between all devices you use it on. Of course, from a software perspective, only syncing the users playlists and preferences, is a lot simpler than having to synchronize the music data.
For the user, Spotify feels like what is in my eyes a true cloud service. The cloud is always on, always available, and working uniformly on all ways you choose te access it. A cloud service is abundant on many levels. We’ve looked around for a term to define this, but haven’t found one yet. We’ll stick with “true cloud service” for now.
Developing for Spotify
Spotify is very interesting for users. But is it interesting for external developers? Two ways to interact with the service are offered on the Spotify Developers site: the Metadata API and libspotify.
The first is a RESTful API to be accessed over the web. It can be used to do most things a user can do with the Spotify apps except… play music. To do that, you need the second option, libspotify, which is a library for Windows, Linux an Mac you need to install locally. Hence with the current tools it’s not possible to develop a custom player on mobile platforms, only on PC’s. I haven’t experimented with the developer tools yet, but I’m eager to do so and will report my experiences.
The bad
A cloud service that offers access to a virtually limitless collection of music for a fixed, low fee is a Good Thing on many levels. There are downsides for the user though. The key term is “dependence”. I like what Spotify offers me as a user today. In fact I like it so much, that what is now my record collection in physical or digital form, I would love to turn into only a set of Spotify playlists and throw most of the originals in the bin. But that introduces a financial dependence and a risk.
To keep what I have, I’ll have to keep paying Spotify ad infinitum. And although Spotify is currently flourishing, it might not in two, five or twenty years (although I certainly wish them to). If I trust them to be responsible for my full music collection, that’s not a very safe idea. There are services which offer similar alternatives (supposedly Microsoft’s Zune offers a similar option), but how do I get my “record collection” from A to B? My conclusion is that Spotify needs an exit strategy for the user. The complete metadata of the collection should be exportable, and ideally importable to other online music services. The good news is that this is very well possible through the Metadata API. Any volunteers?
The ugly
The idea that Spotify sells is compelling, and they back it up with results. It works well for the user. However, reportedly it doesn’t work that well for the artists. Various artists have reported that they receive only meager compensation for being played on Spotify. This could partly be a matter of scale (as the paying user base grows, there’s a larger amount of money to spread), but there could be a structural flaw in the financial formula.
A key point is that we, the users, don’t know how much ends up with the artists. My advice to Spotify in this area is be as open as possible abount these numbers. How much money ends up with an artist for a track being played ten thousand times? By five thousand users? And if the compensation to artists is unreasonably low, consider offering more expensive subscriptions. Personally I would pay more if I know artists are compensated as well as, or better than when I buy their record in a store.
Wrapping up
As an example of a true cloud service, Spotify stands out from the crowd. It offers enormous value to its users for a very low fee. It’s accessible through many platforms in a simple, consistent way and its software works well. And although we don’t have hands-on experience, the developer tools look like they offer a powerful way to build your own integrations.
They definitely have some points to work on. A safe exit strategy for the users and a guarantee of good compensation to the artists should definitely be realized within a year or so. What I find interesting about those points is that they’re high-level problems which only rise up because most other things work so well. If the service had been unstable, or the music collection was too small, or the subscriptions had been too expensive, or the service was only accessible from computers with certain operating systems, probably very little people had known about Spotify. We’ll be following, and using, Spotify with great interest.