GSoC 2025: Building Libretto, a Matrix Archiver

This post is also available on Jade’s blog

Hello! I’m Jade Ellis, AKA JadedBlueEyes. You might know me from my project with MetaBrainz last year – if not, I’m happy to have the chance to introduce myself. I’m an undergraduate Computer Science student at the University of Kent in England, a music enthusiast and (in my spare time) a climber.

The Setting

In September 2024, MetaBrainz switched from IRC to Matrix as our primary form of communication. Matrix is a more feature-rich alternative to IRC, with capabilities like replies, edits, and reactions, while still being open source and aligning with the principles of our project.

When MetaBrainz primarily used IRC, we had a piece of software called BrainzBot. This was a multi-functional Python app that, most importantly, created a web-accessible archive of all messages in the MetaBrainz channels. Thanks to the bridges between IRC and Matrix, BrainzBot continued to trundle along, but it couldn’t understand modern features like edits, replies, or media. The code itself was also becoming decrepit—a fork of an abandoned project, showing its age.

This led to my GSoC project: to build a replacement for BrainzBot’s archival function – a chat archiver that natively understands and preserves Matrix’s rich features.

Continue reading “GSoC 2025: Building Libretto, a Matrix Archiver”

GSoC 2025: Onboarding Revamp in ListenBrainz Android

Hi everyone,

I’m Hemang Mishra (hemang-mishra on IRC and hemang-mishra on GitHub). I’m currently a pre-final year student at IIIT Jabalpur, India. This summer, I had the opportunity to participate in Google Summer of Code with MetaBrainz. My mentor for the program was Jasjeet Singh (jasje on IRC).

I contributed to ListenBrainz Android, where I worked on revamping the onboarding experience, improving login, adding listen submission apps, integrating Listening Now, and setting up app updates. The journey has been both exciting and full of learning, and I’m truly grateful for this opportunity.

Project Overview

ListenBrainz is a powerful platform that helps track listening history, share music tastes, and build a community around music.

The main goals of my project were:

  • Revamping onboarding – introducing users to the app’s core features and handling permissions with clear rationale.
  • Improving login –replacing simple web pages with a custom Compose-based UI, and experimenting with the DOM tree of the web page to automate form submissions and token extraction in the background.
  • Listen submission apps – prompting users during onboarding to select which apps to collect listens from, preventing unwanted submissions.
  • Listening Now integration – adding “Listening Now” into BrainzPlayer.
  • App updates – enabling updates for both Play Store and non-Play Store (F-Droid or sideloaded) releases.
Continue reading “GSoC 2025: Onboarding Revamp in ListenBrainz Android”

GSoC 2025: MetaBrainz Notification System

Hello, my name is Shaik Junaid (IRC nick fettuccinae and fettuccinae on GitHub). I’m an undergrad computer science student from MGIT, Hyderabad, India. My project focused on adding a central notification system for MetaBrainz.

Project Overview

This project’s idea was suggested to me by mentor @ruaok (AKA mayhem on IRC). I submitted my proposal on the MetaBrainz Forum and got it reviewed by @kartikohri13 (AKA lucifer on IRC), and finally got selected for GSoC 2025 .

A centralized notification management system will various MetaBrainz projects send notifications to users without rewriting boilerplate code. It will also keep users informed about the latest events and new features across projects. This is a goal bigger than the scope of a single GSoC project. To keep it reasonable, my project focused on implementing REST APIs, hosted on metabrainz.org, to manage notifications and user preferences for notifications. Additionally, I integrated the system with ListenBrainz to demonstrate its functionality.

The project spec sheet can be found here.

Continue reading “GSoC 2025: MetaBrainz Notification System”

GSoC 2025: Advanced User Statistics Visualizations

Greetings, Everyone!

I am Granth Bagadia (holycow23 on IRC), an undergraduate Computer Science student at Birla Institute of Technology and Science (BITS), Pilani. This summer, I had the opportunity to participate in Google Summer of Code 2025 with MetaBrainz, where I worked on introducing advanced user statistics visualizations for ListenBrainz.

