Since the beginning, there were Songbird nightlies available to test out new features and develop add-ons for future versions. There were both branch and trunk builds released each day – later they decided to only provide trunk builds. As of now they seem to build branch builds again for version 2.1.0.

Nightingale’s case is particular, we didn’t have build servers like POTI does when starting the project. Fortunately, we are now setting up buildbots to compile and upload nightly builds every day, if there are changes in the source code.

To begin with, three build servers are provided by Antoine (GeekShadow):

For now we are only building the sb-trunk-oldxul branch which is version 1.12 but matches Songbird trunk (2.2). We chose to rename to version to “1.12” mostly because there are no major changes between the Songbird trunk (2.2) and 1.11 since POTI is mostly bumping up the version numbers for their closed-source work.

Some technical notes :

Unlike Mozilla and POTI, we have decided not to use Buildbot since it’s much too complex for our needs. Instead, we are using our own bash scripts available on GitHub. They are easy to use and modify 🙂

Whether you’re a developer wanting to build the next generation of add-ons or a user not afraid of the freshest and sometimes very unstable changes, Grab a Nightly Build and let us know what you think!

One of the CoMETE project this year was to improve the current Equalizer.

Currently, the Songbird/Nightingale Equalizer only allow to fiddle with buttons and it’s pretty much it. I did in the past an add-on for Songbird to add basic presets support and recently Brice Santus from Evry added the ability to save your own presets in Nightingale.

For techies, your presets are saved in a XML file inside your profile folder, so you can easily copy it 🙂

For now, the improved equalizer is available as an add-on for testing purposes, but it’s going to be shipped by default on a future Nightingale version.

So please test it, report any bugs on the GitHub issues page, and also tell us how to improve it !

Since Nightingale is a fork of Songbird, we were using Songbird langpacks.

Now that we are working more deeply on the software, we feel we need our own localization system.

Songbird currently uses a custom Ruby web platform hosted at translate.songbirdnest.com to allow contributors to translate strings, but there are lot of issues :

The website is not open sourced and hasn’t evolved in a long time

Translations are never frozen, meaning everybody can edit the current locales

There are no real teams for localization, a Google group songbird-l10n was created to attempt fixing this but it was abandoned

Some locales are absent

Some langpacks don’t include Mozilla strings, meaning preferences interface, download windows, etc. will be in English

The platform is unable to export langpacks without missing strings (they are replaced by en-US strings instead)

No clear changelog for each locale

The localizations themselves also have some issues :

Some strings are no longer used but are still proposed for translation, some are duplicates

“Songbird” is still present in places (instead of brandShortName)

Some specific symbols/punctuation characters are not respected (ellipsis)

Some strings refer to closed source add-ons

There are only 4 files to cover all localizations (while Firefox uses ~50 files, depending on the window or feature)

Good points in the localizations:

The en-US source files weren’t touched for 1 year, so we don’t have to deal with including recent changes

Lots of locales are already 100 % completed

Some unimplemented features already have strings ready like Podcasts or Equalizer presets

The langpack download system is already working well with Nightingale

Who are the translators ?

Some translators were Mozilla contributors, so it’s easy to contact them, though most of them gave up, because Linux support was dropped.

For the next version of Nightingale, we want to fix all these issues by handling the localizations on the Babelzilla platform.

Babelzilla fixes many issues :

It will soon be open sourced since Mozilla add-ons developers use it

It’s much more powerful, and is able to import/export data

It allows team work, frozen strings, fixed release dates…

Many more locales are covered

Translators can easily contact each other

A topic is created to cover each translation

We have much more control on the entire process

Aside from Babelzilla, we will also store locales in our GitHub repo so we can keep track of what’s changed. Scripts will be added to easily build langpacks out of source files.

An attempt was done in the past to use Babelzilla to fix the French localization in Songbird, and it was helpful in comparison to POTI’s translations website. As part of the French community I was also able to meet with most of the contributors – a real plus when working on a project like this.

Moreover, we are choosing this platform because it’s already known by add-ons translators/developers and because of friendship with people who are running it.

