MetaBrainz IRC migration

Due to recent changes in the administration of the freenode IRC network, all MetaBrainz IRC channels have migrated to the Libera.Chat network effective immediately.

The main channel names are all the same, #metabrainz, #musicbrainz, and #bookbrainz, though some special purpose channels were renamed in the move to better align with our project namespace (e.g., #brainzbot is now #metabrainz-bot).

Most of the MetaBrainz team will be around using the nicks you know already (e.g., bitmap, yvanzo, reosarevok, Freso, zas, …) but a few have had some changes: Mr_Monkey is now monkey and _lucifer is now lucifer.

Hopefully this will have minimal impact on users beyond having to update your IRC server in your client. If needed, Libera Chat provides a guide for how to connect to their network, including client specific guides for a number of IRC clients. They’re working on their own web client, but for now, Kiwi IRC can be used if you don’t have a local client running. For those of you relying on Matrix or Tor to connect: Libera.Chat staff is working on both of those and they should hopefully both be up within a week. Stay tuned on their Twitter: https://twitter.com/LiberaChat

As always, you can find information about our IRC channels and guidelines on our IRC documentation page. Wikimedia have also migrated to Libera.Chat and have written this handy guide which might also come in useful for migrating: https://meta.wikimedia.org/wiki/IRC/Migrating_to_Libera_Chat

As a last note (and I am admittedly biased being both former freenode staff and current Libera.Chat staff myself): it is my personal belief, as community manager, that freenode is no longer a safe network to be on for our users. The new freenode staff does not seem trustworthy, making policies to retroactively justify their own breaches of their policies, refusing to give a clear answer on “whether slurs, racism and transphobia are allowed on Freenode”, getting staff on board that were kicked from other networks for privilege abuse, and leaking staff-internal information (channel closure reasons) to non-staffers. I highly recommend disconnecting from the network ASAP and, if possible, overwrite your NickServ registered e-mail and password and possibly dropping your NickServ registration as well if you can and are able and willing to. If you have used your NickServ password for anything else, my recommendation is to consider that password compromised.

Congratulations GSoC 2021 students!

Congratulations and thank you to everyone who submitted a project with MetaBrainz for this year’s Summer of Code!

This year, the selected projects are:

Ritiek Malhotra
MusicBrainz – Complete Rust binding for the MusicBrainz API

Akash Gupta
BookBrainz – Implement a “Series” entity

Akshat Tiwari
Musicbrainz Android App – Dawn of Showdown

Jason Dao
ListenBrainz –  Pin Tracks & Review Tracks Through CritiqueBrainz

Yang Yang
MusicBrainz – Push the URL relationship editor to the next level

Welcome to the team, and congratulations!
In these troubled times it is all the more impressive that you all mustered the focus and determination to work on proposals, contribute to MetaBrainz projects and integrate with the community.

In our small and tightly knit team and community, communication is key!
If you run into any kind of issue (stuck in your code, starting a part-time job, health or family emergencies, etc.) don’t hesitate to contact your mentor as early as possible to find a solution; we’re here to support you.

We mentors all look forward to working with you before, during and after the summer, guiding you to success and helping you learn and improve your skills!

ruaok, yvanzo, mr_monkey, lucifer and oknozor

MusicBrainz schema change release, 2021-05-17 (with upgrade instructions)

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

This is a fairly minor release as far as schema changes go, but please do report any issues that you come across, especially related to the display of recordings, releases and release groups on artist and release group pages.

New, user-facing changes with this release are limited to the new ability to merge collections (MBS-10208) and the addition of ratings for places (MBS-11451). Additionally, MBS-11463 adds a new view that is used to fix a couple small requests related to disc IDs (MBS-11268) and release length calculation (MBS-11349). Two other changes – adding a first-release-date field to recordings (MBS-1424) and support for PKCE in OAuth (MBS-11097) are more or less end-user affecting but were already released on the main MusicBrainz servers a while ago. All other changes are under the hood only.

We ran into a few complications while working on this schema change update, so we decided to postpone two changes to our October schema change to ensure only stuff we are more confident on is released. Those are MBS-11457, which involves dropping the ordering_attribute column for series and would have had no direct effect on user experience, and MBS-11456, which would have added MBIDs for artist credits.

