By ben

We All Hate Crashes (a Little Less)

By ben ben

Everyone hates it when an application crashes (I can’t tell you how many times my code editor has crashed on me… GRR!), but changes in Songbird and Mozilla should make crashes a little easier to tolerate than before.

Recent nightlies (including the last blessed build) have quietly enabled support for the Mozilla Crash Reporter using Google’s Breakpad library. Now every time Songbird crashes you will have the option to submit a small crash report to our server for analysis. Check out the typical data included in a report here on our Socorro server.

These reports are extremely helpful to us as they tell us exactly what went wrong when the application crashed, enabling us to fix our code and deliver a much more stable product in the future. Report submission is optional but you are strongly encouraged to help us improve the quality of Songbird by electing to share that valuable data. You’ll be glad that you did!

And, of course, many thanks to the wonderful folks at Mozilla and Google for making this great open-source technology and for all their help getting it running.

XULRunner apps, meet the Mozilla build system

By ben ben

Birdbuilder

The Mozilla build system is big, complicated, and sparsely documented. There are only a few folks that are actively working on it to my knowledge. As bsmedberg pointed out, however, the build system is also quite powerful and has had a ton of bugs worked out of it over the years. Unfortunately for most XULRunner developers it’s also off limits unless you feel like jumping in and hacking it yourself. It builds Firefox, Thunderbird, XULRunner, and other Mozilla-hosted apps and extensions happily, but what about XULMine? Other XULRunner apps? Songbird?

Well, the build system underwent a substantial change last week. (more…)

Running the DRM Gauntlet

By ben ben

The next version of Songbird (0.2.5) will support Apple FairPlay and Windows Media DRM audio playback. Those features are already enabled in the latest nightly build and everyone is encouraged to give those builds a spin. If you’re on Windows you’ll need to have a new-ish version of Windows Media Player (probably 9 or newer) for protected WMA playback and QuickTime for Windows (probably 7 or newer) for FairPlay to work. On OS X you’ll only get FairPlay playback, sorry.

How does this work? We don’t hack out the encryption keys or anything illegal. Songbird supports multiple playback cores so we simply use Apple’s and Microsoft’s own playback engines to do the decoding for us. We use VLC for playback of most file types, but now whenever you play a protected WMA or M4P file we swap in the Windows Media Player or QuickTime core. Sounds easy, right?

Well, no. Not really. The world of DRM is a little (cough) unfriendly, so I figured that I should share some of the war stories and a few tricks for anyone interested in making DRM playback work in their own apps.

It seems both Apple and Microsoft are a little paranoid when it comes to debuggers. I fault Apple a little more than Microsoft in this case for reasons I’ll hit in a second. But be forewarned: using DRM software under a debugger may not work correctly (or at all), and documentation may be totally misleading. What happens? Well…

Living on the Edge: Songbird on Gecko 1.9

By ben ben

Geckobird

After working on Songbird for a year you would think I could have written at least a dozen blog entries and dazzled the world with my wit and expertise. The joke would be on you, of course, because I haven’t written a single one. Zilch. I’m lazy, I guess. Or shy. Or something.

So here we go, my first blog post… Ever.

I’ve recently been working to prepare Songbird for the fabled leap to Gecko 1.9 (aka “trunk”). Songbird 0.2 was based on Gecko 1.8 (two other apps you may be familiar with that were also built on Gecko 1.8 were Firefox 1.5 and Firefox 2.0). See, Gecko 1.8 has been around for a long time now. It has been thoroughly tested and crashes only sometimes. Why move to 1.9 then? Well, check out this feature list to get some idea.