[A picture of private offices at Fog Creek Software] Alert! This ancient trifle retrieved from the Joel on Software archive is well-past its expiration date. Proceed with care.

Joel on Software

Worst Project Ever?

by Joel Spolsky
Wednesday, September 25, 2002

Hi Joel,

I'm sure that this is perplexing. As Napster's vice president of engineering and CTO during much of this time, please let me share an alternative perspective. Building a paid music site based on peer-to-peer technology involved more work than you might think at first glance. We had to:

  1. Integrate a user management and billing system.
  2. Build new Windows and Mac client applications that handle the new system, plus add significant improvements to usability and reliability, including better search tools.
  3. Create a system that identifies every MP3 file our users share with 100% accuracy, regardless of the names given to the files. Determine with 100% reliability if any of these files is on a black list of disallowed files, provided by recording companies and music publishers in many formats and with varying degrees of accuracy. This is not even theoretically possible, but major strides were made with the help of Relatable's acoustic fingerprinting technology and a large amount of "expert system" analysis code developed in-house.
  4. Build a payment system to compensate the various rights-holders of the media content that understands fully the vagaries of the music royalty systems and the concomitant dispute resolution processes they involve.
  5. Build a system that would enable owners of music to automatically submit both content and ownership and royalty rates to the system. Digitally encode, fingerprint, and catalog all submitted content. Seed the system with the licensed content.
  6. Build a Digital Rights Management (DRM) system from the ground up that allows controlled usage and secure distribution of content over a peer-to-peer network, including content that was introduced by users.
  7. Build a web-based user registration system.

All of this was accomplished and ready to go. I think you would be very surprised at the tiny size of the "whole team of developers" that was involved. Versions of the system were in beta test from December 2001. The only holdup to full deployment was the record companies' and publishers' refusal to license their content to Napster.

Please keep in mind that simultaneous to much of this work being done, significant development of the existing Napster system was required to be made under court order. Most of the engineering management and many of the key Napster developers were involved in this work. I was also directly involved in the legal process, requiring me to spend massive amounts of time doing legal work, including briefs, declarations, depositions, and very frequent meetings with the RIAA's and the Court's Technical Experts.

As an aside, I hope you don't think that the "3 months" Shawn took to write the original version (not true anyway) was the reliable system that scaled to handle 2 million simultaneous users! Although the Windows client was largely Shawn's, the server code was completely rewritten.

Having managed many large-scale engineering projects, I am well aware of the second-version syndrome. But in this case, we were really building a new first version.

Best,

Eddie Kessler


Have you been wondering about Distributed Version Control? It has been a huge productivity boon for us, so I wrote Hg Init, a Mercurial tutorial—check it out!

Want to know more?

You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.



About the author.

I’m Joel Spolsky, co-founder of Trello and Fog Creek Software, and CEO of Stack Exchange. More about me.

© 2000-2014 Joel Spolsky