Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
30 lines (17 sloc) 4.21 KB

Behind the scenes look at mflow – a developers story!

After nearly 18 months of hard work our company is on the verge of releasing our flagship application mflow. It’s been a long ride but I think we’re on the verge of releasing a new way to discover music.

When we started we had some ambitious goals with a fairly loose mandate on building a social music app that music fans would love to use. Right from the start we set out to sell the highest quality DRM-free mp3s we could encode and went to work on building a superior discovery tool that let you discover music you like through people with similar tastes.

Back then the music landscape was very different, iTunes was still selling DRM’d tracks and spotify hadn’t been released yet.

itunes logo At the time the main competing music players that sold music were iTunes and Napster. We found the user experience of iTunes to be a little sluggish and impersonal, although it looks like they’ll never have a major competitor until they open their monopoly on iPods, allowing other services to synchronize seamlessly with a users’ iPod.

The new Napster on the other hand is just a terrible piece of software – it’s just bad. On first use it was slow, bulky and broken. It probably serves as a good model on how not to build an application and is most likely a direct result of outsourcing its core development. If Napster was our competitor for the #2 spot, we we’re in good shape. Although 2 major events happened that quickly changed the music applications landscape:

iTunes started selling DRM free music and Spotify was released When iTunes started selling DRM free music we lost one of our main competitive advantages, it basically meant we had to focus on getting everything else right and delivering an awesome product.

When we first got our hands on the pre-release version of spotify we we’re blown away by its speed, responsiveness and overall experience. As music lovers, we loved it, it was light years ahead of every other media player at the time and really raised the bar for how fast and responsive a music player could be. It was really a strange experience you could search, skip and seek any song faster than you can with iTunes looking at your own local library.

spotify logo Like any good devs, given new technology we examined it trying to find out how they made it tick. We we’re actually quite surprised that we couldn’t find any evidence of an established UI toolkit or even an established web services framework. It looked as though they had built their own custom UI renderer and optimized tcp protocol which was mostly used to send back XML. Their traffic looked like it was initially seeded from their own servers (for the best latency) and then overtime we would see some P2P traffic on the wire, most likely used to save on bandwidth costs.

This info didn’t help us much, for the best reach and re-usability of our web services we still opted for a standards-based approach by utilizing XML+HTTP web services. Unfortunately Spotify’s choice of using a custom UI renderer (probably built from scratch) didn’t really suit us either as although optimized for runtime performance, it was not an ideal choice from a developers efficiency point of view. We needed to run on Windows and OSX right from the get-go, and after careful consideration opted for QT which was the best cross-platform UI toolkit we found – after we made a misstep with our initial development choice of using Adobe AIR.

So after a rocky start, technology-wise we’re in a really good place. We have a lean talented team of developers and an automated continuously-integrated software pipeline. The moment a new back-end web service is checked-in to our repo, our build agents get to work, running in the background generating the required C++ proxy classes needed to access the service from the mflow client. The automated builds extend all the way until the final Windows and OSX installers are created which is only 1-click away from the new client being deployed.

This leads us to where we are today, with over 1 million tracks ingested and another million on the way. Although we’re still in beta, I believe we have a compelling product which is the best at what we do – discovering music through people.