A few of the released new features and improvements — namely the first-release-date field for recordings, and the performance improvements to artist pages — make use of new materialized tables. These tables aren’t dumped, nor are they replicated, since they’re derived entirely from primary table data. Rather, we’ve added a new script to build them (admin/BuildMaterializedTables, included in the upgrade instructions below), and triggers to keep them up-to-date once they’re built. These triggers are created on replicated servers, too. If you use the web interface or web service at all, just note the extra step of running BuildMaterializedTables after upgrade.sh below!

A new release of MusicBrainz Docker is also available that solves an issue for live indexing and matches this update of MusicBrainz Server. See the release notes for update instructions.

Now, on to the instructions.

Schema Change Upgrade Instructions

Note: Importing the latest data dump is always a valid alternative to running ./upgrade.sh on an existing database, if you’d prefer to also get new data in one go. Just follow the relevant instructions in INSTALL.md. The git tag is v-2021-05-19-hotfixes. The rest of the instructions here assume an in-place upgrade.

  1. Make sure DB_SCHEMA_SEQUENCE is set to 25 in lib/DBDefs.pm.
  2. If you’re using the live data feed (your REPLICATION_TYPE is set to RT_SLAVE), ensure you’ve replicated up to the most recent replication packet available with the old schema. If you’re not sure, run ./admin/replication/LoadReplicationChanges and see what it tells you; if you’re ready to upgrade, it should say “This replication packet matches schema sequence #26, but the database is currently at #25.”
  3. Take down the web server running MusicBrainz, if you’re running a web server.
  4. Turn off cron jobs if you’re automatically updating the database via cron jobs.
  5. If you’re using the live search indexing, stop it and, assuming sir is under the same directory as musicbrainz-server, run cd ../sir && python2.7 -m sir triggers && cd - && ./admin/psql < ../sir/sql/DropTriggers.sql && ./admin/psql < ../sir/sql/DropFunctions.sql
  6. Switch to the new code with git fetch origin followed by git checkout v-2021-05-19-hotfixes.
  7. Install newer dependencies Perl 5.30 or later and NodeJS 16 according to install prerequisites.
  8. Run cpanm --installdeps --notest . (note the dot at the end) to ensure your perl-based dependencies are up to date.
  9. Run ./upgrade.sh (it may take a while to vacuum at the end).
  10. Set DB_SCHEMA_SEQUENCE to 26 in lib/DBDefs.pm as instructed by the output of ./upgrade.sh.
  11. If you’re using the web interface or web service, run ./admin/BuildMaterializedTables --database=MAINTENANCE all to build new materialized tables. These will take several additional gigabytes of spaces and be kept up-to-date automatically via triggers. For more information, see INSTALL.md.
  12. If you’re using the live search indexing, assuming sir is under the same directory as musicbrainz-server, run cd ../sir && git fetch origin && git checkout v2.1.0 && python2.7 -m sir triggers && cd - && ./admin/psql < ../sir/sql/CreateFunctions.sql && ./admin/psql < ../sir/sql/CreateTriggers.sql and rebuild indexes (by running cd ../sir && python2.7 -m sir reindex && cd -) then start it in watch mode (with cd ../sir && git fetch origin && git checkout v2.1.0 && python2.7 -m sir amqp_watch)
  13. Turn cron jobs back on, if applicable.
  14. Restart the MusicBrainz web server, if applicable. It’s also recommended you restart Redis. If you’re accessing your MusicBrainz server in a web browser, run ./script/compile_resources.sh.

Here’s the list of resolved tickets:

New Feature

  • [MBS-10208] – Allow merging collections
  • [MBS-11451] – Support ratings for places
  • [MBS-11463] – Add view to easily access medium track lengths
  • [MBS-11652] – Add support for artist series (hotfixed)

Improvement

  • [MBS-10962] – Speed up listing artist’s releases
  • [MBS-11268] – Show “Set track durations” on release/discids page
  • [MBS-11460] – Add materialized tables to fetch release groups by artist or track artist

