June 10, 2011

Pushtape: A Music Publishing Platform

Farsheed Hamidi-Toosi
Senior Drupal Developer
Pushtape is a Drupal-based music publishing project I've been working on. It is currently under active development.

Design goals:

  • easily publish a discography with albums and tracks
  • simple admin interface
  • extendable, minimal framework using existing web technologies
The project is in its very early stages, but I wanted to share with you how we got here and why I believe building this piece of software is important. The idea of using Drupal for music publishing is not new. In 2005 I tried to build a music install profile to include with Civicspace, but Drupal was not mature enough and looking back my scope was way too broad. A few years later Bryght attempted something similar with Backstage, which was intended to be a music distribution directed at the music industry. And in the years since there has been a very long discussion about a music distribution on the Drupal Art & Music group, with some great ideas brought to the table by the likes of Dublin Drupaller and Gus Austin (who has also started scratching a similar itch). Most recently at the Drupal for Musicians BoF held in DrupalCon Chicago (view presentation slides here), a group of us talked about this some more, and while everyone seemed to agree that Drupal is great for music publishing, building a useful toolkit is harder than it first appears. Part of the challenge is that there are so many different use cases that pinning down a feature set is just too hard. Is this for a single band? Is this for a community of musicians? Is this for a label who is managing multiple bands? Is this for selling music? Who will actually be building the site and using it; should it be targeted towards developers or musicians themselves? My conclusion has been to first try and build a minimal toolkit to solve obvious problems related to publishing a discography for a single band, but try and make things easy to expand upon later. The other challenge is that web services have really improved over the years, making the need for an open-source solution less of an itch that people need to scratch. Musicians have a myriad of publishing options today. One of the best services out there right now is Bandcamp, which allows musicians to upload their music and sell it online with minimal branding and has an incredibly easy user interface. Another popular one is SoundCloud, which incorporates many social features. Then there are services like TuneCore which lets you sell your music through online vendors such as iTunes, Rhapsody, and more. These are all great options for musicians and I highly recommend checking them out. However, there are tradeoffs to using these services, just as there are with any web services. On the plus side, web services are generally always easier to setup and use and updates are automatic. However, ownership and control of data will always remain a concern, and you often can't view the code or hack and extend the software that runs the service (for obvious reasons). Hackable technologies definitely require more work but in my opinion are rewarding for those that enjoy building things and the freedom to modify software for their own purposes — something Drupal developers intuitively understand. For Pushtape I want to encourage this hackability. The bulk of the work is done with Panels, CCK and Views wrapped inside of Features. Most custom code is going into UI improvements and tweaks. A "song" or track is based on the song-is-a-page concept. If you already have your music hosted somewhere else, such as Bandcamp or Archive.org, that's great! Rather than try to duplicate functionality of other services, I want to keep things simple so you can customize and create an authoritative resource (i.e. your website) allowing you to define how people can reach your music. In some cases, you might want to have multiple links for a single song: Bandcamp for streaming, Vimeo for the music video, and iTunes for purchasing your music. Or you may choose to treat it solely as a simple discography tool, without any mp3s or links to purchase. Or maybe you'd like to upload mp3s and use Sound Manager 2 to create streaming playlists. The idea is to create a structured, yet flexible, framework for creating songs with metadata, and allow you to organize your songs into albums. It should be simple enough that you can modify it for your own needs without (hopefully!) too much hair pulling, yet still have some useful functionality out of the box. Do you have ideas for how Pushtape should be built or interest in supporting development? Please join the conversation! You can sign up for the email list on the Pushtape website or join the Art & Music group on groups.drupal.org. Looking forward to it!