User Tools

Site Tools


developer_center:developer_intro

< Back to the Developer Center

Introduction

There are a ton of ways you can extend, or integrate with Nightingale… from the visual appearance and layout all the way to tight-knit webservice mashups. Nightingale has a ton of APIs to build add-ons on top of, as well as being open source itself for anyone to hack on the core. If you're new to Nightingale, check out the following for a very high-level overview of some of the ways you can build on Nightingale.

Change Nightingale's appearance

Feathers allow you to customize Nightingale via images, and CSS. You can also develop more advanced Feathers (such as changing layouts, UI elements, etc.) via XUL. Feathers are also capable of supporting other browser technologies such as Flash & SVG. Feathers can be easily created using our Feathers Wizard, which is a part of the Nightingale Developer Tools add-on.

Media Views, implemented using our Media Pages API, let you create custom ways of viewing and visualizing your media library. Want to build the next Cover Flow? You want to implement a Media View.

Add new media playback, library management, or other functionality

Extensions, by virtue of the fact they are loaded into Nightingale, have access to the full range of methods, components, and interfaces that Nightingale provides. They can overlay arbitrary UI or target Display Panes to add arbitrary new functionality.

Integrate a web-service, or website into Nightingale

You can approach this from two ways. One is to simply use Nightingale's Web-page API in your website's JavaScript code to allow it to integrate well with Nightingale users browsing your site. The Web-page API allows you to do some really cool media player and media library integrations and interaction from your website. For visitors using Nightingale, you can enumerate their media library, trigger playback, and seamlessly integrate/download media into their library.

Alternatively, you can integrate from the client side using Extensions. Extensions can display UI in Nightingale via Display Panes (or anywhere else via XUL and overlays). Once overlaid they can use vanilla JavaScript to make remote calls to websites, including making AJAX queries to fetch in contextual information from remote sites. Combining this with the Web-page API makes for extremely compelling web-service and website integration tackling it from both the client and server-side.

Fix bugs or augment existing functionality (build Nightingale itself)

Nightingale is open source, go ahead… build and hack on the core code directly!

Add-ons, Core, Extensions, Feathers, Webpages, oh my!

What is XULRunner?

Nightingale is a media player built on top of Mozilla's XULRunner framework. XULRunner gives us an extensive and flexible add-on mechanism whereby developers can choose to extend or build new functionality into the app without having to modify the application code (what we call the Core) itself.

Types of APIs for Extending Nightingale

New functionality is generally implemented in extensions which are client-side installable add-ons. Because we're built on Mozilla, we use the same extension mechanism in the form of XPIs (pronounced “zippy”) which are simply ZIP archives. Go ahead and extract some of your favorite extensions to take a look. Because extensions and installed by the user and run on the client-side, they have full access to the complete set of APIs offered by Nightingale. For this reason, much of the documentation and articles for hacking on the Nightingale player/platform directly are also 100% applicable to extension developers.

Extensions are overlays which target some part of the application and layer new elements onto existing ones. Technically speaking, skins/themes (which we call Feathers) are also extensions, but we classify them differently since they are a very specific subset of extensions. Similarly, Media Views, are also implemented using the extension mechanism, but are a very specific subclass of extensions so we call them out explicitly in some places as well.

Nightingale's media playing services and library/collection management services are implemented using XPCOM components and open-source libraries. If you want to fix bugs in any of these core components, or add new core services, then you want to be hacking on the core code directly.

developer_center/developer_intro.txt · Last modified: 2015/05/12 05:40 by zjays