Main Page
From SongbirdWiki
Contents |
Songbird Technical Overview
Songbird is a media player built on top of the XULrunner framework. Media playing services and collection management services are implemented using XPCOM components. Reusable bits of Javascript can be
New functionality is generally implemented in extensions. Extensions are overlays which target some part of the application and layer new elements onto existing ones. Skins are called feathers and allow users to create new appearances by swapping out image files and writing CSS. More advanced skins can be implemented by writing new layouts. Both of these are distributed as .XPI files and follow the same format used by Firefox, Thunderbird, and other applications built on top of the Mozilla stack. Some Firefox extensions have already been ported to be compatible with Songbird.
BREAKAGE
As of April 4th's nightly build we had to break library compatibility in order to give you massive speed improvements. Unfortunately this kind of thing happens from time to time in pre-release software, but we hope you'll enjoy the ability to use Songbird with much larger collections and on slower computers will more than make up for the inconvenience.
For our nightly users, we have provided this migration page to rescue your precious data.
Windows
Here's a little named tour of Songbird's many windows and dialogs.
- Main Window - which is divided into:
- Toolbar
- Play/Pause/Stop
- Faceplate (now playing information, click to go to the active track!)
- Service pane (on the left, containing the list of playlists and bookmarks)
- Tab browser (containing playlists, library views, and web pages)
- Display panes (in the service pane, below, and to the right of the tab browser, see below for more details)
- Toolbar
- Cheezy Video Window (often hidden, but never actually gone! the playback core lives here, I'm told)
- Jump-To Window
- Track Editor Dialog
- Preferences
Components
Some of the more important components to be aware of are:
for media:
- Media items, media lists, and libraries.
- Media list views, filters, searches.
- The playlist playback service
for adding new user-visible features:
- the service pane
- the display panes
- playlist commands
to observe certain kinds of data, such as currently playing track: DataRemote
Source Tree
Songbird is a huge project. It helps to have source tree map to find your way around.
Current Pieces (2006.11.09)
- Current XUL/XBL Overview & Annotations
- Current XPCOM Overview & Annotations
- Current JS Files Overview & Annotations
XUL/XBL Coding Standards
- File Naming Convention
- XBL Widget Naming Convention
- CSS Guidelines
- XML Convention
JavaScript Coding Standards
- File Naming Convention
- JavaScript Glue and UI code
- JavaScript XPCOM Objects / Components
- Documentation Convention
- Boilerplate Ideas
C++ Coding Standards
- File Naming Convention
- C/C++ Headers and Object Definition
- C/C++ Sources and Object Implementation
- Documentation Convention
- Source Directory Makefile Template
IDL Creation Standards
- File Naming Convention
- IDL File Creation
- Documentation Convention
- IDL Template
- Public Directory Makefile Template
Testing
HOWTOs
- There are up to date guides and articles posted in the Songbird Developer Centre
- HOWTO: Have a locale support in your extension
- HOWTO: Get notified of track changes and read current track metadata
- HOWTO: Update 0.3 feathers to 0.4
- HOWTO: Debug Songbird using XCode (well, mozilla, but the instructions apply very closely)
- Creating an XPCOM component for Songbird
- Using XPCOM in C++ for Songbird
Developer's Recipe Book
- We are putting together a recipe book of code snippets (or developer recipes) for accomplishing tasks that many Songbird developers or Featherers will want to do. The aim of this is to build a collection of code that is highly portable and reusable for anyone to make use of. Please contribute and build out the recipe book with your own useful recipes.
- RecipeBook
