libdiscid 0.6.5 released

A new version 0.6.5 of libdiscid is now available. libdiscid is a C library that allows applications to easily calculate MusicBrainz and freedb disc IDs from audio CDs. It also can extract MCN and ISRC information.

This is a maintenance release. There are no changes to the library itself. Version 0.6.5 of libdiscid provides the following changes:

  • CMake: Restore includedir and libdir
  • Code sign Windows and macOS binaries

More details on libdiscid, information on available language bindings, and downloads of the source code and pre-compiled binaries for macOS and Windows can be found on the libdiscid page. See also the API documentation for details on how to use the library.

MusicBrainz database schema change release, 2025-05-19 (with upgrade instructions)

We’re happy to announce the release of our May 2025 database schema change now! Thanks to all who were patient during Monday’s downtime as we released everything to our production servers.

This is a fairly small database schema change release which mostly makes minor improvements and fixes small bugs. Of the schema change tickets, the one you are most likely to notice while you browse and edit in MusicBrainz is MBS-9253 (which makes it possible to change the order in which we display release groups, and mean EPs now sort before singles). MBS-13832 means releases which have PDF front images now also show the cover art on the sidebar, and MBS-13768 provides permanent links to mediums.

Thanks to Brownd, salo.rock and silentbird for having reported bugs and suggested improvements, and thanks to BenjaBarcos1, Echelon, Joax, Marc Riera, Michal77, onemanue, ozodbekmirzayev and salo.rock for updating the translations.

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

P.S. Search upgrades will occur in a separate release.

Continue reading “MusicBrainz database schema change release, 2025-05-19 (with upgrade instructions)”

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 !

MusicBrainz Server update, 2025-05-05

One last release before the schema change, mostly made up of small fixes and improvements. Among them, we have hopefully finally managed to find and eliminate the issue that caused the “External links” section of editors to sometimes fail to load entirely.

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 derat and dvirtz for having contributed to the code. Thanks to chaban, derat, dvirtz, HibiscusKazeneko, jesus2099, kellnerd and silentbird for having reported bugs and suggested improvements. Thanks to Besnik, macaumetal, Marc Riera, mfmeulenbelt, PS, Quartyn, salo.rock and wileyfoxyx for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2025-05-05.0.

Continue reading “MusicBrainz Server update, 2025-05-05”

Rest in Peace drsaunde!

Hello!

It is with a heavy heart that I share this sad news today; we’ve just found out that one of our most prolific editors, David Saunders (AKA drsaunde) has passed away.

We don’t know much about the circumstances of what happened, but a friend of David’s was kind enough to reach out to us to let us know of his passing. The friend said:

“Our dear friend, David Saunders aka drsaunde sadly passed away March 26, 2025 surrounded by friends listening to his favourite music. Dave was a brilliant man with a great sense of humour and obviously an avid fan of music. I knew he wrote for a music site but never learned which one. Quick search for a common username he used landed me on your site.”

To put into context who drsaunde really was, lets look at his impressive statistics:

He made a total of 2,191,225 edits, with only 37 rejected edits, for an astonishing acceptance rate of 99.998%. He was a member of MusicBrainz since 2006-05-06 for a total of 18 years, 10 months and 20 days, which amounts to 317 edits for each day he was a member of MusicBrainz. 🤯🤯🤯

On top of that he was our Areas editor, the person in charge of maintaining our database of cities and regions in the world. Needless to say, drsaunde has left a giant hole in our community and our hearts.

In keeping with his spirit, his friends will hold a celebration of life for drsaunde on May 3rd. We’ve sent some funds to help ensure that celebration really honors his spirit.

Finally, if you would like to take a moment to remember drsaunde, you could head over to ListenBrainz radio and make a playlist from his most listened tracks.

Rest in peace, drsaunde, you will be missed.

Updates to Audiobooks, Audio Dramas, Broadcasts and Podcasts

If you are a fan of words going into your ears, please fasten your seatbelt. We have a number of exciting updates for podcasts, broadcasts, audiobooks and audio dramas, including new relationships and updated guidelines!

