New: Monthly Community Update

Default Nightingale Equalizer Presets

A few months ago we opened a poll asking you how you would like to get the newest news from the project. This post is the first of hopefully many to come. It’s going to be a quite big one, as it covers the last three months instead of just one month. If there won’t be enough content (aka no content) there will be no community update post.

This first edition is based on the last three developer meetings, so it’s a bit longer. Oh and yeah, we have monthly developer meetings on IRC now.

Remember that these are all things we are currently working on. Some of features mentioned bellow can already be tested in our nightly builds.

Nightingale command line helpCommand Line Playback Control

Remember the command line support extension for Nightingale (and Songbird)? Good news, that’s in Nightingale by default now! You can get an exact command set by typing nightingale -help.

MPRIS

Based on an old MPRIS extension for Songbird from loganfsmyth, freaktechnik added support for MPRIS 2. This allows Linux users to get information about Nightingale and control Nightingale via DBus. More information on the MPRIS implementation can be found in this wiki article. On the topic of wiki: we’ve found a way to fend of spam bots and as a result you get edit rights by default again!

Dock Actions on elementary OSMac & Linux Dock Shortcuts

We accidentally removed the Mac OS X dock playback controls in 1.12 when we upgraded XULRunner. Johnmurrayvi re-added dock support and added a mute/unmute item. Our default .desktop file for Linux now also contains the same actions as the Mac OS X dock, thanks to the CLI API.

Mac Extensions

Previously, a couple of issues with the old Apple Media Keys extension had been reported. Notably, there was a problem requiring the media key to be pressed twice in order for it to register. We’re happy to say that the “apple-mediakeys” and “apple-remote” extensions, originally written by whitedragon (Nick Kreeger) for Songbird, have been added into our repository and the reported issues have been resolved.

Default Nightingale Equalizer PresetsEQ Presets

Just recently freaktechnik landed the infrastructure and the UI for equalizer presets. Not only does Nightingale have a set of default presets, it also lets you save your own presets. But that’s just the beginning. It comes with a powerful API for add-on developers to create own preset sets, preset importers or any other equalizer preset related extension you can think of!

Tagging Issues

We’ve noticed a lot of issues popping up recently involving song metadata being read or written incorrectly. In our recent developer meeting during June, we discussed this problem and possible solutions. Since the meeting, new testing builds with a patched TagLib have been posted, as well as dependencies, to the patched-taglib-1.7.2-testing folder on our Sourceforge page. If you have experienced any problems you think may be related, give these builds a try. Please post any problems or comments (positive or negative!) about the builds in our forum, as we need feedback on the issue.

A Teaser for the Future

One of the biggest tasks Nightingale has set out to accomplish is updating the code so that it can utilize newer versions of the core XULRunner platform. Until now, Nightingale has relied on the 1.9 version, and updating any XULRunner application from 1.9 to 2.0 is significant step, requiring many changes, in and of itself. After an extensive amount of work, not only working on the Nightingale code, but also creating updated dependency packages, there are many signs of life from new builds based on XULRunner 9.0.1. The effort over the last year can be seen in the master-xul-9.0.1 branch of the repository, as well as the xul-9.0.1 branch of the dependencies repository. With all of these changes, the updated Nightingale builds on Linux, Mac, and Windows, and the core features are functional. The next task is changing the user interface code to provide the intended experience. For example, as seen below, the media library page has yet to be updated, and is currently inoperable. Still, even without the library page, the builds can play music!

win-xr9XULRunner 9 Build on Mac OS XXULRunner 9 Build on Ubuntu

In addition to using a newer version of XULRunner, the other dependencies are using their current stable versions as well. This includes Flac, libogg, libvorbis, libtheora, TagLib, and, most notably, GStreamer and the GStreamer plugins. The code for Nightingale’s mediacore has been updated to utilize the new GStreamer as part of the newer XULRunner builds.

developer.getnightingale.com screenshotDocumentation

We’ve finally been able to get documentation out of our code again, thanks to thebecwar. You can admire the doxygen based documentation on http://developer.getnightingale.com or build it yourself from our source, exact instructions can be found on the wiki. We’ve also started importing articles from the songbird wiki, so if you’re creating an extension, take a look at the recipebook.

An additional set of documentation has been add to the wiki as well, although it is still a work in progress. While the page on building Nightingale from source has existed for sometime, there has not been any information on building the dependency packages. This page has been created to help document the process, which can prove to be somewhat complex. The first section is intended for building the updated dependencies used in the master-xul-9.0.1 branch, while the latter section is for the current sb-trunk-oldxul branch. The dependencies currently used have proven to be a challenge, as they’re fairly dated, but they’re building on all platforms now, so the latter section will be updated with Linux and Mac instructions in addition to a finalized Windows page.

Finally, another key page has been created, involving in-line tasks from comments, such as “FIXME”, “TODO”, and “XXX”. This page lists the current task markers in the Nightingale code as of 2014/05/14.

