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
| 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 |
| 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.





