Obsolete! The Banshee Wiki is in the process of being phased out. Relevant content will be retained, but much content herein is out of date. Please visit the new Banshee web site!

Banshee "trunk" Roadmap

Banshee "trunk" is the version of Banshee that is under very heavy development and is actually a nearly complete rewrite of Banshee. The rewrite effort started in October, 2007 and has been released in Alpha 1 through 3, and most recently Banshee 1.0 Beta 1. The main focus has been on various performance improvements and scalability. This includes reduced memory usage and a faster startup time. Some critical new features are also being tracked for this release, including an album/artist browser and a play queue.

This roadmap tracks the development of new features and the porting of old functionality from the "traditional" Banshee to this new rewritten/refactored version. It is important to note that not all of Banshee has been rewritten. The bulk of the code in Banshee "trunk" is just mildly refactored and ported to the new component/service model of Banshee "trunk."

Please feel free to ask on the list or irc if you want to work on something, even if it's assigned and/or in-progress.

Major user-visible features tracking in "trunk"

Task Status Priority Assignee
GUI Functionality
Album/Artist Browser (BGO #410660 (http://bugzilla.gnome.org/show_bug.cgi?id=410660))
More »
{{{extra}}}
done Aaron Bockover
Playback against a dedicated source
More »
{{{extra}}}
done Aaron Bockover
Play queue source (BGO details (http://bugzilla.gnome.org/show_bug.cgi?id=337308#c9))
More »
The feature and desired high level implementation and behavior overview is available on the bug, link in summary.
done Aaron Bockover
Allow play queue source to be visually detached.
More »
Playback from a dedicated source has been implemented. This allows us to create a separate play queue source, which can then be toggled as a "source" or as a separate view widget.
not-started high Aaron Bockover


The following tasks must be completed before the new Banshee core UI will be functionally on par with our stable release.

Primary GTK Client ("Nereid")

Task Status Priority Assignee
Dialogs
Port the preferences dialog from stable
More »
{{{extra}}}
done Alex Hixon
Menus
Add to playlist
More »
{{{extra}}}
done Gabriel Burt
Delete from drive
More »
{{{extra}}}
done Gabriel Burt
Remove from library
More »
{{{extra}}}
done Gabriel Burt
Set rating
More »
{{{extra}}}
done Gabriel Burt
Copy track (Nautilus)
More »
{{{extra}}}
punted Aaron Bockover
Search for songs (by matching artist, album etc.)
More »
{{{extra}}}
done Gabriel Burt
Edit metadata
More »
{{{extra}}}
done Gabriel Burt
Selections (select/unselect all)
More »
{{{extra}}}
done Gabriel Burt
Playlist/Smart playlist menu items (new, new from search, etc.)
More »
From search punted for now - it doesn't work well in stable anyway. A commented out implementation is in trunk, but changes to the smart playlist Editor are needed to support queries that don't specify a field (eg search-all-default-fields) - or we need to transform such queries into field-explicit ones.
done Gabriel Burt
Seek forward/backward and other playback menu items
More »
{{{extra}}}
not-started medium Aaron Bockover
Context menu support on source view/sources
More »
{{{extra}}}
done Gabriel Burt
Status Bar and Header Items
Show source information (track count, total duration, total size on disk)
More »
{{{extra}}}
done Gabriel Burt
Shuffle and Repeat action buttons
More »
{{{extra}}}
done Alex Hixon
Track properties/editor button
More »
{{{extra}}}
done Alex Hixon
Playlists
Rename
More »
{{{extra}}}
done Gabriel Burt
Delete
More »
{{{extra}}}
done Gabriel Burt
Export
More »
{{{extra}}}
done Gabriel Burt
Import
More »
{{{extra}}}
in-progress medium Gabriel Burt
Sorting (under library source's context menu)
More »
{{{extra}}}
done Aaron Bockover
Track List View (General Functionality)
Sorting list by clicking column header
More »
{{{extra}}}
done Aaron Bockover
Filtering/search (hook up artist/album UI - possibly expand to "artist: foo" when user chooses artist and enters 'foo')
More »
{{{extra}}}
done Gabriel Burt
Save/restore column widths and positions
More »
{{{extra}}}
done Aaron Bockover
Support minimum and maximum column widths (absolute pixel values)
More »
{{{extra}}}
done Aaron Bockover
Support columns that cannot be resized
More »
{{{extra}}}
done Aaron Bockover
Support horizontal scrolling in the view when sum(column_widths) > view width
More »
{{{extra}}}
done Aaron Bockover
View should scroll to keep playing track and/or selection in view when sorting
More »
Tracked in Novell Bugzilla against openSUSE 11. BNC 180791 (https://bugzilla.novell.com/show_bug.cgi?id=180791)
not-started medium Aaron Bockover
Track List View Drag and Drop Support
Support column reordering
More »
{{{extra}}}
done Aaron Bockover
Support track reordering
More »
{{{extra}}}
not-started high Aaron Bockover
Support dragging data to and from the view (track selection to source, etc.)
More »
{{{extra}}}
done Aaron Bockover
Track List View Column Implementations
Track Column Menu
More »
{{{extra}}}
done Aaron Bockover
Track Column
More »
{{{extra}}}
done Aaron Bockover
Title Column
More »
{{{extra}}}
done Aaron Bockover
Time Column
More »
{{{extra}}}
done Aaron Bockover
Genre Column
More »
{{{extra}}}
done Gabriel Burt
Plays Column
More »
{{{extra}}}
done Gabriel Burt
Location Column
More »
{{{extra}}}
done Gabriel Burt
Artist Column
More »
{{{extra}}}
done Aaron Bockover
Album Column
More »
{{{extra}}}
done Aaron Bockover
Rating Column
More »
{{{extra}}}
done Aaron Bockover
Year Column
More »
{{{extra}}}
done Gabriel Burt
Last Played Column
More »
{{{extra}}}
done Gabriel Burt
Date Added Column
More »
{{{extra}}}
done Gabriel Burt
Disc Column
More »
{{{extra}}}
done Will Farrington
Composer Column
More »
This was about done earlier, until I found out that TagLib# uses Composers[] to represent this field. Working on a sane UI implementation before a final patch is pushed.
done medium Will Farrington,
Gabriel Burt


Core Services to Port/Rewrite

Task Status Priority Assignee
Simple things to port/refactor
Smart Playlists
More »
{{{extra}}}
done Gabriel Burt
Load new metadata (DiscNumber, etc) for existing tracks
More »
{{{extra}}}
done Gabriel Burt
Metadata services
More »
{{{extra}}}
done Aaron Bockover
Transcoding services
More »
{{{extra}}}
done Gabriel Burt
Audio transcoding profiles
More »
{{{extra}}}
done Gabriel Burt
Banshee.Web abstraction
More »
{{{extra}}}
done Gabriel Burt
CD Burning
More »
{{{extra}}}
not-started medium Aaron Bockover
Big chunks to rewrite/develop
Importing
More »
{{{extra}}}
done Aaron Bockover
Platform independent hardware layer for at least optical disks, drives, and mounted volumes
More »
{{{extra}}}
done Aaron Bockover
Audio CD source/playback
More »
{{{extra}}}
done Aaron Bockover

Extensions etc

The following items are important, but will not be prioritized until Banshee Core (the above items) are finished.
Task Status Priority Assignee
DAP Extensions to port to Mono.Addins and new Core
iPod
More »
{{{extra}}}
done Aaron Bockover
MTP
More »
{{{extra}}}
done Gabriel Burt
Generic/Mass Storage
More »
{{{extra}}}
done Gabriel Burt
Extensions to port to Mono.Addins and new Core
Audioscrobbler
More »
{{{extra}}}
done Alex Hixon
Bookmarks
More »
{{{extra}}}
done Bertrand Lorentz
DAAP
More »
{{{extra}}}
in-progress medium Alex Hixon
Last.fm
More »
{{{extra}}}
done Gabriel Burt
Metadata
More »
{{{extra}}}
not-started medium Unassigned
Minimode
More »
{{{extra}}}
done Bertrand Lorentz
MMKeys
More »
{{{extra}}}
done Alex Hixon
Notification-area Icon
More »
{{{extra}}}
done Aaron Bockover
Podcast (largely done)
More »
{{{extra}}}
in-progress medium Mike Urbanksi

Gabriel Burt

Radio
More »
I'm really fairly new to C# and working on Banshee (but not programming in general). Looking for a mentor in migrating this plugin to trunk.
in-progress medium Will Farrington
Recommendations
More »
{{{extra}}}
in-progress medium Gabriel Burt
Other goals
Windows port
More »
{{{extra}}}
in-progress medium Scott Peterson, Aaron Bockover


Assembly-Level Design

This graph is very simple and high level, but details the roles of the new core assemblies in Banshee trunk. A more detailed design document is in the works.


banshee-assemblies.png