Style Guideline Updates

If you’ve been lurking on our forums, you will know that our style guidelines have been receiving lots of attention lately! Both MusicBrainz docs and BookBrainz docs have been getting new additions and updates, and there’s still plenty being discussed. As I type these very words, there are greased-up editors in what’s known to us only as “the pit” – pitting their words, experience, and muscular bodies against each other in a bid for dominance over typographical punctuation.

Okay, okay, so there’s not really a pit, but here’s a rundown of some of the style discussions that are taking place, or have taken place, this year:

*proposals have been fully or partially implemented into the official style guidelines

For ongoing updates, keep an eye on the forums, and consider subscribing to the new forum tag ‘styleguide-proposal’. These community discussions do ultimately affect editing and your collections, so you may want to input as well. Slap on that grease, and get in The Pit! (I have to note, again, that there are no actual pits involved in any MeB discussions. A sad state of affairs.)

A big thank you to all the community members who shape our databases via their guideline input.

Schema change release: May 15, 2023

MusicBrainz is announcing a new schema change release for May 15, 2023. The actual schema (database) changes we’ve detailed below shouldn’t have much perceivable impact on mirror servers, especially if you only use the web service; most are to remove unused tables/columns or tweak how certain tables are materialized.

The only breaking change to a replicated table is dropping the cdtoc.degraded column (MBS-12573). It’s unused in our codebase, so will have no effect on the web service. However, if you’re querying the cdtoc table directly, you’ll want to make sure your SQL queries don’t expect this column to exist.

One minor change affects first-release-date data for release groups and recordings in the web service (MBS-12800), but only where cancelled releases exist. As of this writing, there are currently only 133 releases with the “cancelled” status.

One change we consider significant is that, as part of this release, we plan to enable replication with dbmirror2 (MBS-12107) by default. This should require no changes on the part of mirror server operators and should be completely invisible/seamless during the upgrade if all goes according to plan. We consider it significant because it’s rewriting a critical part of our replication system and changing the packet format used underneath.

Tools that operate on the current (let’s call them version 1) replication packets, like mbdata, will continue to work; MusicBrainz will continue to generate the old  v1 packets for the foreseeable future while we work to move external tools to the new, v2 packet format.

Read more: Schema change release: May 15, 2023

Without further introduction, here’s the list of tickets for the Spring 2023 schema change:

Schema changes

The following tickets change the database schema in some way.

  • MBS-4685: Allow removing own edit notes when there’s been no follow-up / MBS-11312: Allow original editors and admins to modify edit notes. In order to give editors and admins the option to modify or delete edit notes, this will add a new (non-replicated) table, edit_note_change, where the information about any changes made will be stored. No changes will be made to the structure of the existing edit_note table.
  • MBS-12573: Drop unused degraded column from cdtoc. This was a column that was used many years ago to store whether CD TOCs were based on a less accurate algorithm. For a long time, it’s always contained FALSE (since we dropped the less accurate data at some point). It’s also completely unused. We are just dropping the column entirely.
  • MBS-12704: Remove legacy “Watch artist” code. Over 10 years ago, we had code to follow artists and be notified of new releases and whatnot, but the whole system was never upgraded during the NGS migration. We have decided that if we re-implement this, it will be as part of ListenBrainz, not MusicBrainz. As such, we are dropping the relevant tables: editor_watch_artist, editor_watch_preferences, editor_watch_release_group_type, editor_watch_release_status.
  • MBS-12794: Don’t use spammer tags/ratings when calculating tag counts / rating averages. We do not delete spammer accounts (we just hide them) in order to train our code to identify other potential spammers. An unfortunate side effect of this is that any ratings and tags left by spammers are currently still taken into account when calculating aggregate ratings and tags for MusicBrainz entities. We’ll be making a change to our triggers that update these aggregates to ignore any ratings and tags by editors marked as spammers. This change affects master/standalone databases, but should have no impact on mirror servers, where these triggers do not exist. Some tag and rating values will be changed by this though.
  • MBS-12800: Exclude cancelled releases when calculating first recording / release group dates. We store data about releases which were announced, but then were cancelled before they were released. These are often stored with release dates, representing the date the release was meant to have been released. While this makes sense, it has the side effect that these dates affect the calculation of the first release date for any recordings linked to these releases, and the release groups they are in. Clearly, the recordings and release groups were not released on these dates, and we should use the date of their first actual release instead. This will change the triggers that update the release_first_release_date materialized table, which itself will affect the calculations of recording_first_release_date and the release date columns in release_group_meta. These triggers run on mirrors as well.

The remaining tickets below do not make any changes to the database schema.