I was mentored by Ansh Goyal (ansh on IRC), Kartik Ohri (lucifer on IRC), and Nicolas Pelletier (monkey on IRC). This post summarizes my project, its outcomes, and my experience over the course of the program.


Project Overview

ListenBrainz already provided some listening statistics, but these were limited in scope and depth. My project set out to design and implement advanced statistics that could offer users more meaningful insights into their listening habits. Since ListenBrainz is a user-centric platform, the idea was to create features that would let listeners explore their behavior from multiple perspectives. My original proposal focused on introducing a few key statistics.

The core statistics included:

  • Genre Trends – showing what genres a user listens to at different hours of the day.
  • Era Statistics – highlighting which musical eras dominate a user’s listening history.
  • Artist Evolution – tracking how much a user listens to specific artists over time.
Continue reading “GSoC 2025: Advanced User Statistics Visualizations”

GSoC 2025: Importing Listening History Files in Listenbrainz

Hi Everyone!

I am Suvid Singhal (suvid on matrix), an undergraduate Computer Science student at Birla Institute of Technology and Science (BITS), Pilani. I took part in the Google Summer of Code 2025 and have been contributing to Metabrainz Foundation since December 2024. My GSoC project was to develop a file-based listening history importer for ListenBrainz. The project was mentored by Lucifer and Monkey.

Project Overview

Listenbrainz is a platform to track your music habits, discover new music and share your music taste with the community. A feature I missed after creating my ListenBrainz account and connecting Spotify was the ability to see my complete Spotify listening history. My project addresses this gap by allowing users to export their extended streaming history from Spotify and import it into ListenBrainz. Additionally, users can import backups from their old ListenBrainz accounts. With the foundation ready, it will be simpler to add support for more file importers in future. This makes transitioning to Listenbrainz easier.

The importer can be accessed here.

Continue reading “GSoC 2025: Importing Listening History Files in Listenbrainz”

GSoC 2025: Integrate music streaming from Funkwhale & Navidrome

Hey Everyone 👋🏻 !

I am Mohammad Amanullah (AKA m.amanullah7 on IRC and mAmanullah7 on GitHub) final year student at National Institute of Technology Agartala, India and along with that I am a diploma level student at Indian Institute of Technology Madras, India. I was thrilled to be selected as a contributor in the Google Summer of Code (GSoC) 2025 program. My project focused on integrating music streaming from Funkwhale & Navidrome. It was mentored by Lucifer and Monkey.

Let’s start 🙂

Project Overview

ListenBrainz has a number of music discovery features that use BrainzPlayer to facilitate track playback. BrainzPlayer (BP) is a custom React component in ListenBrainz that uses multiple data sources to search and play a track. As of now, it supports Spotify, Youtube, Apple Music and Soundcloud as a music service. It would be useful for BrainzPlayer to support stream music web apps like Navidrome and Funkwhale so that users could stream their private collections as well on ListenBrainz. For those unfamiliar, Funkwhale and Navidrome are self-hosted music servers that implement the Subsonic API, a widely adopted standard for streaming and managing personal music libraries.

Before you proceed further, listen to a song and explore new services so you can feel more when you read the rest of the blog! Check out your Connect services page 🎶

Continue reading “GSoC 2025: Integrate music streaming from Funkwhale & Navidrome”

MusicBrainz Server update, 2025-08-11

This release includes several often-requested improvements and bugfixes, such as better guess casing for English contractions, events being sorted by most recent first, place areas being shown properly in search results again, and the label filter feature actually working at all. It also includes a fair amount of minor improvements, such as updated country flags, new and fixed URL support, and a few more locales for aliases. There’s also two new reports to help find and improve incorrect dates for digital releases and incorrect or missing primary aliases for artists and labels.