Database Schema Change Task

  • [MBS-10647] – Add [no label] to b_del_label_special trigger for labels
  • [MBS-11453] – Change entity0_cardinality, entity1_cardinality to SMALLINT
  • [MBS-11459] – Create the edit_data_type_info function on mirrors
  • [MBS-11464] – Drop table statistics.log_statistic
  • [MBS-11466] – Change language.frequency and script.frequency to SMALLINT

Previously Released Changes

  • [MBS-1424] – Add a ‘First release date’ field to recordings
  • [MBS-10821] – Edit changing medium tracklist and format is stuck
  • [MBS-11097] – Support PKCE (Proof Key for Code Exchange) by OAuth clients
  • [MBS-11431] – Speed up /ws/js/check_duplicates

MusicBrainz Server update, 2021-05-03

Hi! This time we have another small release with a bunch of minor fixes and small quality of life improvements. The latter include one small improvement to an error message requested over 10 years ago! It might take us time, but we get to things eventually, and that’s what matters, right? Right? Next release will be our May schema change – you can read what is coming with that one at the dedicated announcement post.

A new release of MusicBrainz Docker is also available that solves an issue for live indexing and matches this update of MusicBrainz Server. See the release notes for update instructions.

Thanks to chaban, Cyberskull, Lotheric, nikki, salo.rock and Sophist for having reported bugs and suggested improvements. Thanks to mfmeulenbelt, outsidecontext and salo.rock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2021-05-03.

Fixed Bug

  • [MBS-11550] – Untranslated strings on Confirm Form Submission page
  • [MBS-11573] – Collection data missing on ratings pages
  • [MBS-11598] – Broken links generated for deleted artwork missing suffix
  • [MBS-11603] – DNB validation is too strict and blocks legitimate links
  • [MBS-11611] – OverClocked ReMix URLs shouldn’t have a trailing slash after the number.
  • [MBS-11612] – No link to genre/delete from genre index

Improvement

  • [MBS-1588] – More user friendly error when trying to add a CD with a bad TOC
  • [MBS-9251] – Display ended places differently on the map
  • [MBS-9259] – Document how the track list parser works
  • [MBS-9376] – Indicate that edit searches can be bookmarked to save them
  • [MBS-11546] – Allow Resident Advisor /exchange URLs for releases
  • [MBS-11559] – Specify tracklist is empty in Remove medium edits
  • [MBS-11571] – Warn about e-mail as a username
  • [MBS-11587] – Block smart links: hypel.ink
  • [MBS-11590] – Equalize display of empty fields in cover art edits
  • [MBS-11604] – Add genre name to genre index title
  • [MBS-11619] – Ignore periods and +tags in admin e-mail searches

New Feature

  • [MBS-10899] – Report for releases with catalog numbers that look like ISRCs

Picard 2.6.2 released

Picard 2.6.2 is a maintenance release for the recently release Picard 2.6. It fixes a bug where a plugin update could fail because Picard would use the old version from the network cache.

We also reverted a change from Picard 2.6.1, where if a file had no title or track number in metadata and Picard guesses this information from the file name, the title and track number would show up only as new metadata. This turned out to break people’s workflow who relied on this data for comparison with the actual new metadata loaded from MusicBrainz. For those of you who do not want Picard to automatically guess these tags from file names we will add an option in Picard 2.7 to completely disable this behavior.

The latest release is available for download on the Picard download page.

What’s new?

Bugfixes

  • [PICARD-2188] – Plugin update can fetch old version from network cache
  • [PICARD-2191] – Revert title and track number guessed from filename should show up as changed metadata

MusicBrainz Server update, 2021-04-19

Hi! We’re back with another (fairly small) release. Perhaps the most noticeable new thing, other than a few squashed bugs, is that we’re finally officially linking to the 1200px thumbnails of Cover Art Archive images. While these were being generated for new images already for quite a while, we didn’t want to start linking to them until we figured out how to ensure they were also generated for all the images already there. Thankfully, our user (and recent new auto-editor) ROpdebee got in touch with the right people in the Internet Archive and basically made all the efforts needed to ensure this happened. So, we officially have 1200px thumbnails now! That’s some big thumbnails for you.

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 yyoung for improving Bandcamp and DNB URL cleanup. Thanks to CatQuest, chaban, kepstin, Lotheric, navap, selflessself, synthicalist13 and xplt for having reported bugs and suggested improvements. Thanks to ROpdebee for helping us get all the 1200px thumbnails generated. Thanks to Mellthas, mfmeulenbelt, salorock and SistemaRayoXP for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2021-04-19.

