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!

Happy Nightlies! (Updated 2/13)

 “Nightlies” are builds compiled every night, more information on Wikipedia : http://en.wikipedia.org/wiki/Nightly_build
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):
  • GNU/Linux, Ubuntu 12.04.1 i686 → .tar.bz2
  • GNU/Linux, Ubuntu 12.04.1 x86_64 → .tar.bz2
  • Microsoft Windows Server 2003 x86 → .exe (Inno Installer) and .zip

One is provided by Matt (ilikenwf):

  • Mac OS X 10.5.8 and greater → .dmg
All servers are located in France, except for the Mac, and are set to upload builds to SourceForge: http://sourceforge.net/projects/ngale/files/trunk-Nightlies/

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 :)
More information can be found on our wiki :
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!

Get ready for 1.11!

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! :P

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!

Thanks for your interest into Nightingale!