We are adding a script to delete accounts that have been around for a year yet have no activity and no verified email address. This mostly affects spam accounts, and its first run deleted several hundred thousand of those. If you’ve been wondering why our user count suddenly dropped, this is the main reason.

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

Thanks to outsidecontext for having contributed to the code. Thanks to chaban, Deniz C, diskotechjam, emptybrainz, HibiscusKazeneko, jesus2099, Lotheric, Paul Taylor, sammyrayy, silentbird, vexxed, voiceinsideyou and yindesu for having reported bugs and suggested improvements. Thanks to Beteix, Early6431, Echelon, hocu, imgradeone, invalidCards, Libra, ninjum, nzure, Othon19, ROManceJP, sut, TefWw, wileyfoxyx, yyb987, לוכסן and 奶油糖派 for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2025-08-11.0.

Continue reading “MusicBrainz Server update, 2025-08-11”

New release python-discid 1.3.0

A new version of python-discid, a Python wrapper library for libdiscid, is now available. Version 1.3.0 is a maintenance release, ensuring this small library stays available on modern systems.

python-discid was originally implemented and maintained by Johannes Dewender (aka jonnyJD), who also maintained the libdiscid library at the time. We have now moved the project over to be part of MetaBrainz and the source code is now on https://github.com/metabrainz/python-discid/ . Thanks Johannes for supporting this move.

Despite the project move one important change is the updated build system, which now allows building with any PEP 518 compatible build tool. Also support for Python 2 was dropped, the new minimal Python version supported is Python 3.9. For a full change log see the changelog in the documentation.

The new version is available on PyPI. See also the install instructions for more options.

MusicBrainz Server update, 2025-06-23

We’re back with another small release which mostly fixes a few bugs and adds support for more types of URLs (including some for streaming podcasts).

Additionally, starting from this release, an alias cannot be both marked as ended and as primary for its locale. Since the primary flag is supposed to represent the most appropriate alias to use, it should only be used for current aliases anyway, so setting an alias as ended will unset the primary flag. A one-off script was run to unset the currently set primary flags on ended aliases.

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

For mirror owners, after last month’s search upgrade, the transition period to switch to Solr 9 will come to an end by the end of the week. That is, the latest Solr 7 search index dumps will be made available on Saturday, 28 June 2025. After that, only the Solr 9 collection backups will be updated.

Thanks to dvirtz for having contributed to the code. Thanks to beckanhaf, chaban, diskotechjam, dvirtz, M18hellcat, UltimateRiff, yindesu and yyb987 for having reported bugs and suggested improvements. Thanks to Echelon, KiszolgalMotozas0n, mfmeulenbelt, MoeCaa, NorwayFun, roinujnosde, salo.rock, senhordaluz, silentbird, Solarenta, Vaclovas Intas, wileyfoxyx and yyb987 for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2025-06-23.0.

Continue reading “MusicBrainz Server update, 2025-06-23”

MusicBrainz search upgrades, 2025-05-29

After last year’s migration of the Solr back-end powering the search features of musicbrainz.org to a new cluster running major version 9, and last week’s database schema change, here is a pack of search upgrades affecting both musicbrainz.org and the MusicBrainz mirror.

For users, a new search field mediumid is available for the advanced release search, the MBID of artist credits and mediums is added to the output of the search API, and the barcode search field is now ignoring spaces. These improvements are fairly minor compared to the rest of the upgrades which unlock further development of the search components.

For mirror owners, SolrCloud 9 is now available, along with an improved indexer and scripts to load backups from musicbrainz.org and an improved indexer. Also Docker Compose 2 is now required. Actually, those are the changes from last autumn’s announcement. Solr 7 will remain available for one more month starting from now, buying some transition time. A new release of MusicBrainz Docker is available that matches these search component changes. See the v-2025-05-29.0-solr9 release notes for update instructions.

Thanks to Krikooo, JoshDi, mglubb, nelgin, and PeterCodar for their feedback.

Continue reading “MusicBrainz search upgrades, 2025-05-29”