You don’t necessarily need to know how to code to help us clean up the current localizations. If you want to help translate, pick up your language skills and try to contact the past Songbird localizers! 🙂

We also want to know what localization strings add-ons developers need – we will try to gather data on which are the most used, and if it’s worth including them directly in the application.

Like before, we are contributing back all of our changes to Songbird, and you can check this metabug which covers our Songbird patches.

We really want Songbird to take a look at our clean-up proposition since it helps a lot of the translators and also improves performance (Loading smaller files instead of a big file with all of the strings).

We also want to reduce compatibility breakage for add-ons developers. It means we will not change string ID’s – we’ll also provide documentation on how to best support both apps in the same add-on.

Thanks for reading, and if you have any questions feel free to ask in comments, forums or over IRC !

It’s been a month since we released Nightingale 1.11, and no we aren’t dead! 🙂

We are currently working on fixing small bugs and improving the 1.11 branch based on the latest Songbird changes. You can file bugs on our GitHub.

Oh – about Songbird, it’s been 2 years since POTI stopped supporting the Linux release (April 2nd), and as a result, the Nightingale project was born.
Beginnings were difficult but we ended up releasing our first version last year.

In other news, we have several new developers, one of which is augsod. While we don’t know a lot about him yet, he’s been working hard on the master branch, converting our code to work with Gecko 6. As our dev team grows, our community does as well – our latest release has had over 13,000 downloads! Wow!
While this is a shorter update, we appreciate you staying tuned and hitting us up on the forums from time to time.

It has been quite a while since the last blog post, so here is a fresh set of updates from our current projects, as listed on the wiki:

Nightingale 1.11 is coming!

We’re giving Nightingale 1.11 its finishing touches and plan to release it this month. Nightingale 1.11 is based on Songbird 1.11.0a / Gecko 1.9.2 and provides, among other things, better performance, a play queue for temporary playlists and finally official Mac OS X support. Of course all Nightingale-specific features introduced in 1.8 still persist, like our Coppery feather, the use of the system’s GStreamer on Linux, the folder synchronization feature, playlist folders, and tons of fixed bugs!

We do not have any update infrastructure yet, so you will need to update manually after the release. If you’re feeling brave, you don’t have to wait for the release! You can try out our current development version by using the test builds (currently Windows and Mac builds are available), or by building the sb-trunk-oldxul branch on your own. If you need help building, refer to our build page or contact us on the forums or via IRC. Of course, you should feel free to contact us with any other issues as well! 😉

Nightingale 1.11 uses the Songbird namespace internally. While this fact may seem interesting to developers alone, it does improve extension porting speed and compatiblity, meaning most Songbird add-ons compatible with Songbird 1.11.0a can be ported to Nightingale 1.11 easily. Of course, this also means Nightingale 1.11 extensions can also be easily ported to Songbird.

CoMETE – Student Developers at Nightingale

The student developers announced in our last blog post are now assigned to projects. Currently they’re working on the basics for features like CD Ripping, Social and Cloud service integration, equalizer preset support, and meta-data completion based on audio fingerprints. We can look forward to an awesome set of features coming in the near future.

Other Projects

Our primary focus is the 1.11 release; there is still progress being made in other projects:

Our upcoming add-on platform, featherweight is still in development. There is progress on modeling the database, but it will need some time to complete. We hope to get all of the basic work done by the time we’ve completed our

update to Gecko 6, which is the next point on the list. There is some progress, but there is much effort needed to complete it, and we gladly accept any help on this conversion that comes our way!

We’re also investigating a partnership with Babelzilla to provide the locales for Nightingale

Especially with the conversion to Gecko 6, but for all projects in general, we’re searching for new developers to join the team. There are not only C++ specific changes and fixes needed, so don’t hesitate to join us, even if you’re not comfortable with it! We need to improve the UI (XUL) and clean up some JavaScript as well. We assure you, there is plenty of work available for everyone! 😛

We’ll release another blog post when we release 1.11, and although the blog-every-two-weeks-thing didn’t work out perfectly this time, we’ll still try to keep you as updated as possible!