Continue reading “Updates to Audiobooks, Audio Dramas, Broadcasts and Podcasts”

MusicBrainz Server update, 2025-04-14

This release brings a relatively short list of changes, but several of them were requested quite often and will hopefully lead to better editing.

Derat has been doing a lot of work in the release editor to help beginners understand the different fields and point them towards the basic guidelines. For example, we can now detect some of the most common English prepositions and point the user towards the English guidelines if they are uppercased.

We are bringing back the option we had many, many years ago to also merge the containing release groups while entering a release merge. This should hopefully help more editors do the right thing and also merge release groups (saving their MusicBrainz IDs) rather than leaving them empty to be autoremoved.

Finally, the API now shows artist countries everywhere (when the artist has an area assigned). This has been requested fairly often for a multitude of purposes, so hopefully it will make a bunch of you quite happy!

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 derat and dvirtz for having contributed to the code. Thanks to chaban, Cyberskull, derat, HibiscusKazeneko, Lotheric, salo.rock, yindesu and yomo12 for having reported bugs and suggested improvements. Thanks to Besnik, BestSteve, Kori Syusetu, Libra, Marc Riera, ninjum, nzure, salo.rock and wileyfoxyx for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2025-04-14.0.

Continue reading “MusicBrainz Server update, 2025-04-14”

MusicBrainz Server update, 2025-03-24

This is a fairly small release, mostly consisting of minor improvements, but it includes a couple of bug fixes for very annoying bugs. This includes a long-standing issue which prevented editing release events for releases that were part of large series such as Apple Digital Masters.

Additionally, we are adding a new option to the API that allows doing a lookup by resource (the URL itself) for up to 100 URLs at once. See the updated documentation and the expanded examples.

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 derat for having contributed to the code. Thanks to finalsummer, kellnerd, mr_maxis, Nicolas ANCEAU, salo.rock and yomo12 for having reported bugs and suggested improvements. Thanks to BenjaBarcos1, Besnik, delamons, eigenric, ferocity12, joaodtx, KenParker_CN, koukei07, Michal77, nzure, salo.rock, Vaclovas Intas and wileyfoxyx for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2025-03-24.0.

Continue reading “MusicBrainz Server update, 2025-03-24”

Schema change release: May 19, 2025

MusicBrainz is announcing a new schema change release set for May 19, 2025. Erratum: Search upgrades will shortly follow it. Like most of our recent schema changes, it should have little or no impact to downstream users.

There is one change to a major replicated table worth mentioning upfront: the medium table will have a new gid column added. If you’re running custom SQL queries against the database that join the medium table at all, there is a small chance you could run into errors like ERROR: column reference "gid" is ambiguous if you’re not properly qualifying the columns being selected.

We’re also altering some columns on the artist_release and artist_release_group tables (see below for more details). These are materialized tables used by our website on the back-end to speed up certain pages; you should normally not be accessing them directly, but it’s worth mentioning just in case. These tables do exist on mirrors, but are only populated with data if you’ve run admin/BuildMaterializedTables before.

Besides replacing some functions/triggers, you generally shouldn’t have to worry about any other database breaking changes in this release.

Finally, here is the complete list of scheduled tickets:

Database schema

