Development/Summer of Code/2024/ListenBrainz

From MusicBrainz Wiki
< Development‎ | Summer of Code‎ | 2024
Revision as of 13:11, 23 January 2024 by RobertKaye (talk | contribs)
Jump to navigationJump to search

ListenBrainz allows users to store a list of songs that they have listened to, get personalised recommendations, and more. Try it out.

Getting started

(see also: Getting started with GSoC)

If you want to work on ListenBrainz you should show that you are able to set up the server software and understand how some of the infrastructure works. Here are some things that we might ask you about

  • Show that you understand the goals that ListenBrainz wants to achieve, which are written on its homepage
  • Create an oauth application on the MusicBrainz website and add the configuration information to your ListenBrainz server. Use this to log in to your server with your MusicBrainz details
  • Use the import script that is part of the ListenBrainz server to load scrobbles from last.fm to your ListenBrainz server, or the main ListenBrainz server
  • Use your preferred programming language to write a submission tool that can send Listen data to your local ListenBrainz server. You could make up some fake data for song names and artists. This data doesn't have to be real.
  • Try and delete the ListenBrainz database on your local server to remove the fake data that you added.
  • Look at the list of tickets that we have open for ListenBrainz and see if you understand what tasks the tickets involve
  • If you want to, see if you can contribute to fixing a ticket. Either add a comment to the ticket or ask in IRC for clarification if you don't understand what the ticket means

Ideas

We're adding a number of new social features to ListenBrainz that we hope will enable people discover more music they like and users who have similar music tastes to their own. We're working on some of these features now, but we will need to get help for other features:


Music Recommendation: Implement a new Troi patch for generating music recommendations

Proposed mentors: mayhem
Languages/skills: Python, possibly Postgres
Estimated Project Length: 175 or 250 hours, depending on the scope that is suggested.
Expected outcomes: One or more finished, debugged and tested plugins for Troi.

Our troi recommendation toolkit is our playground for developing recommendation algorithms. The toolkit already knows how to fetch data from ListenBrainz for stats, collaborative filtered recommended tracks, similar artists and similar recordings. From MusicBrainz it can fetch needed metadata such as genres and tags. The exact goal for this project really depends on you and what ideas you bring to the table, but the idea is to create a new Patch (plugin) for Troi that creates a new type of playlist that we can periodically offer to our users.

If this sounds interesting to you, we strongly recommend that you turn up in our IRC channel and chat with at mayhem or lucifer about your idea before you go into a full proposal. Music recommendations can seem exciting and fun, but the details of how to make them happen and all the things that need to be considered is a significant challenge.


Integrate music streaming from Subsonic

Proposed mentors: lucifer
Languages/skills: Python/Flask
Estimated Project Length: Can be 175 or 350 hours depending on the integration/service chosen.
Difficulty: Easy
Expected Outcomes: A new music service integration for users to play recordings on ListenBrainz.

LB has a number of music discovery features that use BrainzPlayer to facilitate track playback. BrainzPlayer (BP) is a custom React component in LB that uses multiple data sources to search and play a track. As of now, it supports Spotify, Youtube and Soundcloud as a music service. LB would like to be able to stream music from a private music collection using web apps like Navidrome, Funkwhale and other apps that implement the Subsonic API. The following major tasks need to be completed: 1) Add subsonic API player as a service to our music services backend; this will require some schema changes/extensions in order to have user specify the URL of their service as part of the music service configuration. 2) Add the react based front-end UI to that allows users to setup their own Subsonic API instance as a service. 3) Add support to BrainzPlayer for logging into the subsonic API service and playing music from it.


Manual album and multi-track submission

Another idea for the mentors to review for inclusion -

Jivte added the 'manually submit listens' function to LB a while back, but it is missing some features from the initial mockups/ticket: https://tickets.metabrainz.org/browse/LB-1157

With YIM getting bigger every year we are getting more and more requests for better submission features. A good GSoC project could be to flesh out the manual submitter to match the original mockups. There are the tickets for the core functions that are missing:

LB-1401 Manually add album listens

LB-1448: Manually add a queue of song/album listens

- aerozol

[Name]

Proposed Mentors:

Languages/skills:

Estimated Project Length:

Difficulty: [easy/medium]hard

Expected outcomes:

[description]