16 Apr 2011
NOTE: If you haven't used Spotify most of this won't make any sense meaning that those of you in the US should probably find ways to play around with the product instead of reading this. Sorry for any factual errors, I prepared this for a different context...
As a startup person myself and fellow Swede I've been following the company closely since their early days. Even though there are a lot of players in the music streaming market I strongly believe Spotify has the best offering, great taste combined with solid technology gives for a very responsive and well-thought out user experience.
First of all, if you're even slightly interested in the music industry and how modern music streaming ventures are trying to "solve" the music problem you need to research the story of imeem. The easiest and probably most interesting way is to watch one the founders talk at YC Startup School. So why is imeem interesting in the context of Spotify? Well both of them tried to solve a hard problem only to realize that ad-supported business models don't scale and that the music industry is highly territorial and fragmented. Dealing with people who see their revenues falling something like 8.4% just last year ($1.5 billion globally) is probably not the easiest thing in the world.
So why isn't Spotify dead like imeem? In 2009 it seems that Spotify and others finally understood the power of the iTunes experience. You buy music, play it on your computer and then bring it along on your iPod/iPhone. What most people fail to realize is that the problem with streaming is not renting versus owning. It's that you can't consume music in the same way, the streaming solution locks your music to computers (and require a working internet connection). To make matters worse the music industry seems to insist on a model of $10/month per user which requires a lot of added value if you're going to get someone to pay when they're used to free.
Timing is everything and with Apple allowing native music apps on the iPhone they kind of gave away the keys to iTunes kingdom to companies like Spotify. The entire iPod ecosystem is controlled by Apple and you can't easily put music on them but with iOS a new music platform opened up. Spotify put out their mobile app which synced music over WiFi/3G and allowed for offline playing. And the customers responded. I believe the Spotify mobile app is the single most important reason for driving sales and securing a profitable future. In retrospective it's almost scary how much of being a successful startup depends on timing and sheer luck. Had Spotify not been able to provide a mobile offering we'd instead be analyzing another imeem and how their big bet on ads and a business model where people would pay to skip them didn't scale.
So mobile seems to be key for making the streaming business models work. What's even more fun is that it looks like the mobile carriers are the ones who are going to scale the business model even further. The Swedish version of AT&T is called Telia and since last year most of their phone offerings have had 6 months of Spotify Premium included. The carrier basically subsidies Spotify just like they do with the phones. This setup shovels customers into the Spotify funnel (with zero cost) and gives them plenty of time to let the product and the social aspects of it (Facebook sharing, collaborative playlists) get people hooked. User retention is a great problem to have when you user acquisition cost is zero.
OK, so the model seems to working out. But they're still stuck in Europe. Rumors about launching in the US have been floating around for almost a year now. My bet is that Spotify probably won't launch in the US without a partner since Apple is dominating the online music market and can leverage that against the music labels. Remember when Apple bought Lala? Just to kill it off? Understand that Apple makes money selling hardware. Not music or software, iTunes is high revenue but very low profit-margin. So if you in any way threaten sales of the Apple ecosystem which you indirectly do when you compete with iTunes (since it drives iPod sales) you end up with Apple working against you. You might think that with the iPad/iPhone Apple shouldn't care since they still make money of the hardware. Sure, but then you're forgetting the 20 million iPods they sold in Q1 2011 alone...
(As a side note, a US launch does seem pretty close though, Spotify recently opened offices in New York which unlike other offices outside of Sweden seem to include an engineering staff.)
Spotify uses a modified (proprietary) version of Ogg Vorbis which support seeking in streams. Music is normally streamed at 160kbs but paying customers can select higher quality streams at 320kbs. Music is streamed to clients using a hybrid P2P model which is tuned to minimize latency, in most cases playing a song is instant. The focus on speed is not merely a gimmick, it is well known as shown by Google and others that speed and low latency change usage behavior. People will use your product more if it's reponsive since they feel more in control.
The Spotify client maintains a local cache which minimizes network traffic. Together with the P2P components Spotify probably has the best distribution model of all the players HTML/Flash solutions are much harder to scale and the costs are drastically higher when you can't cache or use P2P.
One of the hardest technical problems which are overlooked by almost everyone is the playlists component. Since playlists can be shared and collaborated on with others in real-time and need to be synced across different devices you end with up a form of distributed revision control. The real-time ascept make it even harder since you have to use a push-model and maintain persistent connections to all clients.
A cute trick to make it easy to share songs and playlists is to give them unique a URI. Spotify uses both normal HTTP links and a shorter form like spotify:track:2cJz1loJp5EZM6shmQpLZN which are handled by OS protocol handlers (Windows: via HKEYCLASSESROOT, OSX: CFBundleURLTypes).
Spotify provides a binary-only library for Windows, OSX, Linux and ARM which can be used to write your own player. The SDK is a bit quirky but you can make it to work with something like SDL pretty easily, see my hackish Win32 demo. For an interesting code reading session I also recommend despotify which is the result of reverse engineering the Spotify client protocol. Be sure to check out the authentication trick using computational puzzles which makes the Spotify servers DoS-resistant.