Welcome Summer of Code 2025 contributors!

We are thrilled to announce the selection of 6 contributors to work with us for this year’s Google Summer of Code program! 

MetaBrainz received many great applications this year. Selecting the final contributors was tough and involved deliberating various factors – what these contributors did right is getting in early, engaging with our community, presenting specific and detailed proposals, and proving excellent communication skills and the ability to integrate our feedback back into their proposals.

Thank you to all contributors who submitted a proposal with us!

The whole list of selected proposals can be found on the GSOC website but here is a TL;DR breakdown:

MetaBrainz proposals

Matrix Archiver (libretto) (Jade Ellis AKA JadedBlueEyes)

This project proposal replaces BrainzBot with a new archival service that archives messages directly from Matrix to HTML files on disk and a PostgreSQL database. It will support Matrix features like message editing, reactions and media, and provide full text search over all messages. Both historical and new messages as they come in will be archived.

Centralized Notification System for MetaBrainz (Junaid AKA fettuccinae)

MetaBrainz contains multiple sub-projects which sends out standalone notifications. This project aims to centralize those by developing a shared notification system within metabrainz-org, enabling all sub-projects to deliver user notifications through this notification system. Expected Outcome: A functional notifications system with relevant API endpoint.

ListenBrainz proposals

Importing Listening History Files in Listenbrainz (Suvid Singhal)

This project aims to develop a feature that enables users to import their listening history from various services, including ListenBrainz exports, Spotify, Apple Music, and other CSV file formats. The proposed solution involves creating a backend API endpoint to handle file uploads, building normalizers to parse and validate data from different services, and converting the data to the JSONL format required by ListenBrainz. The solution also includes a frontend to handle file uploads and show the progress to the user.

Onboarding Revamp in Listenbrainz-Android (Hemang Mishra)

A smooth and intuitive onboarding experience is essential for any app, ensuring that users understand its features while maintaining trust and engagement. This project focuses on enhancing the ListenBrainz Android onboarding flow by making it more informative, user-friendly, and privacy-conscious. Key improvements include a dedicated Listen Submission screen to give users full control over which apps contribute listens, clear permission rationales, and fallback mechanisms for denied permissions. Additionally, a revamped sign-in screen will provide better navigation, including a bug report option for easy issue submission.

Development of Advanced User Statistics Visualizations (Granth Bagadia AKA holycow23 AKA granth23)

The project aims to design and implement advanced interactive visualizations for ListenBrainz using Nivo for data visualization and integrating with the existing Flask API. Apache Spark will handle efficient data processing and aggregation. These visualizations will offer granular insights into genre trends, artist diversity, and temporal listening patterns, enhancing user experience and engagement. The project will result in the development and integration of the following four interactive charts into ListenBrainz: Artist Listening, Activity Statistics, Listens by Era Statistics, Genre-Based Listening Patterns and Top Listeners.

Integrate music streaming from Funkwhale & Navidrome (Mohammad Amanullah AKA mAmanullah7)

Allow users to play music from their Funkwhale servers as well as Navidrome directly in BrainzPlayer, as both are self hosted music streaming platforms. Funkwhale used a OAuth2 for secure and safe authentication, but currently Navidrome used basic subsonic authentication (username/password + salt), but soon OAuth2 authentication also will be available for Navidrome. Once these are availanble, we can support Subsonic streaming in the ListenBrainz Player.

What if you’re not in GSoC 2025?

Reading this and feeling inspired for contributing to the code still? Volunteer contributors are very welcome all year round even though we might have slightly less time available to help you during the summer. It is also putting you in an ideal situation for applying to next year’s GSoC. You can find some tips for applying to GSoC with us in one of our previous posts. When you are ready, join us on the MetaBrainz Matrix Channel and showcase your initiative and your skills !

Pissed off by Spotify Enshittifying more API endpoints? We can help!

Today Spotify announced that a number of APIs will no longer be available for new users

While Spotify won’t immediately take away these endpoints for existing users, it certainly does not inspire confidence for their longevity. Spotify cites “security reasons” as an explanation of why they are closing off these APIs, but we are unclear as to how that will improve security, so we need to assume that Spotify has some other motivations behind this move. More likely than not, they are hatching a strategy to protect their algorithmic assets from data crawlers used by third-party AI companies. 