Replication system changes

  • MBS-12107: Replication with dbmirror2. See the introduction above and the linked ticket for more information. The prerequisite database changes required for this were already applied as part of the Spring 2022 schema change, so enabling the v2 system only requires code changes.

Upgrade script changes

  • MBS-12370: Rename schema change upgrade script suffixes to clearly indicate which nodes they run on. This is an internal-only change which should have no impact on users.

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 JIRA tickets.

MusicBrainz Server update, 2023-02-28

After about three years of development and almost six months of beta testing, here is the new implementation in React of all the relationship editors, including the release relationship editor. During the beta period, a hundred more smaller changes have accumulated; mostly bugfixes, but also some URL handling improvements and a fair number of other pages converted to React.

This is a major step forward in development as it makes the project more open to JavaScript contributors and allows for implementing more refinements.

From an editor point of view, the relationship editing dialog slightly changed visually, but overall the page offers the same features, fixes a large amount of bugs, and has some additional improvements:

  • Better handling of very big releases by not loading all tracks at once
  • Added ability to edit batch-created works before they’re submitted
  • “+” icons to quickly add additional relationships of the same type are now also available on the release relationship editor
  • Now remembering which entity type was selected last in the relationship dialog
  • New type-to-search functionality for the relationship type selector
  • Better internationalization as the layout ordering of fields is based on their dependencies rather than on the English grammar of link phrases.
  • Better seeding of data: easier to script, more reliable, and more available fields
  • Recording-work relationships can now be reordered straight from the release relationship editor
  • Reordering relationships can now also be done by entering the order number rather than using up and down arrows
  • A preview of the relationship (and any changes) is now shown in the add/edit relationship popup

During the beta period, another hundred tickets or so relating to the new editors were reported and addressed. There still are a few tickets reported during the beta that have not yet been resolved, but their drawbacks are outweighed by the benefits of this server update. They are still tracked and will be addressed later on.

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 jesus2099, julian45, and Maxr1998 for having contributed some code. Thanks to kellnerd for working with us to make sure his data seeding scripts worked in the new editors and through that helping us improve script and seeding support. Special thanks to chaban for his thorough dedication at identifying/reporting/detailing issues during these months. Thanks to Admiy, CatQuest, cherryblossom000, chiark, Cyberskull, drsaunde, Eincrou, Griomo, HibiscusKazeneko, johnnyjd, mcboing, mfmeulenbelt, Midness, MXS, otringal, outsidecontext, sound.and.vision, timmart.in, UltimateRiff, vzell, withered.silence, yindesu and zos18 for having reported bugs and suggested improvements. Thanks to 3Johnny, Blu777, dongrimaldo42, homersimpsons, perea and salo.rock for updating the translations. And thanks to all the many others who tested the beta version!

Edit: The changes for MBS-10614 accidentally allowed editors without a confirmed email to vote for a while – this has now been hotfixed.

The git tag is v-2023-03-03-hotfixes.

Continue reading “MusicBrainz Server update, 2023-02-28”

libdiscid 0.6.3 and bindings for D, Rust, Go and Hare

A new version 0.6.3 of libdiscid has been released. 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.

The main focus for this release has been to provide updated source and binary packages compatible with current systems. But there is also new platform support for the Haiku operating system.

Version 0.6.3 of libdiscid provides the following changes:

  • LIB-66: fix for Debian kFreeBSD
  • Haiku platform support (TOC only)
  • Use discid_feature enum in discid_read_sparse
  • Fixed building with CMake on macOS
  • LIB-68: provide macOS universal2 binaries with support for both x86_64 and arm64
  • LIB-67: Source tarball with updated autotools configuration
  • CMake: Use GNUInstallDirs to determine install location
  • CMake 2.8.12 is now the minimum required version

Being a C library libdiscid is highly portable and can easily be used with various programming languages. Ready-to-use bindings for many languages are available. Since the last release 6 years ago additional bindings for D, Rust, Go and Hare have become available. There is also an alternative .NET implementation of libdiscid written in C#.

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.

ListenBrainz App is now available on the PlayStore!

We have released the ListenBrainz app for Android! Track your music listening habits and connect with other music lovers around the world, with this exciting new app.

A image of an Android phone with some ListenBrainz style bubbles around it

Get the app on the Google PlayStore.

The integration of BrainzPlayer, a powerful music player that can handle songs stored on a user’s device, is one of the app’s most impressive features. Listen to all of your favourite music in one place, without having to switch between different apps or services.

But the app’s functionality doesn’t stop there. ListenBrainz integrates with the Spotify Android SDK, allowing you to stream your favorite songs directly from the popular music streaming service. This provides a seamless listening experience, no matter where music is stored.

