Progress and Current Status

We admit, we really aren’t that great at informing people what’s going on – it could be because we all have day jobs that get in the way, or it could be because our free time is always used working on Nightingale or some other open source project.  We’re really sorry about all of that, but don’t take our silence as any indication as to the amount of improvement being made in the Nightingale code! We have great things ahead!

Upstream Merges

I have been pulling in upstream Songbird updates, and also making build fixes here and there on the main nightingale-hacking git repo. Otherwise, I have pulled down a copy of the Songbird dependencies SVN repository, and am working to get the dependencies building under gcc 4.7 (where applicable) in an effort to get better speed, stability, and performance out of Nightingale as a whole. The Linux dependencies are all already working, but we’re still struggling a bit getting Mac and Windows versions of them building. Either way, this should provide a speed boost, and get us closer to upgrading the dependencies to newer and more vanilla versions.

Dependency Upgrades and Linux Package Creation

Speaking of Linux, our near future involves the transition to using system dependencies. On Linux, Nightingale currently requires three non-system packages – xulrunner 1.9.2, sqlite, and taglib. These dependencies are specifically patched for the Nightingale/Songbird code base, so our first step will involve splitting these three dependencies off into their own repositories, and build them so that they are placed wherever their configuration points them to (ex: taglib could go into /opt/songbird-taglib instead of the same directory as the nightingale binary).

In turn, we’ll be required to take the first steps on the client code, setting it up to build by grabbing all the dependencies externally on Linux, rather than relying on having them in the same directory.  By splitting these packages up, it is our hope that Linux distributions will begin packaging Nightingale and it’s dependencies, and place them all in their repositories. Further, this change will take us closer to upgrading all of the dependencies as a whole on all platforms, using newer and more vanilla versions of them than we do now.

Buildbot

GeekShadow recently created some nice nightly build scripts, which build and push fresh versions of Nightingale any time a change is made. This script currently builds and uploads nightlies for 32 and 64 bit Linux, but Windows is on the way too. You can find the nightly build directory on Sourceforge, and give them a try as you so desire.

Windows Compatibility Improvements

Rsjtdrjgfuzkfg has also been really busy – he’s done various debug builds and work to improve the client’s stability and functionality on Windows. His current project focuses on using a vanilla taglib instead of the old, patched version Songbird uses – so far, it only deals with basic ID3 tags, but progress is being made. Soon,  his work should also pave the way to using a native taglib on Linux machines, and vanilla on Mac and Windows.

Nightingale localization

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.
If you want to help, you can look at opened issues here on GitHub :
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 !
-GeekShadow and the Nightingale Team