Needless to say, the Spotify services continue to get enshittified, taking away very useful features that developers have come to rely on. ListenBrainz has very different goals, being entirely open-source and part of a non-profit foundation, and we won’t pull the rug out from under our users for monetary or “security” reasons.

On the contrary, our very small team works in direct collaboration with users and developers interested in developing new discovery tools in the music space, and we embrace the variety of ways passionate music lovers want to interact with music collections and recommendations.


Our own frustrations with Spotify’s ever-worsening recommendations was the spark that lit up our interest in recommendations, but again our approach is one of fairness (we don’t tip the scales) focused on the user’s experience rather than the deep pockets of multinational labels.

For developers frustrated that their app stopped working, the good news is that the ListenBrainz team has been working on building some new datasets and API endpoints that offer replacements for what Spotify is taking away. While not everything that Spotify is enshittifying has a direct replacement with ListenBrainz, we can at least offer a path forward for developers.

 These features/datasets include:

Future new datasets include:

  • Track similarity
  • Album similarity
  • Your dream feature here

All of this data is Creative Commons CC0 licensed (read Public Domain) and available on our API endpoints, for free, forever. MetaBrainz is a California 501(c)3 non-profit organization dedicated to creating, maintaining and ensuring that these datasets are available for public use. 

And on top of that, the person who coined the term “Enshittification”, Cory Doctorow, has been on our board of directors for 20 years, further ensuring that we’re enshittification proof.

Come play with our data – we’d love your feedback! We’re working hard to make this data better and if it doesn’t yet meet your needs, we hope to meet them soon!

* for the similar artist search, use this value for “algorithm”: session_based_days_7500_session_300_contribution_5_threshold_10_limit_100_filter_True_skip_30

GSoC 2024: Dashboard Page and Feed Revamp in ListenBrainz-iOS

Hello Everyone!, This is Gaurav Bhardwaj aka theflash_(IRC) and gauravbhardwaj7 on GitHub. This year I was given the opportunity to contribute to ListenBrainz-iOS under the mentorship of Akshat Tiwari(akshaaatt on irc).I am currently a final year student at UIET, Panjab University, Chandigarh. It was a very knowledgeable experience filled with a lot of learnings and takeaways.

Proposal

My proposal aimed to add a dashboard section into the app and revamp the existing feed section of the app. This project aims to seamlessly integrate all functionalities of the ListenBrainz website’s Dashboard into the ListenBrainz application. This integration will be achieved through a combination of web view components for certain features and native development for others, depending on the specific requirements of each functionality.

I have used SwiftUI primarily throughout the app, Combine for asynchronous task management and Alamofire library for Networking.

Continue reading “GSoC 2024: Dashboard Page and Feed Revamp in ListenBrainz-iOS”

Ensembling: Dudys and Dudyettes MiniVersion

Hello again peeps and pipers!
As promised here is the next miniversion of instrument additions!

This time we did Bagpipes, including figuring out a huge duda mess!

MiniVersion Dudys and Dudyettes

¹ Additionally I while looking at the xeremies, I also did work on an ensemble cobla which involved getting sidetracked working on shawms, therein editing and also adding a few:

Additionally these were closed as unfit for now:

² Finally, and the reason for this Miniversion name,
while researching the dudy (and bock) I found out that there were Very Many Different things called variants of “duda”
These haven’t been made into tickets, but they are:

That’s it for now! Soon it’s my country’s National Holiday, and as summer is coming up I’ll be taking a little break, but watch the list of quick fixes for any low hanging tickets that’ll get fixed asap.
またあおうぜ!

SSL.com is evil and deceptive: Don’t do business with SSL.com

In the past we’ve purchased our SSL/TLS certificates from SSL.com and when we last renewed our main domain’s SSL certificate, we suddenly started getting charged $20/month for:

eSigner Cloud Signing for OV Code Signing Tier 1 Monthly

Whatever this service is, we didn’t sign up for it. And trying to get SSL.com to stop charging us and refunding us the money has been a nightmare over the past year. The UI on their site is so bad that I can’t find anything and I am constantly confused by all of the useless and cryptic information packed into every single unreadable page.

In the end, I resorted to contacting customer support, who on the surface seem nice and helpful, but really all they do is refer matters to “internal teams” who never actually resolve any issues. This is nothing more than stonewalling.

Eventually they acknowledged that we are due a refund for $200+. But they were unable to refund the money because the credit card used for the original transaction expired by the time SSL.com got its act together.