The following tickets change the database schema in some way.

  • MBS-9253: List EP release groups above singles on artist pages. A small change to the get_artist_release_group_rows function is required in order to be able to change the sorting of release groups to prioritize EPs over singles. The function will be changed to depend on the type’s child_order (which can be safely changed at any time) rather than its id for sorting. While this function exists on mirrors, the function change shouldn’t have any impact on them directly (but a change of the child_order of the types will affect the sorting for display on mirrors as well). We’ll be adding new triggers to the release_group_primary_type and release_group_secondary_type tables to run the function when the tables change – these triggers will also exist on mirrors.
  • MBS-13322: Race condition when removing unused URLs. A rare internal error can occur in one of our trigger functions that cleans up unused URLs. We’ll replace that function, delete_unused_url, updating it to avoid a “race condition” whereby a URL can become used again the moment before it’s deleted. This will have no impact on mirrors, as delete_unused_url is only invoked by triggers that don’t exist on mirrors.
  • MBS-13464: Inconsistent sorting of artist release/release group titles. In the May 2021 schema change, we added some new materialized tables to significantly speed up the loading of artists’ release and release group listings: the not-so-surprisingly named artist_release and artist_release_group tables. These work by efficiently indexing an artist’s releases and release groups by date and other attributes, and then finally by their titles. Except for efficiency reasons, we originally decided to only store the first character of the titles for sorting. That predictably leads to incorrect sorting in certain cases, like with undated live bootlegs, as shown in MBS-13464. After measuring the actual size impact, we’ve decided to update the artist_release and artist_release_group tables to replace their sort_character columns with name columns that store the complete titles.
  • MBS-13768Add MBIDs to mediums. Adds a gid column to the medium table, and a new medium_gid_redirect table. It generates MBIDs for existing mediums that will be replicated to mirrors.
  • MBS-13832: Also support PDF files in CAA / EAA index_listing (for is_front purposes). PDF files are never treated as front for cover art archive purposes, probably because they originally did not have PNG thumbnails generated by the Internet Archive. That changed quite a while ago though, and there seems to be no reason to single them out anymore. We will just replace the index_listing views for cover_art_archive and event_art_archive with ones amended to not filter out PDF files.

    Note: Databases created before schema 25 (2017) may be missing filesize columns from their cover_art_archive.index_listing view (MBS-14014). This upgrade will add those columns. Since this view is for internal use, and these columns already exist on databases created in the past 8 years, we believe this shouldn’t pose any real compatibility issue.
  • MBS-13964: Some recordings are missing a first release date. A bug was discovered that causes recordings to sometimes have incorrect first-release-date values if any of the releases they’re attached to are merged with the “append” strategy. We’ll be adding a new trigger to the medium table that updates recording_first_release_date properly when such merges occur. Note that since recording_first_release_date is a materialized table, this trigger will also run on mirrors; that way it’s kept up-to-date even after running admin/BuildMaterializedTables initially.
  • MBS-13966: Release group first release dates need to be recalculated. Another (unrelated) issue with “first release date” information, but this time with release groups rather than recordings. We’ve found that a very small percentage of release groups’ first release dates (as stored in the release_group_meta table and returned in the web service) are wrong; it’s uncommon, but one way this can occur is when all releases in a release group are moved out of it. To address this, we’ll update the set_release_group_first_release_date function, which will have the exact same signature as before. We’ll also run a script to rebuild the incorrect data.

Erratum: This list originally included MBS-13965: Extend entity attribute schema to mediums – until we realized this was actually already done eight years ago. Isn’t time weird.

Update 2025-05-02: MBS-13966 was moved to this section, because we found out that a function needs to be updated to fix the underlying issue.

Update 2025-05-08: MBS-14014 has been fixed and mentioned as part of MBS-13832 above.

Search indexes

Erratum: Solr 9 will be made available for mirrors in a separate release.

Data corrections to the recording_first_release_date and release_group_meta tables do affect indexed recording and release group data respectively. If you have live search indexing enabled, those changes should be propagated to the search indexes automatically. Otherwise, you will have to perform a full reindex of those entities’ search indexes.

We’ll post upgrade instructions for standalone/mirror servers on the day of the release. If you have any questions, feel free to comment below or on the relevant above-linked tickets.

Google Summer of Code 2025: MetaBrainz has been accepted!

We’re are excited to announce that the MetaBrainz Foundation has been accepted into Google’s Summer of Code program for 2025! Summer of Code has been instrumental (pun intended) in the development of our projects and growth of our team over the years, so we’re pleased to be part of it for another round.

Ready to rock this summer coding with us? Start with carefully reading the terms for contributors. If you are eligible, go ahead and take a look at our Summer of Code landing page where you can find project ideas that we have listed for this year. Our landing page will also tell you what we require of our participants and how to pick up a project.

A very important note: We will not be considering any proposals from contributors who have not reached out to us before March 31.

Good luck to all who are interested in participating!

PS: If you’re feeling particularly adventurous, check out this entirely optional link for some extra motivation.