Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Although we do not run this project according to any specific process or method, we adopt the agile mindset where possible. In the agile spirit, this is a backlog of prioritized user stories that we intend to implement. It is not comprehensive (it does not list all features we want), nor is it detailed and exact (we do not yet know exactly how things should work), nor is it stable (our visions and desires will change as we move forward and gain insight).
What Is a Backlog?
We "borrow" this term from the Scrum method; the product backlog is an ordered list of "requirements" that is maintained for a product. It contains Product Backlog Items that are ordered based on considerations like risk, end user value, dependencies, date needed, etc. The features added to the backlog are commonly written in story format. The product backlog is the “What” that will be built, sorted in the relative order it should be built in.
Read more in Wikipedia's article on Scrum
What Is a User Story?
A user story is a brief statement describing a specific way that a specific user wants to use the system. It follows the style "As a role, I want goal/desire so that benefit", where role typically refers to one of our Personas.
Stories are listed in priority order - we want to realize the topmost first. The further down the list we go, the more uncertain is the order. Realistically, only the top 5 stories can be considered to have an order, the remaining ones are very much subject to change.
Read more on User Stories in Wikipedia's article on User Stories.
- Continuous Import from SBS: As Adam, I want to setup a simple schedule for incremental import from SBS into SMD, so that all SMD users see all music present in the SBS database shortly after SBS has scanned the local discs.
- Continuous Import from Spotify Premium: As Libby, I want to define and register my Spotify premium account so that my online library is transparently included in my music collection the same way my local music is.
- Play Known Music: As Paul, I want to find and play specific music by Artist, Album or Track name, irrespective of source (online or local), and without knowing the exact full name, so that I can quickly play some specific song to my friends.
- Abstract Imported Metadata: As Libby, I want the ability to abstract imported metadata, so that common tags are placed on Artist or Album rather than the individual Work. If all tracks on an Album is tagged "Miles Davis", the Album (not each Track) is marked with "Miles Davis" as the main artist.
- Import Online Metadata: As Libby, I want the ability to import online metadata from Musicbrainz, so that I don't have to manually classify all music I add (online or local).
- Classify Artists: As Libby, I want the ability to classify Artists so that each Track by this Artist fall in this default category unless something else is specified; Run DMC is classified as "Rap", but the Work "Christmas in Hollies" is also classified as "Christmas", and the Work "Walk This Way" is actually classified as Rock (not Rap).
- Classify Albums: As Libby, I want the ability to classify Albums so that each Track (online or local) on an album fall in the album category unless something else is specified, or in the Artist category if the Album is not specified. For example, Lisa Ekdahl is classified as "Pop", but the Album "Heaven, Earth and Beyond" is classified as "Jazz".
- Classify Works: As Libby, I want to classify and categorize all Works in my catalog so that I can browse and listen to music based on Genre irrespective of location (online or local).
- Incoming Tracks: As Libby, I want all imported or updated Tracks to appear in a special "incoming" folder, so that I can keep track of all tracks where I need to define or verify hard facts and subjective classifications.
- Create Static Playlists: As Paul, I want to create playlists that include specific tracks irrespective of source (online or local) so that I don't have to care about the location of the Track when I select music.
- Multiple Classification: As Erica, I want the ability to classify Artists, Albums and Works in multiple ways, so that I can find and play an Instrumental Jazz Violin Track when browsing any of these classifications (Instrumental, Jazz or Violin), and also when I search for "Jazz Violin" tracks.
- Play Foreign Music: As Paul, I want to find and play specific music by Artist, Album or Track name without knowing the exact spelling, so that I can quickly find and play specific songs even if I misspell the name or lack certain characters on my input device.
- Create Dynamic Playlists: As Erica, I want to create dynamic playlists based on hard facts or subjective classifications so that a matching track is included in the playlist as soon as it is added to my music collection, irrespective of location (local disc or any of my online music libraries).
- Initial Import from SBS: As Adam, I want to import all music from the SBS database into SMD, so that SMD users can listen to the music in the SBS database.
- Import Existing SBS Metadata: As Libby, I want the ability to import existing metadata from the SBS database, so that I don't have to re-do all the tagging I already did. All Artists, Albums and Genres are automatically added to my SMD database if they do not exist.