Songbird 0.3 released!
Tuesday, Oct 30. 2007 – Category: Songbird
woohoo… we just released our 0.3 release this evening.
nothing like joining the gang late and riding on the coattails of success…
it’s been a pretty crazy and busy trip the past month since i joined. i’ve worked a ton on getting the new developer centre launched in conjunction with the 0.3 release, and i’ve written the mashTape add-on for 0.3 as well.
i’m psyched to see 0.3 get out there as it means we can get some more websites using our Webpage API. i worked on a few demos of it, and it’s really powerful. it’s been awesome just being able to go to the Insound music store and purchase music to have it download directly into my media library and be playable. it’s basically the iTunes + iTunes Store integrated experience…. except anyone can achieve that level of integration.
anyway, enough blabbering. go download 0.3 now.
(and for all the p.o.o. readers: sorry, no, we still don’t have a Solaris port yet - Triskelios has done a huge amount of initial work, but hit some issues with XULRunner - and i haven’t had any time to take a look. but there are quite a few of us at the nest who would love to see it ported to OpenSolaris)
an OGB member’s dilemma
Sunday, Oct 28. 2007 – Category: OpenSolaris
Yeah, I’ve left Sun - but I’m still on the OGB, and I still care very much about OpenSolaris…
.. which is why this whole stupid naming/branding debate going on in various threads has me bothered.
O’grady has a good succinct summary along with his opinion on the matter. So here’s my dilemma. What is an OGB member’s duty? Is it to defend the interests of the community that’s grown up around OpenSolaris… or is it to grow the community more? The charter of the OGB which sets up this “federalised democracy” seems to set the powers of the OGB to be merely the appeals board for inter-Community conflicts. Which would imply that the responsibility of growing the community falls to the Advocacy Community… thus leaving the OGB to defend the interests of the community.
This is bullshit.
(in my personal, very humble, opinion)
I do believe (now) that the OGB should be responsible for leading and growing the OpenSolaris community more; the fact that we haven’t done so is a shame - but oh well. We’ve still got time. So, let’s go ahead and assume I disagree with the charter and think the OGB should assume more powers than it’s currently explicitly granted
I’m stuck with the dilemma of basically defending the community we have, versus growing to be the community we could be. I (now, though I didn’t initially) agree with all the proponents of the Indiana-should-be-OpenSolaris argument - for the reasons O’grady outlined. I think it decreases user confusion, and simplifies the messaging… hopefully that leads to wider adoption.
So herein lies the “defending the community we have” bit. I can very much see that there are people opposed to Indiana->OpenSolaris, as well as the people who support it. I don’t think that one side has more proponents than the other, so it’s decidedly unclear to me what the community voice is.
So what I hope for is that Sun will, as Ian outlined in his proposal, make this a community decision. While I’m fully aware that Sun owns the trademark, and has every legal right under the sun (har har, I made a funny) to rebrand Indiana as OpenSolaris, I think making a unilateral decision to do so would be quite a show of poor faith.
While, as I mentioned above, I support the rebranding, and I hope it succeeds - I hope even more that Sun will take into account what the community thinks and hold a community vote to decide. And even more importantly - I would hope they would abide by such a community decision. Some people will say that Sun should go ahead, do it, and suck up the inevitable backlash/blow that will occur (or heck, may not even occur). I think that Sun has not yet built up enough goodwill in the open source community (not for lack of effort on Sun’s part though) to do it though… and I think it would send a nasty message to future members of the community.
Anyway, this is definitely one of the more interesting debates going on in the OpenSolaris community - and I’m definitely torn trying to decide what my responsibilities (once again - assuming I have them) are to be.
Mashing up the goodness
Monday, Oct 22. 2007 – Category: Songbird
I blogged last week about creating my first webpage to mashup some information using the Songbird Webpage API… but I thought what would be really cool would be to do it as an extension so I wouldn’t even have to leave the library view.
… also I needed to learn the Add-on API - so this was a good opportunity to kill two birds with one stone.
The end result?
This extension adds a tabbed panel to the main library view allowing you to see Last.fm tags for the currently playing track (and to open new browser windows for a given tag), a Flickr photo stream cycling through Flickr photos of the artist (doesn’t work so well if you like the Cranberries though), a Last.fm events feed for the artist (see upcoming concerts/events, etc.), and a lyrics textbox from metrolyrics.com.
In other words - it takes various data sources thanks to open standards and APIs, and lets you combine them together to create a useful data aggregation based on key user data: namely your media library.
Anyway, it was a really useful exercise to learn the add-ons API, as well as XUL. Given this was my first exercise in both (I’d more or less had no XUL experience beyond a cruddy Firefox toolbar I wrote ages ago for OpenGrok) - I think this is a great testament to how powerful XUL & Songbird’s extension and add-on capabilities are.
To put it bluntly: you can do a TON of stuff.
Many thanks to Matt for putting together the Songbird Developer Tools Add-on, which made this incredibly easier. Having the ability to disable the XUL cache and refresh the UI were huge - and the XUL periodic table was brilliant. If you are even thinking about writing add-ons… you need to install the Developer Tools Add-on. It will make your life incredibly easier, especially if you’re a XUL-retard like me.
Behind the scenes with the Songbird book club
Friday, Oct 19. 2007 – Category: Songbird
As I mentioned yesterday, I built my first Songbird extension, albeit a slightly contrived and not tremendously amazing one. However, it serves as a good example for the development process I suppose. Especially because this one also involved me having to dive into the Songbird source a little bit to find the exact routines I wanted. Even more especially because I’ve had no prior experience, so this really is the complete naive and ignorant Songbird/Firefox extension developer scenario.
If you pull apart (e.g. unzip) the bookclub.xpi extension, you’ll see in the chrome.manifest I only overlay one XUL item, the menubar:
overlay chrome://songbird/content/xul/menuOverlay.xul chrome://songbird-bookclub/ content/overlayMenu.xul
If that’s not a big enough clue that this is a pretty simple extension UI wise, then I dunno what is.
So let’s go take a look at chrome/content/overlayMenu.xul
You’ll see the minor UI part involves doing the <menuitem>> for seeding the music blog bookmarks. The bulk of the interesting part of this extension lies in the Javascript, so let’s go take a look at seedMusicBlogBookmarks()
So up until this point, I’d managed to completely scavenge bits from the Getting Started with Add-ons guide. Now I needed to actually do something unique and original.
Damn
So I sat back a bit and thought - okay, I need to get to the bookmarks. How do I manipulate the bookmarks? Well, the bookmarks belong to the service pane (the service pane being the left hand side panel). So, knowing the OO nature of things…. I figure I probably need to figure out how to get a service pane object and then get the bookmarks object. This is where I got stymied a bit, and decided it was as good a time as any to start looking at the source.
… so this is where I actually cheated a bit and used my own personal OpenGrok instance to browse the source. But for now, let’s take a look at the currently official Songbird source browser which is Trac based. I used my keen sense of reasoning and my logic which only fails me occasionally to dive into the components/ subdirectory.
Here I saw the servicepane subdirectory. I dropped into the src/ subdirectory and saw the source for the bookmarks service in sbBookmarksService.js
I read the source for importBookmarks() which pointed me at addBookmark() and addBookmarkAt().
Yay, there was much rejoicing.
So I did what every other lousy programmer does, and searched the source base for “addBookmark” which pointed me over to the bookmarks unit tests in test_bookmarks.js. That conveniently told me how to get access to the bookmark service, so that’s how I got the SPS, SPS.init(), and BMS stuff setup.
From here, I needed to figure out how to add a bookmark. Fortunately, from our prior diving into the bookmarks service code, we saw addBookmark, addFolder, and addBookmarkAt. Brilliant, we’re all set! So from there it was a simple matter to make the XMLHttpRequest() to grab the Birdhouse Media Web Directory URL, and parse it to grab the MP3 blogs section, call addFolder() to create my “Music Blogs” folder, and then loop through addBookmarkAt() for each blog in the directory to add it to the folder created. That should be pretty straight-forward from the rest of the code in overlayMenu.xul.
So at that point, the extension is done. So I built it, and loaded it in only to see errors about addBookmarkAt() not being defined.
WTF?
More searching for addBookmark() & addBookmarkAt() brought me to the public interface list for the bookmarks service, where I saw only addBookmark() and addFolder() were being exported. Damn, I needed access to addBookmarkAt(). So I did the simple fix and had addBookmarkAt() expose itself publicly, and wham…. everything was working beautifully.
So there, that’s my walk through for my thought process from start to finish for making a Songbird extension create bookmarks in a folder.
only slightly stoned
Friday, Oct 19. 2007 – Category: OpenSolaris, Photos
sara pointed me at the photos joerg took from the OpenSolaris developer summit last weekend.
more explicitly, she pointed me at the above picture. love how everyone is looking straight at the camera smiling happily while i goofily am looking off to the side…
lovely.
i should make a hackergotchi out of that.
Building a better bird
Friday, Oct 19. 2007 – Category: Songbird
Yay, I had my first putback^Wcommit to the Songbird source yesterday. Okay, granted, it was pretty trivial - but it gave me the opportunity to continue the tradition of fun commit messages.
The more important thing I suppose is that exposing addBookmarkAt() let me build a Songbird extension to address 5144. Seems like people miss Songbird coming with a seeded list of MP3 blogs. We’ve moved this out of the player and into the Media Web Directory in the Birdhouse page that’s part of Songbird.
Turns out people don’t want to look for stuff. They just want it there for them. Go figure.
Anyway, I put together the Birdhouse Bookclub extension, more as an exercise to familiarise myself with some of the extensions APIs. It’s a pretty cheesy add-on, in that all it does is create a menu option in the “Tools” menu to seed a “Music Blogs” bookmark folder with bookmarks from the Birdhouse, but hey… it’s something I guess.
The whole is greater than the sum of its parts.
Wednesday, Oct 17. 2007 – Category: Songbird
Don’t you love it when you add one cool thing to another cool thing to get something even better?
I do.
Root beer is good. Ice cream is good. Root beer floats are fantastic. Daphne was good. Velma was good. Add them together and you had the Scooby Doo gang (well the only members worth watching anyway).
So Songbird is good. Nay, Songbird is great (okay so I’m a little biased). Last.fm is good.
Songbird + Last.fm is yabba-dabba-doorific.
Here’s a really simple example I threw together to familiarise myself with the Webpage API. (Of course it only works from inside the Songbird client, so make sure you load it from there) It’s perhaps not the greatest, but it is pretty straight-forward, so hopefully it’s of use to others. Basically it adds listeners to the Songbird events that monitor when the tracks change. It then makes AJAX queries to Last.fm to load album cover information (including cover art), tag information for the current track, and a list of similar artists - all using Songbird’s wicked powerful Webpage API and Last.fm’s handy dandy XML web services APIs. On the right hand side, it does some somewhat unrelated tag-clouding of your own media library. Yeah - it’s not related to Last.fm, but I wanted to try it. So sue me.
So this is just a mere example of the kind of goodness that comes from two open APIs adding up to a whole that’s greater than the sum of its parts.
well that sucked
Wednesday, Oct 17. 2007 – Category: Football
when is England going to learn??? when you’re up 1-0, don’t camp in your own half. especially at a visiting stadium. keep the pressure on damnit!!!!
Monday, Oct 15. 2007 – Category: Linkage
Paul Krugman wrote a great piece on Gore Derangement Syndrome today.
What is it about Al Gore that drives right-wingers insane? The worst thing about him, from the conservative point of view, is that he keeps being right.
and quoting one of Krugman’s quotes:
And at National Review Online, Iain Murray suggested that the prize should have been shared with “that well-known peace campaigner Osama bin Laden, who implicitly endorsed Gore’s stance.” You see, bin Laden once said something about climate change — therefore, anyone who talks about climate change is a friend of the terrorists.
I’m sure Gore clubs baby seals secretly.
If Asimov produced electronica….
Friday, Oct 12. 2007 – Category: Music
… it would probably look something like Hexstatic’s “When Robots Go Bad”
I’ve been listening to this all morning and it’s thumpingly cool. Makes me want to bang on things.
Recent posts
- more last.fm goodness
(Wednesday, Dec 31. 2008 – 9 Comments) - last.fm radio
(Monday, Dec 29. 2008 – 4 Comments) - YABS on Songbird on OpenSolaris
(Wednesday, Dec 17. 2008 – No Comments) - Add-on-Con & Mozilla’s Open House
(Thursday, Dec 11. 2008 – No Comments)
Categories
- Cars
- ChinaBlog
- Code
- Computers
- Food
- Football
- Grommit
- Linkage
- Movies&TV
- Music
- Musings
- OpenSolaris
- OpenSource
- Outdoors
- Pets
- Photos
- Quotage
- Songbird
- Sun
- Travel
Grommit
Mozilla
OpenSolaris
- alan burlison
- bonnie corwin
- eric boutilier
- glynn foster
- jim grisanzio
- mark nelson
- mike kupfer
- planet opensolaris
- stephen hahn
Songbird
Archives
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006
- December 2005
- November 2005
- October 2005
- September 2005
- August 2005
- July 2005
- June 2005
- May 2005
- April 2005
- March 2005
- February 2005
- January 2005
- December 2004
- November 2004
- October 2004
- September 2004
- August 2004
- July 2004
- June 2004
- May 2004
- April 2004
- March 2004
- February 2004
- January 2004
- December 2003
- November 2003
- October 2003
- September 2003
- August 2003
- July 2003
- June 2003
- May 2003
- April 2003
- March 2003
- February 2003
- January 2003
- December 2002
- November 2002
- October 2002
- September 2002
- August 2002
- July 2002
- June 2002
- May 2002
- April 2002
- March 2002

