Building a Songbird Add-On: Part 0

songbird-artist-web-media-view-mockupAfter com­plain­ing about alpha­bet­i­za­tion in music libraries for — wow — almost a year, I’ve decid­ed it’s time to do some­thing about it.

I know very lit­tle about JavaScript and XUL, but that is going to have to change. My goal is to com­plete the add-on described here, an Artist Web media view, or per­haps “Con­stel­la­tions.”

To make the task appear less daunt­ing, I’ve bro­ken it up into many mile­stones of mar­gin­al improve­ments. If I fol­low this time­line, the plu­g­in will be usable and released to the pub­lic as Con­stel­la­tions v0.1 on July 27.

Mile­stone ver Descrip­tion Tar­get Date Actu­al Date
i 0.0.1 dis­play all artists in a ver­ti­cal list 08 Jun 2009
ii 0.0.2 dis­play most recent Last Played val­ue for each artist 15 Jun 2009
iii 0.0.3 dis­play total Play Count for each artist 22 Jun 2009
iv 0.0.4 vary font sizes accord­ing to total artist Play Count 29 Jun 2009
v 0.0.5 vary font col­ors accord­ing to total artist Play Count 6 Jul 2009
vi 0.0.6 vary font col­ors accord­ing to Last Played 13 Jul 2009
vii 0.0.7 arrange artist names left-to-right instead of ver­ti­cal­ly 20 Jul 2009
viii 0.1 focus first of the artist’s tracks in the playlist pane when the artist’s name is clicked 27 Jul 2009
ix 0.1.1 resize/re-col­or based on play fre­quen­cy instead of play count 10 Aug 2009
x 0.2 options win­dow that alter­nates between which vari­able is assigned to which font prop­er­ty 31 Aug 2009

I’m going to cre­ate a sep­a­rate blog to track my progress on this, for sev­er­al rea­sons:

  1. Threat of shame. If I empha­size pub­licly that I am going to do this, and I fail, I’ll be kind of embar­rassed. Hope­ful­ly that will moti­vate me to actu­al­ly com­plete the project.
  2. Geeks love prov­ing that they’re smarter than you. If I’m hav­ing a tough time with some rel­a­tive­ly ele­men­tary code, maybe peo­ple will mock me in the form of writ­ing the cor­rect code them­selves. I’m cer­tain that what I’m attempt­ing could be done in no time flat if I’d been for­mal­ly edu­cat­ed in things like JavaScript. Maybe the bit­ing sar­casm of peo­ple who need to demon­strate their intel­li­gence will show me where I’m going wrong.
  3. To encour­age pla­gia­rism. Look, I’ll admit that I’d be proud if the add-on that comes out of this bore my name. But ulti­mate­ly, I don’t care. If some­body sees what I’m doing, likes it, wants it to be their own, and knows they can beat me to it, then great. At least we’ll have the add-on.

If you feel like mock­ing me or encour­ag­ing me you can email me at, leave/follow com­ments on this post, or vis­it my ded­i­cat­ed Con­stel­la­tions blog to see where I’m tak­ing this and how quick­ly I fail.