Website Translation

While at RMLL freaktechnik and GeekShadow opened translations for the current firstrun, launch and dashboard pages plus the upcoming new main website. When writing this post there already is a French, Portuguese (Brasil), Spanish (Mexico) and a German translation. Those are nearly complete, however with each new Nightingale release we will add new strings for the changelogs, so you’ll never run out of strings to translate. To start translating, head over to the localization page on Babelzilla.

Got comments? Post them here!

The Nightingale Localization Platform Is Ready!

l10n
l10n
Thanks to our friends of Babelzilla, you can now help improve Nightingale localization (L10n).

TL;DR

If you want to translate/review Nightingale localizations you will have:
  • To have an account on our forum and PM us (GeekShadow or rsjtdrjgfuzkfg) for locale request
  • To register on http://beta.babelzilla.org/ (use Password Reset if you had already a classic Babelzilla account)
  • Request on the Nightingale tranlation project page to be on team for the desired locale
  • We will make you a post on the forum as well to be able to coordinate your work with the community
  • Optional: If you have a GitHub account, give us your GitHub mail so that your work will be committed with your name/mail to the repository
After being approved, you will be able to review your current locale and also complete it if it’s not 100% done yet.
We will be adding new strings soon, so stay tuned and help us!

History of L10n

At the beginning, Nightingale had no real L10n support, we only took a verbatim copy of Songbird’s langpacks with no changes made to them.
Songbird «had» (has) a translation website platform written in Ruby which was unfortunately never released as open source and was a bit limited with some disadvantages.
  • The website was open and everyone could translate like Wikipedia with simple edits, which could have resulted in a mess if there was nobody watching changes and what was going on
  • The platform never relied on a physical public repository, it means everything for langpack generation was done on Songbird’s servers without file system/tree view for public
  • There was no real review system and no way to do things like downloading only translated strings (without en-US strings)
For Nightingale, we have decided to team up with Babelzilla. They are long time friends, and they already have been hosting Songbird add-ons as well as Nightingale’s.
The Beta Babezilla platform we are using is based on Transifex, an open source localization platform. Tim Babych made a fork of this platform, improved and adapted it for Mozilla add-ons and Mozilla based applications. You can read more about it in the Babelzilla blog post.
This platform provides us a great set of tools like the Transifex client, team management, review process, ability to test langpacks, etc.
Moreover we have made some cool tools to sync translators’ work with our Git repository, so we can track all the work to have a better visibility.

Work done so far

A lot of cleanup work was done before importing Songbird localization files into this platform:
  • Improved Ellipsis usage on every locale and replaced ”…” by ”…”
  • Fixed usage of double quotes inside a string in songbird.dtd
  • Converted some strings’ values to double quotes
  • Replaced Add-ons URL by add_ons.url
  • Replaced Bugzilla URL by file_bug.url
  • Removed spaces on some strings in songbird.properties
  • Replaced “Songbird” strings by “&brandShortName;”
  • Removed backslashes ”\” in foreign languages where it’s not needed
 We hope you will be able to review and clean more strings in your locale too.
We also have added two new strings and more are coming:
  • “Flat” string for equalizer (The default preset)
  • “Unnamed Pane” string for display panes (This will later allow you to localize Display pane titles)
We have tested langpack import on both Babelzilla WTS (old system) and Babelzilla Adofex (new system) and decided the new system was a good start because it’s smoother and open source. since it is open source, we were able to help testing it and report bugs to improve it!

Scr1pts

During the L10n setup, a lot of Bash scripts were made to deal with different tasks, here are a few interesting ones:
  • Two first scripts were made to reorder strings in foreign locales, because langpacks came with mixed strings and so it was hard to track differences. One for .properties and another one for .dtd. Those scripts ends up used only for testing because Babelzilla was also able to reorder strings on langpacks
  • A script was made to fetch all langpacks from Songbird website and unzip everything
  • This wasn’t enough, some langpacks were missings (because they are not shipped with Songbird they doesn’t have not enough strings translated), another script was made to fetch from translate website
  • We even made a Python script to remove en-US strings from langpacks where strings were missing!
  • For previous Nightingale releases we made a script to take Songbird langpacks and repack them to be compatible with Nightingale
  • Now we have a full script to produce our own langpacks using files from Babelzilla
  • Last but not least we made a script to track changes done on Babelzilla and commit those on GitHub when a change is done
Some of those scripts are yet to be released or improved, but everything is working at this time.
The great thing is that once we release the new version of Nightingale, a simple script execution will be able to push langpacks from the latest translation version online :)
This cooperation could have not been possible without the help of : Tymofij, Goofy and Pascalc from Mozilla/Babelzilla who helped us providing support so thanks a lot to them!

What’s next?

We also plan on hosting Nightingale add-ons and their locales online so you can translate them, along with more tools to help you localize efficiently :)

rsjtdrjgfuzkfg

For a better equalizer

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 !