Year in Music is another exciting feature. Get a detailed breakdown of your music listening habits over the course of a year. Track what songs have been played the most, what artists have been listened to the most, and even what days and times you and your friends listen to music. Gain insight into your listening habits, and discover new music picked out just for you.

The ListenBrainz app is still new, and we are constantly working to improve it. We are eager to hear feedback from you about what features you would like to see added, what improvements could be made, and any issues you may encounter while using the app. You can send your feedback to us via our forums, IRC, Twitter, or email.

We’ve been accepted to Google’s Summer of Code program 2023!

I’m very pleased to announce that the MetaBrainz Foundation has been accepted into Google’s Summer of Code program for 2023. This amazing project has been incredibly influential for us and our teams, so we’re pleased to be part of it for another round.

Anyone wishing to participate in the program should carefully read the terms for contributors and if you are eligible, go ahead and take a look at our Summer of Code landing page where you can find our project ideas that we listed for this year. Our landing page will tell you what we require of our participants and how to pick up a project.

Good luck to all who are interested in participating!

MusicBrainz Server hotfix, 2023-01-10

A spam technique has been discovered that consisted in creating an account with a malicious URL in the username and the email of the intended victim, so that the victim would receive a verification email with the malicious URL inside it. It was most often combined with control characters to make the malicious URL even more visible.

Thanks to Devin McGovern from the Cyber Security Operations Department at Hyatt who responsibly disclosed this issue to the team.

To deal with the issue:

  1. Creating new such accounts has been blocked; See MBS-12827.
  2. Existing such accounts, around 40,000, have been removed (since new verification emails could still be requested); See MBBE-68.

It doesn’t affect mirrors so there is no update for MusicBrainz Docker.

The git tag is v-2023-01-10-hotfixes.

Continue reading “MusicBrainz Server hotfix, 2023-01-10”

Explore Your Year in Music 2022

ListenBrainz is excited to announce the release of your #YEARINMUSIC reports for 2022! Log in to your ListenBrainz (LB) and click here to see your report. Don’t have a LB account? See what you’re missing.

Revisit and share your top artists, albums, tracks and neighbours from last year. Topped off with oodles of interesting statistics, a browsable cover collage, and brand new playlists of songs that you may have missed that our currently-benign algorithm thinks you will love.

You made it through, and you listened to some great tunes along the way.

We went for an eye-pleasuring (or blistering, depending on your preferences!) visual upgrade this year, and worked on a bunch of new features that will be refined in future years, as well as having the potential for roll out in other LB pages/features.

We generated two playlists for you this year, your top discoveries of 2022, and your topped missed recordings of 2022. These playlists don’t make themselves – well, actually, they kinda do, but their algorithms sure don’t! The ListenBrainz team has spent oodles of time tweaking and testing these to get them just right, and we hope you enjoy listening to them (hit ‘play’ on any track card to start playing, in Spotify Premium if you’ve set that up, otherwise it will default to YouTube, quota allowing).

A notable new feature is the new sharing option, with custom shareable images being processed depending on what part of the report you’re sharing, with unique graphics and styles for each. We’re ready for you, Instagram generation! (First person to say “Instagram? Everybody’s already moved onto X app” gets coal under their shoes this year)

Another new feature is the cover art collage, with a beautiful rainbow of 2022 album art for you to browse and click through to. Go look for some ‘black’ metal at the bottom, or perhaps you’re more in the mood for the flesh tone section today (ooh la la!)

Top albums
Delicious
The statistics sharing graphic – go check out your other custom graphics!
Judge some albums by their cover
What’s that, did we accidentally put ’2023’ in the playlist titles?
No further questions! Meeting adjourned! (note: has since been fixed)

Please tell us what you enjoyed and what you didn’t, here, via your preferred communications channel, or directly in the YIM 2023 ticket.

If you don’t have a YIM report, but want to get one for next year, don’t forget to sign up to ListenBrainz and start importing and submitting those listens now!

All the best for the new year, from the ListenBrainz team.

Picard 2.9 alpha 1 available for testing

Today we have released an alpha version for the upcoming Picard 2.9. The main change coming with this release is limiting Picard to a single instance by default and the ability to run commands inside this running Picard instance from the command line. This work was done by skelly37 as part of last year’s Google Summer of Code.

Keep in mind that we consider this an alpha release and it might contain bugs. As the single-instance mode by default is a significant change on how Picard is being run we want to gather some feedback on the new functionality before we do a final 2.9 release.

Continue reading “Picard 2.9 alpha 1 available for testing”