Fixed Bug

  • [MBS-11500] – “Add cover art” edits link to no longer existing release
  • [MBS-11563] – Cache makes newly linked recordings not show in work rels table
  • [MBS-11564] – Niconi Commons “download for free” links blocked by Nicovideo cleanup
  • [MBS-11569] – Collection created from entity sidebar does not restrict entity type
  • [MBS-11581] – Release Group still shows cover art despite Release being darkened
  • [MBS-11582] – Instrument alias sortname guess button breaks page

Improvement

  • [MBS-9631] – Add 1200px to available sizes under cover art images, in release’s Cover Art tab
  • [MBS-9833] – Link relationship style guide within release edit relationships tool
  • [MBS-10534] – Handle both DNB permalinks and DNB search links
  • [MBS-11524] – Disallow *.bandcamp.com/ URLs at release and recording level
  • [MBS-11527] – Block smart links: music.indiefy.net
  • [MBS-11533] – Block smart links: snd.click
  • [MBS-11542] – Update Classical Archives URL format
  • [MBS-11552] – Add validation for Classical Archives links
  • [MBS-11566] – Ensure consistent ordering of appearances sections

Task

  • [MBS-11514] – Move from passing $c to using React.useContext in the sidebar
  • [MBS-11515] – Move from passing $c to using React.useContext in header/footer/menus
  • [MBS-11516] – Move from passing $c to using React.useContext in entity lists
  • [MBS-11517] – Move from passing $c to using React.useContext in MergeHelper

Picard 2.6.1 released

Picard 2.6.1 is a maintenance release for the recently release Picard 2.6. It brings bugfixes, performance improvements and some scripting enhancements.

The latest release is available for download on the Picard download page.

What’s new?

Bugfixes

  • [PICARD-2160] – Switching dark mode in macOS preferences does not change list elements leading to mix of light and dark mode
  • [PICARD-2166] – “Use original values” for a tag on a large selection takes very long with a high CPU usage
  • [PICARD-2168] – Keyboard shortcut to trigger script editor auto completion does not work on macOS
  • [PICARD-2170] – Title and track number guessed from filename should show up as changed metadata
  • [PICARD-2173] – “Search for similar tracks” is enabled by default, causes crash if used without selection
  • [PICARD-2187] – Scripting error in file naming options is not displayed properly

New Features

  • [PICARD-2161] – Add script function $unique to remove duplicate values from multi-value variables
  • [PICARD-2177] – Add script function $replacemulti to replace entries in multi-value variables

Improvements

  • [PICARD-2157] – Reduce comparison overhead of logging window
  • [PICARD-2162] – Coverart box is slow to update when many files are selected
  • [PICARD-2185] – Remove empty elements from $map() output

Acknowledgements

This release contains code contributions by Gabriel Ferreira, Bob Swift, Laurent Monin, Philipp Wolfer, Wieland Hoffmann and Adam James.

Many thanks also to all the translators and everyone who tested the beta releases and provided feedback on the community forums, IRC and the issue tracker.

MusicBrainz Server update, 2021-04-05

This time we have a lot of small bug fixes and improvements, and two changes that are likely to be more noticeable. The first one: the list of tags for a user is now paginated, and it shows the upvoted and downvoted tags separately. This is probably good news all around. The second one: long lists of relationships are also paginated. For example, the relationships page for the London Symphony Orchestra now only shows some of the orchestra relationships directly, with a link to “See all 17,303 relationships”. This change was needed, since these pages had become so big for some artists (and areas) that they were timing out since they took more than 30 seconds to load. This reduces the time for the largest pages to a few seconds – still a lot, but much more manageable. We understand that not having all the relationships shown at once might cause some issues with the workflow of some of our hardcore users. Sorry about that, but hopefully it won’t be too bad! If some use cases are very problematic, let us know and we will think about how to make it better.

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, EndofLine, HibiscusKazeneko, jesus2099, kellnerd, Kid Devine, navap, Sophist and yindesu for having reported bugs and suggested improvements. Thanks to mfmeulenbelt and salo.rock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2021-04-05.

