MusicBrainz Server update, 2023-06-07

We have a small release this time, slightly delayed because of maintenance work on our servers for the last couple days. The most noticeable changes are probably 68 new locales available for aliases (for example, we can now specify an alias is in Latin language), and a fix to a bug where a small amount of tracks would not be shown in their release’s relationship editor and as such couldn’t have relationships added from that page.

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 salo.rock, UltimateRiff and yyoung for having reported bugs and suggested improvements. Thanks to salo.rock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2023-06-07.

Continue reading “MusicBrainz Server update, 2023-06-07”

MusicBrainz Server update, 2023-05-22

As announced for our schema change release, after a week of beta testing, the ability to modify or remove edit notes is fully delivered in today’s release! A few other unrelated but small improvements and fixes are included too.

As an editor, you are now able to modify or remove your own edit notes if they’re not older than 24 hours and nobody else has replied; you can see the full set of conditions in our edit note documentation. Admins are allowed to modify or remove any edit note from anyone at any time, and have already been using this to remove some spam and inappropriate comments during the beta period.

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 ShivamAwasthi for contributing code and to kellnerd for helping with code review. Thanks to chaban, Cyberskull, jesus2099 q_fdb and yurim for having reported bugs and suggested improvements. Thanks to salo.rock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2023-05-22.

Continue reading “MusicBrainz Server update, 2023-05-22”

MusicBrainz schema change release, 2023-05-15 (with upgrade instructions)

We’re happy to announce the release of our May 2023 schema change today! Thanks to all who were patient during today’s downtime as we released everything to our production servers, and thanks to CatQuest, jesus2099, and yindesu for creating tickets.

This is a fairly small schema change release which mostly removes unused code and improves things behind the scenes. Of the schema change tickets, there are only two that will directly affect users as they browse and edit in MusicBrainz.

The first (MBS-12800) makes it so that cancelled releases are ignored when calculating the first release dates for recordings and release groups; since something that was cancelled was by definition not released, it should not be used as a first release date.

The second (MBS-11312) lays the foundation for a new feature (MBS-4685) that will allow users to edit or delete their edit notes, as long as a set of conditions are met (see the edit note docs for details). Admins will be able to edit or delete any edit notes at any time (MBS-13084), mostly to get rid of spam or offensive content, but also to help any editor who cannot change their note anymore but has an important reason why they need to do so. This feature will be available for testing in our beta server on Tuesday and we expect to release it next week, assuming our beta testers don’t find any too big issue with it by then.

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

Continue reading “MusicBrainz schema change release, 2023-05-15 (with upgrade instructions)”

MusicBrainz Server update, 2023-05-02

In our last version before the May 15 schema change release, we are mostly releasing a fair amount of React conversion work for smaller pages. We’ve also tried to make some error messages more clear and helpful and made a few improvements to ETI guess case, alongside other small bits and pieces.

The most significant change for editors is the standardization of all auto-deletion waiting periods to 48 hours. Until now, most entities would be removed when empty for 24 hours, while unused artist credits would take a full week to go away. This meant removing the last artist credit usage for an otherwise empty artist would lead to an eight days wait for that artist to be automatically deleted; now it will be four. As a reminder, 48 hours is also the minimum time needed for a merge edit to pass. As such, it’s not always faster anymore to let an entity be removed automatically rather than merging – hopefully this will encourage more autoeditors to merge rather than delete!

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 CatQuest, chaban, jesus2099, Lotheric, and rdswift for having reported bugs and suggested improvements. Thanks to okaits#7534 and salo.rock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2023-05-02.

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

MusicBrainz Server update, 2023-04-17

Here is a tiny spring cleaning release that features small bugfixes and, behind the scenes, a larger refactoring of code in preparation for the database schema change.

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 Maxr1998 for his patch of Genie. Thanks to chaban, jesus2099, mr_maxis and yindesu for having reported bugs and suggested improvements. Thanks to salo.rock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2023-04-17.

Continue reading “MusicBrainz Server update, 2023-04-17”

MusicBrainz Server update, 2023-03-20

We’re hopefully back to a normal schedule after the crazy relationship editor testing period! That means we have the usual small amount of bug fixes and improvements this time, including a couple further fixes for small issues of said relationship editor which were not found during beta testing. We also have a text version of the list of historical MusicBrainz events that could only be seen before as bars on our timeline – which hopefully will help remind us to actually update that with new events on a regular basis.

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 CatQuest, chaban, mr_maxis, satanisch_opium, sound.and.vision and yyoung for having reported bugs and suggested improvements. Thanks to salo.rock and an anonymous Albanian translator for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2023-03-21-hotfix.

Continue reading “MusicBrainz Server update, 2023-03-20”

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.
    Edit (Mar. 23): The team has removed MBS-12794 from this release after deciding that the implementation needs more discussion.
  • 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.

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”