This entirely unforeseeable problem was, as you might guess, referred to an internal team. Where it has been sitting for the past year now. Any attempts to get this to move along have resulted in nothing more but:

“We’re sorry for the inconvenience, we’ve forwarded this to an internal team.”

Joy. I guess that $200 will never be recovered and I need to cut my losses dealing with evil corporations.

So, be warned: Do not do business with SSL.com and use the amazing Let’s Encrypt service instead! If by some miracle, we get our money back, I’ll donate it to Let’s Encrypt instead!

MusicBrainz Server mirror-only fix update, 2023-10-24

If you are running a mirror, you may have seen replication packet #162718 fail to apply with the following error:

Failed query:
'INSERT INTO musicbrainz.tag (id, name, ref_count) VALUES (?, ?, ?)'
(259975 girl group 0)
23505 DBD::Pg::st execute failed: ERROR: duplicate key value violates unique constraint "tag_idx_name"
DETAIL: Key (name)=(girl group) already exists. [for Statement "INSERT INTO musicbrainz.tag (id, name, ref_count) VALUES (?, ?, ?)" with ParamValues: 1='259975', 2='girl group', 3='0']

This occurs because the index tag_idx_name was temporarily corrupted in production after yesterday’s database switchover, due to an ICU collation version mismatch. This allowed people to enter tags with duplicate names.

Since then we’ve fixed the broken packets, and published the fixed versions.

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

The git tag is v-2023-10-24-hotfix.

Notes

  • If you encountered the error above, you’ll have a “previously aborted load,” and must update your MusicBrainz Server to v-2023-10-24-hotfix. After that, replication should operate smoothly without any further action being needed.
  • If you haven’t replicated up to packet #162718 yet, then no action is needed.

We apologize for the inconvenience. We’re improving our database upgrade process to always rebuild indexes using ICU collations.

Fixed Bug

  • [MBS-13333] – Replication is blocked by tag duplicates

Happy 23rd Birthday, MusicBrainz!

23 years is a quite a long time and I had never thought that this little project I was starting in 2000, would grow into what it is today — it has been an amazing journey with many ups and downs. Despite many early hardships, I’m extremely happy that I stuck with it and nurtured the project into an important resource for the internet today.

With that in mind, I feel compelled to tell a story of where the name MusicBrainz came from and how July 17, 2000 was the first day that the name has ever been uttered and the domain was registered seconds later.

Continue reading “Happy 23rd Birthday, MusicBrainz!”

Preparing for Year In Music Report

The ListenBrainz Year In Music Report is approaching, and in order to make the most out of it, we recommend that users who utilize various import methods complete their listen imports by January 2nd.

To provide the most accurate Year In Music reports it is important that we identify the recordings to which you’ve listened. If we can’t identify your listens correctly, your Year in Music reports will also be incorrect. We aim to automatically identify all the listens that come in, but this challenging task isn’t always carried out with 100% success.

In order to give users more control over the linking of their listens, we have introduced a new feature allowing users to directly link their listens to a MusicBrainz recording from the ListenBrainz website. To correct an incorrectly linked listen, navigate to the listens page and select the Link with MusicBrainz option from the dropdown menu next to a listen.

Continue reading “Preparing for Year In Music Report”

Cleaning up the Music Listening Histories Dataset

Hi, this is Prathamesh Ghatole (IRC Nick: “Pratha-Fish”), and I am an aspiring Data Engineer from India, currently pursuing my bachelor’s in AI at GHRCEM Pune, and another bachelor’s in Data Science and Applications at IIT Madras. 

I had the pleasure to be mentored by alastairp and the rest of the incredible team at the MetaBrainz Foundation. Throughout this complicated but super fun project as a GSoC ‘22 contributor! This blog is all about my journey over the past 18 weeks.

Continue reading “Cleaning up the Music Listening Histories Dataset”

GSoC’22: Personal Recommendation of a track

Hi Everyone!

I am Shatabarto Bhattacharya (also known as riksucks on IRC and hrik2001 on Github). I am an undergraduate student pursuing Information Technology from UIET, Panjab University, Chandigarh, India. This year I participated in Google Summer of Code under MetaBrainz and worked on implementing a feature to send personal recommendation of a track to multiple followers, along with a write up. My mentors for this project were Kartik Ohri (lucifer on IRC) and Nicolas Pelletier (monkey on IRC)

Continue reading “GSoC’22: Personal Recommendation of a track”