Fixed Bug

  • [MBS-8477] – /user/<user>/tag/<tag> pages don’t distinguish between upvotes and downvotes
  • [MBS-8807] – Artist, Label and Series subscribers sub-page wrongly shows “You have no collections!”
  • [MBS-9543] – Seeding a string of “0” results in the field being blanked out
  • [MBS-11320] – When the “I don’t know the tracklist for this medium.” checkbox is unchecked on an existing release, the “Add medium” window pops up
  • [MBS-11321] – Strange things happen when adding the tracklist to a release with exactly 1 unknown medium
  • [MBS-11373] – Relationship merging in relationship editor no longer replaces empty dates
  • [MBS-11386] – Area containment missing from indexed area search results
  • [MBS-11442] – Entering a tag from the Add Cover Art page disables tagging and cover art submission
  • [MBS-11452] – Private user subscriptions tab shown on collection and subscribers page
  • [MBS-11454] – Can’t edit release with format/date clash even if error already existed
  • [MBS-11462] – Private subscriptions/tags/ratings user tabs uselessly shown to admins
  • [MBS-11473] – ISE when loading edit/open while logged out
  • [MBS-11508] – Qobuz favicon is missing
  • [MBS-11510] – Labels for arrows to move tracks up/down are not showing
  • [MBS-11531] – Filtering reports gives ISE
  • [MBS-11538] – Collections data missing in some sidebars

Improvement

  • [MBS-1178] – Relationship view needs paging.
  • [MBS-1870] – Showing a users tags should be paginated
  • [MBS-9310] – Link to created relationship type in Add Relationship Type edits
  • [MBS-9349] – Add Pinterest links to the sidebar
  • [MBS-10691] – Allow seeing tags the user has downvoted in user/tags
  • [MBS-10726] – Several release editor buttons say “disc” but really mean “medium”
  • [MBS-11429] – Don’t block editing if existing URL fails foul of later-added blocking rule
  • [MBS-11432] – Allow also linking places and works to Operabase
  • [MBS-11455] – Make linking of user statistics more consistent
  • [MBS-11467] – Use sort name to order lists of artists for tags
  • [MBS-11476] – Don’t show own open edits in /edit/open
  • [MBS-11485] – Allow irc(s):// links on expand2react
  • [MBS-11503] – Block smart links: trac.co
  • [MBS-11506] – Point home page ‘data’ link to ‘MB Database’

New Feature

  • [MBS-9851] – Add “is not edit author” option when searching for edits by “Edit Note Author”
  • [MBS-11222] – Add a report for releases with media without a tracklist

React Conversion Task

  • [MBS-10690] – Convert user tag list page to React

Our servers are on the move again!

Our servers are on the move again!

You might remember that a few years ago we moved all our servers from the US to Europe. Sadly, that has proven too costly* and prone to fires, so we have decided our servers will continue their travel east and move to India, where hosting them will be significantly cheaper and cooling can be provided by sun-covering swarms of locusts. Most of the non-slacking members of our dev team are based in India by now anyway, so it feels like the right place!

As part of our cost-cutting process, and since air travel is not environmentally friendly anyway, we sent our servers East by boat. Unluckily, that means they had to wait their turn for quite a while in the only traffic jam you can see from space. Luckily that is starting to get resolved now, but it will still take quite a while for the servers to clear the traffic jam, reach their destination and then be located among the twenty thousand containers in the ship carrying them, especially with all other jammed ships arriving at the same time! We’re hoping to be done with it all in a couple months though, after which you can hopefully expect a return to our usual (not-particularly-)fast service.

In the meantime, our whole infrastructure is being hosted on some old servers that our friends at the Universitat Pompeu Fabra in Barcelona donated to us. They claimed they were getting too old for use in a rigorous academic environment, that as we all know in Spain requires systems to work continuously for a few hours every weekday with only a short break for a midday nap. These donated servers are now running from our executive director’s basement. Any issues you have noticed recently are solely caused by this (and have nothing to do at all with the skill and attention span of our development team).

* It could be argued that we should be able to cover the costs given we have had several years of good financial stability by now. While that is true, when we realised that the alternative is to cut costs and spend the savings on fancy ham and beers, the right choice became obvious to us.